從 php 5.3.3 起,就可直接使用 PHP-FPM ,再也不須要打補丁了。此前已寫過《Linux 從源碼編譯安裝 PHP 5》 見 http://www.linuxidc.com/Linux/2011-10/45743.htm,可是以 mod_php 模塊方式,而非 FastCGI 模式運行 php ,並不適用於 Lighttpd、Nginx、LiteSpeed ,並且當時對全部模塊都採用編譯安裝也顯得過於繁瑣。php
1、什麼是 FastCGI、PHP-FPM、FastCGI ?
CGI是一種口;FastCGI 是 CGI 的擴展,讓 CGI 更高效;PHP-FPM 是一個 PHP FastCGI 管理器;同理 Spawn-FCGI 是一個通用的 FastCGI 管理器,它是 lighttpd 中的一部份。mysql
所以,以 FastCGI 模式運行 php 5.3.4,主要有兩種方式,一是 PHP-FPM、二是 Spawn-FCGI ,本文要講的是以 PHP-FPM 方式運行管理 php。linux
參考資料:sql
一、《php-fpm文檔中文翻譯》 http://www.linuxidc.com/Linux/2011-10/45747.htm
二、《什麼是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?》 http://www.linuxidc.com/Linux/2011-07/38108.htmvim
2、準備工做
系統環境:Ubuntu-10.10-Server-I386
OpenSSL 版本:openssl-1.0.0c (安裝方法見 http://www.linuxidc.com/Linux/2011-10/45738.htm)
OpenSSH 版本:openssh-5.6p1 (安裝方法見 http://www.linuxidc.com/Linux/2011-10/45739.htm)
MySQL 5 版本:mysql-5.1.53-linux-i686-glibc23 (安裝方法見 http://www.linuxidc.com/Linux/2011-10/45742.htm)api
3、編譯安裝 php5-gd
3.一、安裝基礎編譯環境
1
|
apt-get install build-essential -y |
3.二、安裝 libpng、 libjpeg、 libfreetype
1
|
apt-get install libpng12-dev libjpeg62-dev libfreetype6-dev -y |
3.三、源碼編譯安裝 Libiconv
1
2
3
4
5
|
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxf libiconv-1.13.1.tar.gz cd libiconv-1.13.1/ ./configure --prefix=/usr/local make && make install |
3.四、源碼編譯安裝 gd-2.0.35
1
2
3
4
5
|
wget http://www.libgd.org/releases/gd-2.0.35.tar.gz tar -zxf gd-2.0.35.tar.gz cd gd-2.0.35/ ./configure --prefix=/usr/local --with-libiconv-prefix=/usr/local --with-png --with-freetype --with-jpeg make && make install |
4、編譯安裝 php5 擴展庫
4.一、libxml、libmhash、libmcrypt、mcrypt、libldap、libsasl
1
|
apt-get install libxml2-dev libmhash-dev libmcrypt-dev mcrypt libldap2-dev libsasl2-dev libssh2-1-dev |
4.二、編譯安裝 curl-7.21.3
1
2
3
4
5
|
wget http://curl.haxx.se/download/curl-7.21.3.tar.gz tar -zxf curl-7.21.3.tar.gz cd curl-7.21.3/ ./configure --prefix=/usr/local make && make install |
5、編譯安裝 php5.3.4 (FastCGI)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
wget http://cn.php.net/distributions/php-5.3.4.tar.gz tar -zxf php-5.3.4.tar.gz cd php-5.3.4/ ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-openssl=/usr --with-png-dir --with-jpeg-dir --with-freetype-dir --with-iconv-dir=/usr/local --with-gd=/usr/local --enable-gd-native-ttf --with-libxml-dir --with-zlib --with-mhash --with-mcrypt --with-ldap --with-ldap-sasl --with-curl=/usr/local --with-curlwrappers --enable-bcmath --enable-calendar --enable-mbstring --enable-ftp --enable-zip --enable-sockets --enable-exif --enable-zend-multibyte --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data make && make install cp php.ini-production /usr/local/php/lib/php.ini <code> --prefix #指定php5安裝目錄 --with-mysql #指定mysql安裝目錄 --with-mysqli #添加mysqli擴展支持 --with-openssl #指定openssl安裝目錄 --with-png-dir #GD所需的png庫 --with-jpeg-dir #GD所需的jpeg庫 --with-freetype-dir #指定freetype字體庫 --with-iconv-dir #指定iconv函數庫,用於字符集轉換 --with-gd #指定GD庫目錄 --enable-gd-native-ttf #添加TrueType字符串函數庫 --with-libxml-dir #指定libxml2庫目錄 --with-zlib #壓縮庫目錄 --with-mhash #指定哈希函數庫目錄 --with-mcrypt #指定mcrypt加密函數庫 --with-ldap #指定ldap庫 --with-curl #指定cURL庫 --with-curlwrappers #運用curl工具打開url流 --enable-bcmath #高精度數學函數支持 --enable-calendar #開啓對日曆的支持 --enable-mbstring #多字節、字符串支持 --enable-ftp #開啓對ftp的支持 --enable-zip #開啓對zip的支持 --enable-sockets #開啓sockets支持 --enable-exif #圖片元數據支持 --enable-zend-multibyte #zend多字節的支持 --enable-fpm #開啓FastCGI的進程管理支持 --with-fpm-user #運行fpm的用戶 --with-fpm-user #運行fpm的組 <h3>6、配置 php-fpm</h3> <code lang='bash'> cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf vim /usr/local/php/etc/php-fpm.conf |
查找下面語句,並將前面"#"號去掉。bash
1
2
3
4
5
6
|
pid = run/php-fpm.pid
error_log = log/php-fpm.log log_level = notice pm.start_servers pm.min_spare_servers pm.max_spare_servers |
6.二、開機自動重啓 php-fpm
1
2
3
|
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm update-rc.d php-fpm defaults |