php nginx配置手记

来源:互联网 发布:知乎spam 编辑:程序博客网 时间:2024/04/27 07:19

正常安装PHP前
给PHP打FPM补订:
svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm
./buildconf --force
make && make install

如果在:./buildconf --force时提示:
buildconf: Your version of autoconf likely contains buggy cache code.
           Running cvsclean for you.
           To avoid this, install autoconf-2.13.

下载autoconf的2.13版本,高版本不行
tar zxvf autoconf-2.13
cd autoconf-2.13
./configure --prefix=/usr/local/autoconf-2.13

# export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
# export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader

然后再运行:./buildconf --force重建configure文件

这样可以不改变原来系统内的autoconf的高版本
然后可以再运行:
# export PHP_AUTOCONF=/usr/bin/autoconf
# export PHP_AUTOHEADER=/usr/bin/autoheader

编译PHP参数:
./configure --prefix=/usr/local/php-cgi --with-config-file-path=/usr/local/php-cgi --enable-sockets --enable-mbstring --with-gd=/usr/local/gd/ --with-freetype-dir=/usr/ --enable-fastcgi --enable-fpm

如果增加参数: –disable-rpath 
PHP5.2以后会有问题的,要去掉,网上查到的。

如果提示libevent找不到,可以下载个,然后安装了:
wget http://monkey.org/~provos/libevent-2.0.7-rc.tar.gz
tar zxvf libevent-2.0.7-rc.tar.gz
cd libevent-2.0.7-rc
./configure
make & make install


出错:
/var/src/php-5.3.1/sapi/fpm/fpm/fpm_main.c:1699: undefined reference to `php_output_end_all'
更新FPM的SVN源:

svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm
改为:
svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3/sapi/fpm sapi/fpm

make install时出错,大至是说shtool mkdir参数出错,

vi Makefile
然后找到mkdir那行,应该是mkdir -p后面就什么都没有那个,在后面加个路径,我随便加了个如mkdir -p /usr/local/php-cgi然后就通过了。

不过不知道为什么编译后的php-fpm不在/usr/local/php-cig/bin内,而是到了系统根目录下,手动移过去即可。
mv /php-fpm /usr/local/php-cgi/bin

另外,php-fpm不能带start启动,不知道为什么,待研究
启动:php-fpm
/usr/local/php-cgi/bin/php-fpm
注意,在以后的运行过程中,如果更改了配置文件,需要重启
killall php-fpm
/usr/local/php-cgi/bin/php-fpm

有时还要重启nginx(见下面)

 

修改PHP配置文件:cgi.fix_pathinfo=0去掉此行的注释,防止Nginx文件类型错误解析漏洞

 

5.3.3以后fpm就在发行包里面了,就不用这么麻烦了!

 

PHP5.3.3编译时,只需要带上--enable-fpm即可,带上--enable-fastcgi  会提示是无效的参数 ./configure --help看了下,已经没有了这个参数了。而是改为--disable-cgi 来禁用CGI。

编译后PHP-FPM会在php目录下的sbin目录下

 

 

安装oci支持oracle
oci install:

/usr/local/php-cgi/bin/pecl install oci8
download oracle-.....rpm
$rpm -Uvh oralce...*

cd /tmp/pear/download/oci8-1.3.5
phpize
./configure --with-php-config=/usr/local/php-cgi/bin/php-config --with-oci8=instantclient,/usr/lib/oracle/11.2/client/lib/
make install

 


安装nginx
tar zxvf nginx-0.8.46.tar.gz
cd nginx-0.8.46/
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../

编译时,提示找不到gc++,
所以:yum install gcc-c++
但又提示一堆问题,换源也不行
最后运行:
yum clean all
yum check-update
再运行yum install gcc-c++即可


启动:
/usr/local/webserver/nginx/sbin/nginx

nginx启动正常,未发现问题

今天先到这,之前为那个autoconf的版本搞半天,导到php打fpm补定未成功,所以未与nginx合并

下一步将nginx与php全并,

1030:

已经调通,但有问题,打开任何PHP页面都显示200,只是空的什么也没有,

非PHP页面没有问题

更改nginx/conf/nginx.conf

location ~.*/.(php|php5)?$ {
         #   root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
上面这句之前写错了,写成了:fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
注意$fastcgi_script_name;前面不要加/
如下方写当也是可以的:
         #fastcgi_param  SCRIPT_FILENAME  /www/beta.tt.cn$fastcgi_script_name;
也可以把上面的代码放到下面所包含的文件内

            include        fastcgi_params;
        }

指定的404错误文件对php文件无效:
nginx/conf/nginx.conf内的http块增加如下一句:fastcgi_intercept_errors on;
否则PHP的404错误不跳到error 404所指的那个文件内

更改配置文件后可以测试如果没问题,重新启动下:
/usr/local/nginx/sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

/usr/local/nginx/sbin/nginx -s reload

增加eaccelerator对PHP进行加束和缓存

wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.zip
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
/usr/local/php-cgi/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-cgi/bin/php-config
 make install
然后要创建如下目录:
mkdir /var/logs/eaccelerator_log
日志目录
mkdir /usr/local/php-cgi/eaccelerator_cache
缓存目录
mkdir /www/beta.tt.cn/eacce
管理cache目录
并为以上目录设置好权限
cp control.php /www/beta.tt.cn/eacce/

mv /usr/local/php-cgi/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so /usr/local/php-cgi/lib/
然后进入/usr/local/php-cgi/
vi php.ini
到最后行,添加如下内容:

[eaccelerator]
zend_extension="/usr/local/php-cgi/lib/eaccelerator.so"
eaccelerator.cache_dir="/usr/local/php-cgi/eaccelerator_cache"
eaccelerator.log_file = "/var/logs/eaccelerator_log"
eaccelerator.allowed_admin_path=/www/beta.tt.cn/eacce
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

待系统运行一段时间,用web打开/www/beta.tt.cn/eacce/control.php可以进行相关的管理,
默认用户名为admin密码为eAccelerator可以在文件内进行更改,也可以设置成不需要密码。

 

 

=========================20101117增加===============

如果在启动nginx时报:error while loading shared libraries: libpcre.so.0

则需要把libpcre.so.0连接到/lib下面,我安装pcre-8.10时就遇到这种情况:

ln -s  /usr/local/lib/libpcre.so.0  /lib

 

原创粉丝点击