领导要求先保证php环境稳定,而后再去考虑其余,例如性能,安全等等,因此先参考yum的php+mysql+apache的配置来建造。so,就是这样子,按照yum的软件版本和配置从新编译安装php套件环境。php
- 安装的软件的版本和配置和模块确认和下载
- 检查版本、配置、模块
- 下载
- 安装apache
- configure
- make
- make install
- 启动
- 检查
- 安装mysql
- configure
- make
- make install
- 初始化数据库
- 启动
- 检查
- 安装php
- configure
- make
- make install
- 配置
- 启动
- 检查
mysql:
查看版本html
rpm -qa |grep mysql
mysql-server-5.1.73-3.el6_5.x86_64
mysql-5.1.73-3.el6_5.x86_64
mod_auth_mysql-3.0.0-11.el6_0.1.x86_64
apr-util-mysql-1.3.9-3.el6_0.1.x86_64
mysql-devel-5.1.73-3.el6_5.x86_64
mysql-libs-5.1.73-3.el6_5.x86_64mysql
查看配置linux
cat /usr/lib64/mysql/mysqlbug |grep configure
CONFIGURE_LINE="./configure '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-readline' '--with-ssl=/usr' '--without-debug' '--enable-shared' '--with-embedded-server' '--localstatedir=/var/lib/mysql' '--with-unix-socket-path=/var/lib/mysql/mysql.sock' '--with-mysqld-user=mysql' '--with-extra-charsets=all' '--with-big-tables' '--with-pic' '--with-plugin-innobase' '--with-plugin-innodb_plugin' '--with-plugin-partition' '--enable-local-infile' '--enable-largefile' '--enable-thread-safe-client' '--disable-dependency-tracking' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -felide-constructors -fno-rtti -fno-exceptions'"c++
apache :
版本查看:web
rpm -qa |grep httpd
httpd-tools-2.2.15-31.el6.centos.x86_64
httpd-manual-2.2.15-31.el6.centos.noarch
httpd-2.2.15-31.el6.centos.x86_64
httpd-devel-2.2.15-31.el6.centos.x86_64sql
没法完整的查看配置shell
/usr/sbin/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
/usr/sbin/httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Jul 23 2014 14:17:29
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"数据库
cat /etc/httpd/modules/mod_
mod_actions.so mod_authn_dbm.so mod_authz_owner.so mod_dav.so mod_ext_filter.so mod_log_forensic.so mod_proxy_ftp.so mod_status.so
mod_alias.so mod_authn_default.so mod_authz_user.so mod_dbd.so mod_filter.so mod_logio.so mod_proxy_http.so mod_substitute.so
mod_asis.so mod_authn_file.so mod_autoindex.so mod_deflate.so mod_headers.so mod_mime_magic.so mod_proxy_scgi.so mod_suexec.so
mod_auth_basic.so mod_authnz_ldap.so mod_cache.so mod_dir.so mod_ident.so mod_mime.so mod_proxy.so mod_unique_id.so
mod_auth_digest.so mod_authz_dbm.so mod_cern_meta.so mod_disk_cache.so mod_include.so mod_negotiation.so mod_reqtimeout.so mod_userdir.so
mod_authn_alias.so mod_authz_default.so mod_cgid.so mod_dumpio.so mod_info.so mod_proxy_ajp.so mod_rewrite.so mod_usertrack.so
mod_authn_anon.so mod_authz_groupfile.so mod_cgi.so mod_env.so mod_ldap.so mod_proxy_balancer.so mod_setenvif.so mod_version.so
mod_authn_dbd.so mod_authz_host.so mod_dav_fs.so mod_expires.so mod_log_config.so mod_proxy_connect.so mod_speling.so mod_vhost_alias.soapache
cat /etc/httpd/conf/httpd.conf |less
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
只知道它使用了动态编译模块,模块的数量很多,使用的mpm是prefork模式,其余都看不出来了。
php:
/usr/bin/php -i |grep configure
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0
Configure Command => './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--without-sqlite' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/lib64/mysql/mysql_config' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,/usr/lib64/mysql/mysql_config' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-sqlite3=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--without-readline' '--with-libedit' '--with-pspell=shared' '--enable-phar=shared' '--with-tidy=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-enchant=shared,/usr' '--with-recode=shared,/usr'
(能够经过rpm -qa mysql或者yum install mysql 相似这样查看软件的版本)
centos 版本:6.5 x64 官网下载或者163源下载
中国centos网
http://www.centoscn.com/plus/download.php?open=2&id=2196&uhash=1dacefcfd3a0ece94e06c929
chinaunix
http://download.chinaunix.net/download/0013000/12271.shtml
apache 版本:2.2.27
mysql 版本:5.1.733
去官网下载的话须要注册一个帐号而后选择源码的下载
http://dev.mysql.com/downloads/file.php?id=453362
php版本:5.3.28
安装相关的库,开发工具,编译软件,调用的模块和软件
yum -y install gcc yum -y install make yum -y install gcc-c++ yum -y install apr yum -y install pcre* yum -y install apr-util* yum -y install libtool yum -y install openssl yum -y install openssl-devel (由于心脏漏洞的关系centos的openssl要升级到1.0.1e-16以上) #####检查: #####[root@localhost app]# rpm -q --changelog openssl-1.0.1e | grep CVE-2014-0160 #####- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension #####表明已修复 yum -y install enchant-devel yum -y install libjpeg* libpng* gmp* yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc perl-DBD-MySQL unixODBC-devel yum -y install libXpm* yum -y install libicu* yum -y install aspell-devel yum -y install libedit-dev* yum -y install recode-dev* yum -y install net-snmp-devel yum -y install libtidy-dev* yum -y install libxml2
安装顺序是有讲究的,由于php须要调用apache 和mysql的配置,因此须要先安装apache和mysql,然后者的他们不须要固定的安装顺序。
编译安装通常是3个顺序,configure,make,make install
进入apache的源码包解压目录,运行如下命令:
首先是配置编译参数---configure
./configure \
--with-mpm=prefork \
--enable-so \
--enable-mods-shared=most \
--prefix=/app/apache2227 \
--with-apr-util=/usr/bin/apu-1-config
备注:
1. 使用--enable-mods-shared=most是跟--enable-so搭配使用的,most是指将大部分经常使用的模块编译成动态模块,动态模块就是须要load加载的模块,好处是 加载和卸载方便,坏处就是效率上没有静态编译快,在小规模使用上通常差距不大,因此我使用动态编译模块。 2. --with-apr-util是翻译过来APR(Apache portable Run-time libraries,Apache可移植运行库),主要为上层的应用程序提供一个能够跨越多操做系统平台使用的底层支持接口库。具体参考百度百科或者wiki 3. --with-mpm=prefork则只使用prefork模块,Possible MPMs are beos, mpmt_os2, prefork, and worker.通常prefork经常使用且好用。
而后是进行编译---make
make -j4
最后是进行安装---install
make install
引用参考:
1. http://httpd.apache.org/docs/2.2/install.html
2. http://httpd.apache.org/docs/2.2/programs/configure.html
3. http://apr.apache.org/
启动apache
/app/apache2227/bin/apachctl start
检查
ps -ef |grep httpd
netstat -atnp|grep 80
(通常会使用80,根据配置文件的listen端口而定)
访问一个apache的网页文件,能够将一个普通的html文件放进去htdoc的目录来访问,也能够直接访问看到apache的官方页面
进入mysql的源码包解压目录,将如下命令放在一个可执行的shell文件里面(由于命令过长的关系,写到shell文件里会好不少),
具体步骤是
1.vi test.sh
2.粘贴进去
3.保存退出:wq!
4.检查文件内容是否正确
5.授予可执行权限chmod +x test.sh
6. sh test.sh执行(能够sh -x test.sh执行来观察执行过程)
7.make -j4
8.make install
粘贴到shell文件的编译参数以下:
CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC " CXXFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -felide-constructors -fno-rtti -fno-exceptions"
./configure \
--disable-dependency-tracking \
--prefix=/app/mysql51733 \
--sysconfdir=/app/mysql51733 \
--datadir=/app/mysql51733/data \
--libdir=/usr/lib64 \
--with-readline \
--without-debug \
--enable-shared \
--with-embedded-server \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-mysqld-user=mysql \
--with-extra-charsets=all \
--with-big-tables \
--with-pic \
--with-plugins=partition,innobase,innodb_plugin \
--enable-local-infile \
--enable-largefile \
--enable-thread-safe-client \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
备注:
1. -sysconfdir是my.cnf的路径 2. -without-debug取消debug模式,有效提供效率 3. -with-extra-charsets=all安装全部字符集 4. -enable-local-infile容许本地导入数据,例如 5. -libdir是指生成的mysql的相关库文件的目录 6. -enable-local-infile:启用对LOAD DATA LOCAL INFILE语法的支持,即用sql能够导入本地文件到数据库 7. -with-readline是一个行编辑库,这个是跟shell的readline参数是同样的,mysql也是这样使用 8. -with-unix-socket-path指定socket的位置和名字 9. -with-big-tables支持超过4G以上的大表 10. --enable-assembler:使用汇编模式;(文档说明:compiling in x86 (and sparc) versions of common string operations, which should result in more performance. 汇编x86的普通操做符,能够提升性能) 11. --with-pic Try to use only PIC/non-PIC objects,PIC是跟gcc 内核和硬件有关的,具体百度,这里是both的做用,因此加也无妨。 12. --with-plugins=partition,innobase,innodb_plugin支持不一样的引擎,例如innobase 13. --enable-thread-safe-client颇有名的参数,让mysqlclient支持线程的意思 14. --with-mysqld-ldflags=-all-static 静态编译MySQL服务器端;(听说静态连接提升13%性能,嘛,静态编译的速度老是会快一点的) 15. --with-client-ldflags=-all-static 静态编译MySQL客户端;(听说静态连接提升13%性能)
引用参考:
1. http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html 2. https://linuxtoy.org/archives/readline.html 3. http://docs.linuxtone.org/ebooks/Optimze/Interrupt%20in%20Linux.pdf
解决:
网上说而且官方也有提到用这个方法,可是不行
1. 确认libtool是否已经安装,若是没有安装的话,则先安装libtool yum -y install libtool 2. 分别执行如下三条命令: autoreconf --force --install libtoolize --automake --force automake --force --add-missing 再从新编译安装,问题解决!
我用这个方法的:
这时直接打开 configure,把 $RM “$cfgfile” 那行删除掉,从新再运行 ./configure 就能够了。
须要
cp -r /usr/lib64/mysql /app/mysql51733/lib64
缘由是由于编译安装mysql的时候自定义安装目录后却没有修改他的lib64库的使用路径,理论上会用相对路径,跟随安装安装目录一块儿变化,可是5.1的mysql没有这样作,用的是的绝对路径/usr/lib64/mysql,因此须要手动复制到指定的目录
至此完成mysql安装
/app/mysql51733/bin/mysql_install_db --user=mysql --basedir=/app/mysql51733/ --datadir=/app/mysql51733/data FATAL ERROR: Could not find errmsg.sys The following directories were searched: /app/mysql51733//share/english /app/mysql51733//share/mysql/english If you compiled from source, you need to run 'make install' to copy the software into the correct location ready for operation. If you are using a binary release, you must either be at the top level of the extracted archive, or pass the --basedir option pointing to that location.
须要
cp /app/mysql51733/data/mysql/english/errmsg.sys /app/mysql51733/share/english/
cp /app/mysql51733/data/mysql/*.sql /app/mysql51733/share/
引用参考:
1. http://bugs.mysql.com/bug.php?id=38828
cp support-files/的my-small.cnf, my-medium.cnf, my-large.cnf, and my-huge.cnf 复制为指定目录的my.cnf,分别对应不一样使用等级的mysql配置,不过实际上仍是针对生产环境作修改的
须要注意的是:
目前这个安装是我建议复制到/app/mysql51733/my.cnf这里
引用参考:
1. http://dev.mysql.com/doc/refman/5.6/en/option-files.html
复制源码包的启动脚本到系统守护程序管理目录,能够方便启动关闭和作自动启动
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
service mysql start
Starting MySQL [肯定]
例如开机自动启动
chkconfig --add mysql
有的系统须要下面的,表示3,4,5等级的启动都要开启,3表明命令行界面,5表明图形界面
chkconfig --level 345 mysql on
检查是否成功启动
ps -ef |grep mysql
root 7167 1658 0 06:03 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
mysql 7405 7167 0 06:03 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/data/testyuan.err --pid-file=/data/mysql/data/testyuan.pid --socket=/tmp/mysql/mysql.sock --port=3306
netstat -atnp|grep 3306
/app/mysql51733/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.4-m7 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
进入php源码目录,运行如下命令,(由于太长的关系,因此最好将其写进一个shell文件,而后执行这个shell脚本)
./configure --libdir=/app/php5328/lib64 --with-libdir=lib64 \
--prefix=/app/php5328 \
--includedir=/app/php5328/include \
--with-apxs2=/app/apache2227/bin/apxs \
--sysconfdir=/app/php5328 \
--with-config-file-path=/app/php5328 \
--with-config-file-scan-dir=/app/php5328/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--without-pear \
--with-bz2 \
--with-freetype-dir=/usr \
--with-png-dir=/usr \
--with-xpm-dir=/usr \
--enable-gd-native-ttf \
--without-gdbm \
--with-gettext \
--with-gmp \
--with-iconv \
--with-jpeg-dir=/usr \
--with-openssl \
--with-pcre-regex=/usr \
--with-zlib \
--with-layout=GNU \
--enable-exif \
--enable-ftp \
--enable-magic-quotes \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-ucd-snmp-hack \
--enable-shmop \
--enable-calendar \
--without-sqlite \
--with-libxml-dir=/usr \
--enable-xml \
--enable-pcntl \
--enable-mbstring=shared \
--enable-mbregex \
--with-gd=shared \
--enable-bcmath=shared \
--enable-dba=shared \
--with-db4=/usr \
--with-xmlrpc=shared \
--with-ldap=shared \
--with-ldap-sasl \
--with-mysql=/app/mysql51733 \
--with-mysqli=shared,/app/mysql51733/bin/mysql_config \
--enable-dom=shared \
--with-pgsql=shared \
--enable-wddx=shared \
--with-snmp=shared,/usr \
--enable-soap=shared \
--with-xsl=shared,/usr \
--enable-xmlreader=shared \
--enable-xmlwriter=shared \
--with-curl=shared,/usr \
--enable-pdo=shared \
--with-pdo-odbc=shared,unixODBC,/usr \
--with-pdo-mysql=shared,/app/mysql51733/bin/mysql_config \
--with-pdo-pgsql=shared,/usr \
--with-pdo-sqlite=shared,/usr \
--with-sqlite3=shared,/usr \
--enable-json=shared \
--enable-zip=shared \
--without-readline \
--with-libedit \
--with-pspell=shared \
--enable-phar=shared \
--with-tidy=shared,/usr \
--enable-sysvmsg=shared \
--enable-sysvshm=shared \
--enable-sysvsem=shared \
--enable-posix=shared \
--with-unixODBC=shared,/usr \
--enable-fileinfo=shared \
--enable-intl=shared \
--with-icu-dir=/usr \
--with-enchant=shared,/usr \
--with-recode=shared,/usr \
--enable-zip
备注:
不少配置,只说重要的,模块是按需而定。通常的类库,例如gd,pcre,curl,zlib,iconv等都经过yum来安装,由于位置都统一,因此安装和使用起来都方便。
1.--with-mysql 指定链接的mysql 2.--with-mysqli mysqli扩展技术不只能够调用MySQL的存储过程、处理MySQL事务,并且还可使访问数据库工做变得更加稳定。 3.--with-apxs2 编译共享的 Apache 2.0 模块,就是将php以模块的方式编译,利用apache的apxs来生成php模块,给apache调用 4.--with-config-file-path 指定php.ini的位置 5.--with-gd 使用gd库,gd,jpeg,png,freetype都是跟图形制图有关的,因此须要一块儿使用,以便达到好的效果,而这些软件通常都经过yum安装,使用默认目录/usr方便处理他们之间的关联和寻找 6.--with-jpeg-dir 使用jpeg 7.--with-png-dir 使用png 8.--with-freetype-dir 使用freetype 9.--with-pcre-regex perl的正则库的位置 10.--with-curl 让php使用curl,curl是一个强大的上传下载工具
通常来讲,php编译会出现较多的问题是缺乏须要的库,你调用了某个模块,可是你系统却没有这个库,这样的时候不少时候会提示not found之类,经过yum将包都安装好后就不会有问题了。
make
make install
安装完成后能够看到php的安装目录有文件,而且php模块已经生成在apache的moudle目录下面libphp5.so
复制源码包里面的phpini模板到php.ini的指定目录
cp php.ini-production /app/php5328/php.ini (由于编译的时候指定了php.ini的位置)
修改部分php.ini配置(按需)
修改时区
;date.timezone =
改成
date.timezone = Asia/Shanghai
修改使用的模块
找到; extension_dir = "./"; On windows:; extension_dir = "ext"
添加一行 extension_dir = "/app/php5328/lib64/20090626/" 这里是模块的位置
而后进行模块加载
如:extension=bcmath.so
配置apache使用php模块并支持php后缀的文件
编辑httpd.conf
在LoadModule的行附件增长一行
LoadModule php5_module modules/libphp5.so
(若是须要改端口还须要改Listen,若是须要改运行用户还须要改User)
在AddType 行附件添加下面2行
AddType application/x-httpd-php .php .php3
AddType application/x-httpd-php-source .phps
保存退出
使用vhost配置(方便管理)
vhost配置以下
在httpd.conf下增长监听端口8093,若是不须要的话,能够直接用80,但要加端口的话必须先监听
Listen 8093
而后编辑conf/extra/http-vhosts.conf
注释掉
#NameVirtualHost *:80
添加下面的段落
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/app/apache2227/htdocs/test"
#ServerName dummy-host.example.com
#ServerAlias www.dummy-host.example.com
ErrorLog "logs/8093-error_log"
CustomLog "logs/8093-access_log" common
保存退出
重启apache
/app/apache2227/bin/apachectl restart
测试:
将一个phpinfo.php的页面放到/app/apache2227/htdocs/test目录下
访问http://IP:8093/phpinfo.php 就能够看到效果了。
引用参考:
1.http://php.net/manual/zh/configure.about.php 2.http://php.net/manual/zh/faq.installation.php 3.http://php.net/manual/zh/faq.using.php 关于 register_globals 对我有什么影响?http://php.net/manual/zh/ini.core.php#ini.register-globals 4.http://php.net/manual/zh/ini.core.php 5.http://php.net/manual/zh/ini.php
全程安装完成。感谢。