前提:Centos6. 64位纯净版系统,最好有安装了Mysql数据库,没有安装也没有所谓,只是基础篇。
yum clean all && \
yum -y install gcc* \
make autoconf libtool-ltdl-devel gd-devel \
freetype* libxml2-devel libjpeg-devel \
libpng-devel openssl-devel \
curl-devel patch libmcrypt-devel \
libmhash-devel ncurses-devel bzip2 \
libcap-devel ntp sysklogd \
diffutils sendmail unzip \
bison wget tar re2c
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz
注意:如果没有这个库,在编译php时会提示报错而停止编译安装,libiconv属于动态库
tar xf libiconv-1.14.tar.gz -C /usr/src/
cd /usr/src/libiconv-1.9.2
./configure --prefix=/usr/local/libiconv
make && make install
useradd -M -s /sbin/nologin www
注意:创建一个不需要家目录,不需要登录系统的运行用户,它只能是支持php和nginx运行在Linux上,每一个用户的权限必须细分,否则后期很麻烦。
wget http://museum.php.net/php5/php-5.3.10.tar.gz
注意:文章开始的下载时windows下载方式,而这个是linux下载方式,软件都是一样
tar xf php-5.3.10.tar.gz -C /usr/src/
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/ \
--with-mysql=mysqlnd \
--with-gd --with-jpeg-dir \
--enable-pdo --with-pdo-mysql \
--enable-mbstring --with-mysqli \
--with-png-dir --with-freetype-dir \
--enable-gd-native-ttf \
--with-mcrypt --with-curl \
--enable-fpm \
--with-gettext --disable-debug \
--enable-zend-multibyte \
--with-mhash --disable-ipv6 \
--with-iconv=/usr/local/libiconv \
--with-mcrypt && \
make && make install
prefix:php安装目录路径
with-config-file-path:php.ini主配置文件存放位置,注意编译安装php.ini文件是不存在的,需要手动创建放在这个目录下
with-mysql:启用mysql
with-libxml-dir:指定libxml库目录,不指定时使用默认目录/usr/lib64下
enable-ftp:支持FTP,然而好像并没有什么用。
enable-sockets:支持sockets扩展,后期安装邮件服务时会使用这个扩展
with-gd:支持GD库,很重要的一个扩展
with-jpeg-dir:使GD支持jpeg图片格式
with-png-dir:使GD支持png图片格式
with-freetype-dir:使GD支持其他格式图片
with-zlib-dir:使nginx支持zlib扩展
enable-gd-native-ttf:启用TureType字符功能
enable-magic-quotes:默认激活magic quotes。可让程序在执行时自动加入反斜线的引入字符
with-iconv:启用XMLRPC-EPI:iconv支持
enable-mbstring=all:启用多字节字符串的支持
disable-cgi:编译禁用CGI的PHP版本,cgi版本已经慢慢淘汰了,由fastcgi代替
with-openssl:支持SSL协议
with-mcrypt:包含mcrypt支持
enable-bcmath:启用bcmatch(公元前风格精度数学)
enable-calendar:启用日历转换支持
enable-exif:启用EXIF支持(从图片中获取元数据)
enable-libxml:启用LIBXML支持
with-bz2:包含BZip2支持
with-curl:启用cURL支持
with-xmlrpc:包含XMLRPC-EPI支持
with-gettext:包含GNU gettext支持
disable-cli:编译禁用CLI的PHP版本
disable-debug:禁止带调试符号的编译
enable-zend-multibyte:编译zend多字节支持
with-mhash:包含mhash支持
enable-pcntl: 启用pcntl支持
enable-sysvsem:启用系统V信号支持
enable-inline-optimization:编译zend_execute.lo需要
注意:如果编译失败,disable-inline-optimization使用这个参数
enable-soap:启用SOAP支持
disable-ipv6:禁止ipv6支持
enable-fpm:启用fpm功能,为nginx整合使用
with-iconv:启用XMLRPC-EPI:iconv支持
cd /usr/local/php5/
cp /usr/src/php-5.3.10/php.ini-production lib/php.ini
cp etc/php-fpm.conf.default etc/php-fpm.conf
vim etc/php-fpm.conf
user = www
group = www
pm.max_children = 50
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
注意:php.ini放到/usr/local/php5/lib/目录下才能生效,如果需要在php根目录下,在编译时定义with-config-file-path选项
pm.max_children:子进程最大数
pm.min_spare_servers:启动时的进程数
pm.max_spare_servers:保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_requests:保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
ln -sf /usr/local/php5/sbin/php-fpm /usr/bin/
php-fpm #启动php进程
注意:php的默认端口为9000,所以在防火墙上需要添加下9000端口
pkill php-fpm
cd /usr/src/php-5.3.10/ext/mysqli/
注意:php5.3版本tar包中一些常用的扩展模块默认是存在的,需要时可以编译安装
/usr/local/php5/bin/phpize
注意:这个很重要,在没有存在aspx编译模块下,phpize也会生成configure文件
./configure --prefix=/usr/local/php5/include/php/ext/mysqli \
--with-php-config=/usr/local/php5/bin/php-config \
--with-mysqli=/usr/local/mysql/bin/mysql_config
注意:添加模块不需要安装,只要配置生成就行了。
prefix:指定模块的安装路径,注意的是编译安装的PHP中在根目录下是没有ext目录,而模块默认存放目录是在/usr/local/php5/include/php/ext/下
with-php-config:指定PHP安装配置信息
with-mysqli:指定Mysql安装配置信息
vim lib/php.ini
extension=mysqli.so
注意:在php.ini目录直接启用mysqli扩展就行了,而不需要指定mysqli的安装目录,因为在编译时已经把mysqli模块生成到默认的模块存放目录了
pkill php-fpm ; php-fpm
即可重新加载模块
wget http://liquidtelecom.dl.sourceforge.net/project/wdcp/wdcp_soft/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
注意:如果需要其他版本 eycode带你跳转
tar xf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
cd ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/
mkdir /usr/local/php5/include/php/ext/zend
cp ZendGuardLoader.so /usr/local/php5/include/php/ext/zend/
vim /usr/local/php5/lib/php.ini
[zend]
zend_extension = /usr/local/php5/include/php/ext/zend/ZendGuardLoader.so
zend_loader.enable = 1
zend_loader.disable_licensing = 0
zend_loader.obfuscation_level_support = 3
注意:建议使用绝对路径
zend_extension:模块存储目录
zend_loader.enable:启用加载
pkill php-fpm ; php-fpm
即可重新加载模块
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
注意:pcre库是安装nginx的必须环境
tar zxvf pcre-7.7.tar.gz -C /usr/src/pcre-7.7
./configure
make && make install
wget http://nginx.org/download/nginx-1.9.9.tar.gz
注意:1.9.9版本是最新的版本,需要的 eycode带你跳转
tar xf nginx-1.9.9.tar.gz -C /usr/src/
cd /usr/src/nginx-1.9.9
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install
注意:nginx虽然使用很少的编译参数,但自带的默认参数满足使用
prefix:指定nginx安装目录
with-http_stub_status_module:监控 Nginx 的当前状态
with-http_gzip_static_module:启动预压缩功能,对所有类型的文件都有效
vim /usr/local/nginx/conf/nginx.conf
user www;
worker_processes 4;
location / {
root html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
# include fastcgi_params;
}
location ~* \.(gif|jpg|jpeg|png|bmp|swf|htm|html|css|js)$ {
root /eycode;
}
user:运行用户,建议以php的一致,方便管理
worker_processes:进程数,建议与服务器的CPU核数一致即可
root:网站数据存放目录
index:指定默认主页
include:调用外部配置文件
注意:其他参数在本文中不介绍,因为nginx实在太多东西要学了,文章有限。nginx在后面会有相关专题介绍
启动nginx cd /usr/local/nginx/ ./sbin/nginx
停止nginx pkill nginx
为了方便管理nginx服务,在网上找了一个管理脚本
vim /etc/init.d/nginxd
#!/bin/bash
# chkconfig: 345 99 20
# description: Nginx servicecontrol script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
echo "Nginx servicestart success."
;;
stop)
kill -s QUIT $(cat $PIDF)
echo "Nginx service stopsuccess."
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
echo"reload Nginx configsuccess."
;;
*)
echo "Usage: $0{start|stop|restart|reload}"
exit 1
esac
保存
service nginxd start
注意:如果报错
error while loading shared libraries: libpcre.so.1: cannot open shared object file:
No such file or directory
ln -s /usr/local/lib/libpcre.so.1 /lib64
service nginxd reload
service nginxd restart
service nginxd stop
OK,nginx和PHP整合终于写完了,写了两个钟的文章,睡一觉去…..88。