##目录 0.下载相关的文件 1.PCRE 2.Nginx 3.PHP 4.测试 5.编写快速启动和关闭的nginx与php脚本 ##0.下载相关的文件 1. [pcre-8.21.tar.bz2](ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/) 2. [nginx-1.4.1.tar.gz](http://nginx.org/) 3. [php-5.3.27](http://php.net/downloads.php) ##1.PCRE 系统自带的PCRE版本太低了.所以需要卸载重装。 第一步:查看PCRE的版本 ``` $ rpm -qa | grep pcre ``` 第二步:保留以前的libpcre.so.0,没有这个无法重装PCRE的 ``` $ sudo cp /lib/libpcre.so.0 /lib/libpcre.so.0.back ``` 第三步:卸载PCRE ``` $ sudo rpm -e --nodeps pcre-7.8-4.el6.i686 #这里的这个7.8-4.el6.i686-是我这里版本,要根据自己电脑修改 ``` 第四步:安装新的PCRE ``` $ tar -xj -f pcre-8.21.tar.gz $ cd pcre-8.21 $ sudo mv /lib/libpcre.so.0.back /lib/libpcre.so.0 $ ./configure $ make $ sudo make install ``` ##2.Nginx ``` $ ./configure $ --prefix=/usr/local/nginx $ --conf-path=/etc/nginx/nginx.conf $ --user=www $ --group=www $ --pid-path=/var/run/nginx.pid $ --with-http_stub_status_module $ --with-http_ssl_module $ --with-http_realip_module $ --with-http_flv_module $ --with-http_dav_module $ --with-http_gzip_static_module $ --http-log-path=/data/log/nginx/access.log $ --error-log-path=/data/log/nginx/error.log $ --without-http-cache $ --with-mail $ --with-mail_ssl_module $ --http-proxy-temp-path=/tmp/nginx/proxy $ --http-fastcgi-temp-path=/tmp/nginx/fastcgi $ --http-uwsgi-temp-path=/tmp/nginx/uwsgi $ --http-scgi-temp-path=/tmp/nginx/scgi $ --http-client-body-temp-path=/tmp/nginx/client $ make $ sudo make install $ sudo /usr/local/nginx/sbin/nginx ``` ###配置, 开启PHP支持 ``` $ sudo vim /usr/local/nginx/conf/nginx.conf ``` 增加PHP主页 ``` location / { root html; index index.html index.php index.htm; } ``` 开启PHP支持 ``` location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } ``` 注意这里的fastcgi_pass 和 fastcgi_param的"/var/www", fastcgi_pass是nginx请求到php的端口,而"/var/www"就是项目的存放路径 ``` $ sudo /usr/local/nginx/sbin/nginx ``` 在浏览器输入https://127.0.0.1就可以查看Nginx的欢迎信息了 ##3.PHP 这里是最小化安装,所以就不配置什么插件了 Nginx 与 PHP的通信需要使用 PHP-FPM,在php5.3.3以后,PHP-FPM以及集成到了php,如果要使用的话,在编译的时候,加一句--enable-fpm ``` $ sudo ./configure --prefix=/usr/local/php --enable-fpm $ sudo make $ sudo make test $ sudo make install ``` ###配置 ``` $ sudo cd /usr/local/php $ cp etc/php-fpm.conf.default etc/php-fpm.conf $ sudo vim etc/php-fpm.conf $ 找到[global],去掉";pid = run/php-fpm.pid"的注释 ``` ##4.测试 我们之前提到了"/var/www",我们在这里新建一个php文件,来测试环境是否搭建成功 ``` $ sudo vim /var/www/info.php ``` info.php ```php <? echo phpinfo(); ?> ``` 如果之前已经开启nginx服务器,现在就不用开了 ``` $ sudo /usr/local/nginx/sbin/nginx $ sudo /usr/local/php/sbin/php-fpm ``` ##5.编写快速启动和关闭的nginx与php脚本 示例: ``` $ sudo vim /etc/init.d/php-fpm $ sudo chmod +x /etc/init.d/php-fpm $ sudo /sbin/chkconfig php-fpm on $ sudo /sbin/chkconfig --list php-fpm ``` 成功的话 就可以看到好几个 on 测试 ``` $ sudo /etc/init.d/php-fpm stop $ sudo /etc/init.d/php-fpm start $ sudo /etc/init.d/php-fpm restart ``` php-fpm 脚本 ``` #!/bin/bash # # Startup script for the PHP-FPM server. # # chkconfig: 345 85 15 # description: PHP is an HTML-embedded scripting language # processname: php-fpm # config: /usr/local/php/etc/php.ini # Source function library. . /etc/rc.d/init.d/functions PHP_PATH=/usr/local DESC="php-fpm daemon" NAME=php-fpm # php-fpm路径 DAEMON=$PHP_PATH/php/sbin/$NAME # 配置文件路径 CONFIGFILE=$PHP_PATH/php/etc/php-fpm.conf # PID文件路径(在php-fpm.conf设置) PIDFILE=$PHP_PATH/php/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 rh_start() { $DAEMON -y $CONFIGFILE || echo -n " already running" } rh_stop() { kill -QUIT `cat $PIDFILE` || echo -n " not running" } rh_reload() { kill -HUP `cat $PIDFILE` || echo -n " can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" rh_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" rh_stop echo "." ;; reload) echo -n "Reloading $DESC configuration..." rh_reload echo "reloaded." ;; restart) echo -n "Restarting $DESC: $NAME" rh_stop sleep 1 rh_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 exit 3 ;; esac exit 0 ``` nginx 脚本 ``` #!/bin/bash # #chkconfig: - 85 15 #description: Nginx is a World Wide Web server. #processname: nginx nginx=/usr/local/nginx/sbin/nginx conf=/usr/local/nginx/conf/nginx.conf case $1 in start) echo -n "Starting Nginx" $nginx -c $conf echo " done" ;; stop) echo -n "Stopping Nginx" killall -9 nginx echo " done" ;; test) $nginx -t -c $conf ;; reload) echo -n "Reloading Nginx" ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP echo " done" ;; restart) $0 stop $0 start ;; show) ps -aux|grep nginx ;; *) echo -n "Usage: $0 {start|restart|reload|stop|test|show}" ;; esac ```