php nginx配置手記

正常安裝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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章