PHP環境的搭建及與nginx的集成

一、  去php官網下載最新穩定版(最新實際上是7.0,爲了兼容性,使用5.6.16)php

wget http://cn2.php.net/get/php-5.6.16.tar.gz/from/this/mirrorhtml

二、  解壓縮tar.gz包mysql

tar vxzf php-5.6.16.tar.gzlinux

三、  配置並構建 PHP。在此步驟您可使用不少選項自定義 PHP,例如啓用某些擴展等。 運行 ./configure --help 命令來得到完整的可用選項清單。 在本示例中,咱們僅進行包含 PHP-FPM 和 MySQL 支持的簡單配置。nginx

cd ../php-5.6.16web

./configure --enable-fpm --with-mysqlsql

提示configure: error: xml2-config not found. Please check your libxml2 installation.shell

 

3.一、安裝libxml2(一個支持使用xpath來處理xml文件的庫)vim

apt-get install libxml2後端

apt-get install libxml2-dev

利用以上命令安裝完軟件包後能夠利用如下命令來查看軟件包的狀態(肯定是否安裝成功)

dpkg -s libxml2-dev

也能夠用以下命令(獲得的結果是同樣的):

dpkg-query -s libxml2-dev

軟件安裝好後,默認狀況下,libxml2對應的頭文件均放置在/usr/include/libxml2/libxml目錄下,這一信息可利用以下兩個命令查看(任一命令都能查看到相關信息)

dpkg -L libxml2-dev

xml2-config –cflags

libxml2的庫文件放置在/usr/lib/i386-linux-gnu目錄下,這一信息可利用以下兩個命令查看(任一命令都能查看到相關信息)

dpkg -L libxml2-dev

xml2-config –libs

對應libxml2有一個工具,名字爲xml2-config,xml2-config所在的目錄爲/usr/bin,其實這是一個shell腳本,關於xml2-config的詳細信息能夠經過以下命令來查看

man xml2-config

 

經過以後,進行make和make install

四、  建立配置文件,並將其複製到正確的位置。

cp php.ini-development /usr/local/php/php.ini

cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

cp sapi/fpm/php-fpm /usr/local/bin

五、  須要着重提醒的是,若是文件不存在,則阻止 Nginx 將請求發送到後端的 PHP-FPM 模塊, 以免遭受惡意腳本注入的攻擊

將 php.ini 文件中的配置項 cgi.fix_pathinfo 設置爲 0 。

vim /usr/local/php/php.ini

定位到 cgi.fix_pathinfo= 並將其修改成以下所示:

cgi.fix_pathinfo=0

六、  在啓動服務以前,須要修改 php-fpm.conf 配置文件,確保 php-fpm 模塊使用 www-data 用戶和 www-data 用戶組的身份運行。

vim /usr/local/etc/php-fpm.conf

找到如下內容並修改:

; Unix user/group of processes

; Note: The user is mandatory. If the group is not set, the default user's group

;       will be used.

user = www-data

group = www-data

而後啓動 php-fpm 服務:

/usr/local/bin/php-fpm

本文檔未涵蓋對 php-fpm 進行進一步配置的信息,若是您須要更多信息,請查閱相關文檔。

七、  配置 Nginx 使其支持 PHP 應用:

vim /usr/local/nginx/conf/nginx.conf

修改默認的 location 塊,使其支持 .php 文件:

location / {

    root   html;

    index  index.php index.html index.htm;

}

下一步配置來保證對於 .php 文件的請求將被傳送到後端的 PHP-FPM 模塊, 取消默認的 PHP 配置塊的註釋,並修改成下面的內容:

location ~* \.php$ {

    fastcgi_index   index.php;

    fastcgi_pass    127.0.0.1:9000;

    include         fastcgi_params;

    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;

    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

}

重啓 Nginx。

sudo /usr/local/nginx/sbin/nginx -s stop

sudo /usr/local/nginx/sbin/nginx

 

擴展閱讀:優化nginx的php配置

http://blog.jobbole.com/50121/

 

使用phpize爲已編譯安裝php動態追加模塊:

使用php的常見問題是:編譯php時忘記添加某擴展,後來想添加擴展,可是由於安裝php後又裝了一些東西如PEAR等,不想刪除目錄重裝,別說,php還真有這樣的功能。

  安裝時沒有追加gd庫,結果如今須要gd庫了,能夠這樣作。

  首先,要有與現有php徹底相同的php壓縮包。我用的是php-5.2.16.tar.gz。

  展開後進入裏面的ext/gd目錄

  而後執行/usr/local/bin/phpize,這是一個可執行的文本文件,要確保它在系統中

  若是沒報錯,會發現當前目錄下多了一些configure文件。

  以後

  ./configure --with-php-config=/usr/local/bin/php-config

  注意要先確保/usr/local/bin/php-config存在。

  若是你的php安裝路徑不是默認的,要改。

  若是沒有報錯,則make,再make install ,而後它告訴你一個目錄

  你把該目錄下的gd.so拷貝到你php.ini中的extension_dir指向的目錄中,

  修改php.ini,在最後添加一句extension=gd.so

  不幸的是,在執行phpize時報錯,

  Cannot find autoconf. Please check your autoconf installation and the
  $PHP_AUTOCONF environment variable. Then, rerun this script.

  那這個也好辦,安裝autoconf和m4便可。(gd目錄下會發現一個m4文件)

# cd /usr/src
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# cd ../
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install
更簡單的辦法
# yum install m4
# yum install autoconf

接着繼續安裝gd,發現configure的時候報錯, configure: error: png.h not found.

看來不得不安裝gd的依賴庫了,freetype ,jpegsrc,libpng。

一、下載安裝freetype(一個字體引擎)

  wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.gz

  tar vxzf freetype-2.4.0.tar.gz

  cd freetype-2.4.0

  ./configure --prefix=/usr/local/freetype && make && make install

二、jpegsrc

  wget http://www.ijg.org/files/jpegsrc.v9a.tar.gz

  tar vxzf jpegsrc.v9a.tar.gz

  cd jpegsrc.v9a

  CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/jpeg && make && make install

  mkdir -p /usr/local/jpeg/include

  mkdir -p /usr/local/jpeg/lib

  mkdir -p /usr/local/jpeg/bin
  mkdir -p /usr/local/jpeg/man/man1

三、libpng

  wget http://jaist.dl.sourceforge.net/project/libpng/libpng16/1.6.19/libpng-1.6.19.tar.gz

  tar vxzf libpng-1.6.19.tar.gz

  cd libpng-1.6.19

  CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/libpng && make && make install

安裝完以後,返回ext/gd目錄,再執行

./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype
make && make install

接着把生成的gd.so放到擴展目錄中,加到php.ini配置中。(注意這個配置文件的路徑)

  

  

 

  關於phpize的詳細介紹:

安裝(fastcgi模式)的時候,經常有這樣一句命令:/usr/local/webserver/php/bin/phpize
1、phpize是幹嗎的?
phpize是什麼東西呢?php官方的說明:
http://php.net/manual/en/install.pecl.phpize.php
phpize是用來擴展php擴展模塊的,經過phpize能夠創建php的外掛模塊
好比你想在原來編譯好的php中加入memcached或者ImageMagick等擴展模塊,可使用phpize,經過如下幾步工做。
2、如何使用phpize?
當php編譯完成後,php的bin目錄下會有phpize這個腳本文件。在編譯你要添加的擴展模塊以前,執行如下phpize就能夠了;
好比如今想在php中加入memcache擴展模塊:咱們要作的只是以下幾步
————————————————————————
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
————————————————————————
注意./configure 後面能夠指定的是php-config文件的路徑
這樣編譯就完成了,還須要作的是在php.ini文件中加入extension值
extension = 「memcache.so」
---------------------------------------------------------
注意:Cannot find config.m4.
這個錯誤是一個很傻的錯誤,解壓之後須要cd到文件夾,否則phpize就會報錯

動態編譯PHP的memcache擴展庫,在執行/usr/localphp/bin/phpize時出現了錯誤,
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.
很明顯缺乏文件,須要安裝。網上找了下資料。
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# cd ../
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz# tar -zvxf autoconf-2.62.tar.gz# cd autoconf-2.62/# ./configure && make && make install而後執行如下命令進行安裝#/usr/local/php/bin/phpize#./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/libevent –with-php-config=/usr/local/php/bin/php-config#make && make install

相關文章
相關標籤/搜索