Nginx下編譯PHP+Mysql

OldBoy~發表於2017-05-17

先說一下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 

相關文章