先說一下PHP在Apache和Nginx下所扮演的角色
apache一般是把php當做自己的一個模組來啟動的.
而nginx則是把http請求變數(如get,user_agent等)轉發給 php程式,即php獨立程式,與nginx進行通訊. 稱為 fastcgi執行方式,可以說.nginx和php是平級關係
因此,為apache所編譯的php,是不能用於nginx的.
yum安裝mysql
yum install mysql mysql-devel mysql-server
安裝它們所以來的一些庫,可以yum安裝,依賴庫在 http://www.90book.cn/416.html 下有說明 ,如 gd ,ttf,libxml,png,freetype 等,可根據在編譯過程中提示的錯誤來逐步完善安裝所需要的依賴庫,以fpm(fastcgi)方式執行
yum install db //yum 安裝gd yum install ttf //yum 安裝ttr yum install freetype //yum安裝字型庫 yum install libxml2 yum install libxml2-devel -y
其次還有png ......
準備去下載php
//幾乎包括所有的PHP版本
cd /usr/local/src/ 然後以 5.4.22 版本測試 wget http://mirror.cogentco.com/pub/php/php-5.4.22.tar.gz tar zxvf php-5.4.22.tar.gz ./configure --help|grep php-fpm //執行返回下塊程式碼
--with-fpm-user=USER Set the user for php-fpm to run as. (default: nobody)
--with-fpm-group=GRP Set the group for php-fpm to run as. For a system user, this
./configure --help|grep fpm //執行返回下塊程式碼
--enable-fpm Enable building of the fpm SAPI executable
--with-fpm-user=USER Set the user for php-fpm to run as. (default: nobody)
--with-fpm-group=GRP Set the group for php-fpm to run as. For a system user, this
should usually be set to match the fpm username (default: nobody)
--with-fpm-systemd Activate systemd integration
注意: 我們編譯的PHP 要有如下功能:
連線mysql, gd, ttf, 以fpm(fascgi)方式執行
./configure --prefix=/usr/local/php \ --with-mysql=mysqlnd \ --enable-mysqlnd \ --with-gd \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --enable-fpm make && make install
解析編譯完畢後進入編譯安裝後的 /usr/local/php 目錄
cp /usr/local/src/php-5.4.22/php.ini-development ./lib/php.ini cp etc/php-fpm.conf.default etc/php-fpm.conf ./sbin/php-fpm ps aux| grep php //檢視程式返回以下程式碼
root 50336 0.3 0.2 139956 2988 ? Ss 09:11 0:00 php-fpm: master process (/usr/local/fastphp/etc/php-fpm.conf) nobody 50337 0.0 0.2 139956 2624 ? S 09:11 0:00 php-fpm: pool www nobody 50338 0.0 0.2 139956 2624 ? S 09:11 0:00 php-fpm: pool www root 50343 0.0 0.0 103248 836 pts/4 S+ 09:12 0:00 grep php
配置nginx
vim /usr/local/nginx/conf/nginx.conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
1:碰到php檔案,
2: 把根目錄定位到 html,
3: 把請求上下文轉交給9000埠PHP程式,
4: 並告訴PHP程式,當前的指令碼是 $document_root$fastcgi_scriptname
./sbin/nginx -s reload
然後啟動mysql服務,或者在nginx的html目錄下來一個index.php檔案檢視phpinfo等,最後訪問ip