Ubuntu 10.04 上安裝Nginx 0.8.52 + PHP-fpm 5.3.3 + APC和MySQL

Ubuntu 10.04 上源碼編譯安裝Nginx 0.8.52 + PHP-fpm 5.3.3 + APC和MySQL
Ubuntu 是服務器上常用的Linux發行版本. 10.04是最新的LTS版本. Nginx則是佔用內存少, 速度快的網頁server的後起之秀. PHP從5.3.3起, 內置了FPM補丁, 跟nginx的兼容性又上了一個台階. 本文是在Ubuntu 10.04上源碼編譯安裝nginx 0.8.52, PHP-fpm 5.3.3, 加APC PHP加速的操作教程. (最後使用apt-get安裝mysql數據庫).

注意, 整個安裝過程都是使用root帳號.

第一步 安裝準備

更新系統源庫和更新已經安裝過的程序:

sudo apt-get update
sudo apt-get dist-upgrade

安裝會用的程序:

apt-get install htop binutils cpp flex gcc libarchive-zip-perl 
libc6-dev libcompress-zlib-perl m4 libpcre3 libpcre3-dev libssl-dev 
libpopt-dev lynx make perl perl-modules openssl unzip zip 
autoconf2.13 gnu-standards automake libtool bison build-essential 
zlib1g-dev ntp ntpdate autotools-dev g++ bc subversion psmisc 
libmysqlclient-dev libcurl4-openssl-dev libjpeg62-dev libpng3-dev 
libxpm-dev libfreetype6-dev libt1-dev libmcrypt-dev libxslt1-dev 
libbz2-dev libxml2-dev libevent-dev libltdl-dev libmagickwand-dev 
imagemagick

創建用來臨時放源碼的目錄:

mkdir ~/src
cd ~/src

下載nginx和PHP等源碼:

wget http://nginx.org/download/nginx-0.8.52.tar.gz
wget http://us2.php.net/distributions/php-5.3.3.tar.gz
wget http://download.suhosin.org/suhosin-patch-5.3.3-0.9.10.patch.gz
wget http://download.suhosin.org/suhosin-0.9.32.1.tar.gz
wget http://pecl.php.net/get/imagick-3.0.0.tgz

解壓縮源碼包:

tar zxvf nginx-0.8.52.tar.gz
tar xzvf php-5.3.3.tar.gz
tar xzvf suhosin-0.9.32.1.tar.gz
gunzip suhosin-patch-5.3.3-0.9.10.patch.gz
tar xzvf imagick-3.0.0.tgz

第二步 安裝nginx 0.8.52

編譯安裝nginx:

cd nginx-0.8.52/

./configure 
  --prefix=/opt/nginx 
  --conf-path=/etc/nginx/nginx.conf 
  --pid-path=/var/run/nginx.pid 
  --lock-path=/var/lock/nginx.lock 
  --http-log-path=/var/log/nginx/access.log 
  --error-log-path=/var/log/nginx/error.log 
  --http-client-body-temp-path=/var/lib/nginx/body 
  --http-proxy-temp-path=/var/lib/nginx/proxy 
  --http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
  --http-uwsgi-temp-path=/var/lib/nginx/uwsgi 
  --http-scgi-temp-path=/var/lib/nginx/scgi 
  --with-http_ssl_module 
  --with-http_stub_status_module 
  --user=www-data 
  --group=www-data 
  --without-mail_pop3_module 
  --without-mail_imap_module 
  --without-mail_smtp_module 

make
make install
cd ..

注意把nginx安裝到/opt/nginx目錄里了. nginx的配置文件在/etc/nginx/nginx.conf, pid在/var/run/nginx.pid.

在系統PATH里加入nginx的路徑:

echo 'if [ -d "/opt/nginx/sbin" ]; then
    PATH="$PATH:/opt/nginx/sbin"
fi' >> /etc/bash.bashrc

當前連接會話也加上:

export PATH="$PATH:/opt/nginx/sbin"

添加啟動管理文件並讓ubuntu開機時自動運行nginx網頁服務器, 我把修改好的腳本放到博客上了:

wget http://www.cslog.cn/wp-content/uploads/2010/10/nginx.gz
gunzip nginx.gz
mv nginx /etc/init.d
chmod +x /etc/init.d/nginx
update-rc.d -f nginx defaults

自動分割和壓縮nginx日誌分文:

nano /etc/logrotate.d/nginx

在裡面加入下面內容:

/var/log/nginx/*.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
	endscript
}

給nginx新建運行環境目錄:

mkdir /var/lib/nginx

到這裡nginx的安裝完成了.

第三步 安裝PHP

給php打上suhosin安全補丁:

cd php-5.3.3
patch -p 1 -i ../suhosin-patch-5.3.3-0.9.10.patch

開始編譯安裝php 5.3.3

./buildconf --force

./configure 
	--prefix=/opt/php5 
	--with-config-file-path=/opt/php5/etc 
	--with-curl 
	--with-pear 
	--with-gd 
	--with-jpeg-dir 
	--with-png-dir 
	--with-zlib 
	--with-xpm-dir 
	--with-freetype-dir 
	--with-t1lib 
	--with-mcrypt 
	--with-mhash 
	--with-mysql 
	--with-mysqli 
	--with-pdo-mysql 
	--with-openssl 
	--with-xmlrpc 
	--with-xsl 
	--with-bz2 
	--with-gettext 
	--with-fpm-user=www-data 
	--with-fpm-group=www-data 
	--enable-fpm 
	--enable-exif 
	--enable-wddx 
	--enable-zip 
	--enable-bcmath 
	--enable-calendar 
	--enable-ftp 
	--enable-mbstring 
	--enable-soap 
	--enable-sockets 
	--enable-sqlite-utf8 
	--enable-shmop 
	--enable-dba 
	--enable-sysvmsg 
	--enable-sysvsem 
	--enable-sysvshm

make
make install

注意, PHP5.3.3自帶了fpm補丁, 不用再打了. PHP安裝到了/opt/php5目錄.

將php5所在的目錄也加到bash的PATH中去:

echo 'if [ -d "/opt/php5/bin" ] && [ -d "/opt/php5/sbin" ]; then
    PATH="$PATH:/opt/php5/bin:/opt/php5/sbin"
fi' >> /etc/bash.bashrc

當前會話也加上:

export PATH="$PATH:/opt/php5/bin:/opt/php5/sbin"

準備PHP5的日誌文件目錄:

mkdir /var/log/php-fpm
chown -R www-data:www-data /var/log/php-fpm

準備PHP的配置文件:

cp -f php.ini-production /opt/php5/etc/php.ini
chmod 644 /opt/php5/etc/php.ini
cp /opt/php5/etc/php-fpm.conf.default /opt/php5/etc/php-fpm.conf

注意: PHP5的配置文件在/opt/php5/etc/php.ini, php-fpm的配置文件在/opt/php5/etc/php-fpm.conf.

修改php-fpm配置文件:

nano /opt/php5/etc/php-fpm.conf

另外, 裡面的服務數量請根據自己的機器硬件配置和網站流量做調整設置
如:

pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 20

如果將監聽端口設置從

listen = 127.0.0.1:9000

換成sock,如

listen = /var/run/php-fpm.sock

要做如下操作,保證php-fpm.scok的可讀性

touch /var/run/php-fpm.sock
chown -R www-data:www-data /var/run/php-fpm.sock

按ctl+w搜索php_fpm_PID, 將它改的值改成

php_fpm_PID=/var/run/php-fpm.pid

設置php-fpm啟動管理文件,並讓PHP在ubuntu啟動時自動運行:

cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults

修改php-fpm啟動管理文件:

nano /etc/init.d/php-fpm

將裡面php_fpm_PID的值也改成/var/run/php-fpm.pid:

php_fpm_PID=/var/run/php-fpm.pid

設置PHP的自動日誌分割和壓縮:

nano /etc/logrotate.d/php-fpm

加入:

/var/log/php-fpm/*.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 www-data www-data
	sharedscripts
	postrotate
		[ ! -f /var/run/php-fpm.pid ] || kill -USR1 `cat /var/run/php-fpm.pid`
	endscript
}

給php安裝APC加速器:

pecl install APC-3.1.4

和安全補丁

cd ../suhosin-0.9.32.1
/opt/php5/bin/phpize
./configure --enable-suhosin
make
make test
make install

給PHP安裝imagick圖像處理模塊:

cd ../imagick-3.0.0
/opt/php5/bin/phpize
./configure --with-imagick
make
make test
make install

向php.ini配置文件第920行下面添加新模塊信息:

nano +920 /opt/php5/etc/php.ini

插入:

extension = suhosin.so
extension = imagick.so
extension = apc.so
apc.enabled = 1
apc.shm_size = 128M
apc.shm_segments=1
apc.write_lock = 1
apc.rfc1867 = On
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
;# Optional, for "[apc-warning] Potential cache slam averted for key... errors"
;apc.slam_defense = Off

注意, 在修改時可以順便將時區設置成中國時區:
找到
[Date] 部分
加入:

date.timezone = Asia/Chongqing

第四步 安裝MySQL數據庫

為方便省事, 使用apt-get安裝MySQL

sudo apt-get install mysql-server

將mysql的默認字符編碼改成utf-8,以便更好的支持中文字符:
打開mysql配置文件:

nano /etc/mysql/my.cnf

找到[client] 添加:

default-character-set=utf8

找到[mysqld] 添加:

default-character-set=utf8
#設定連接mysql數據庫時使用utf8編碼,以讓mysql數據庫為utf8運行
init_connect='SET NAMES utf8'

重啟mysql服務:

/usr/bin/mysqld_safe --user=mysql &

到這裡, ubuntu 10.04上nginx, php-fpm+apc和mysql的安裝全部完成了.

免費附送

php的啟動方法

/etc/init.d/php-fpm start

重啟

/etc/init.d/php-fpm restart

nginx的啟動方法:

/etc/init.d/nginx start

不間斷nginx的重新裝載新配置文件的方法:

nginx -s reload

重啟前最好先測試一下新配置文件

nginx -t

好了, 希望你的安裝順利. 遇到什麼問題可以留言.

參考文章 : http://vladgh.com/blog/install-nginx-and-php-533-php-fpm-mysql-and-apc

此條目發表在 站長文檔 分類目錄,貼了 , , , , , 標籤。將固定鏈接加入收藏夾。

Ubuntu 10.04 上安裝Nginx 0.8.52 + PHP-fpm 5.3.3 + APC和MySQL》有 4 條評論

  1. kaa 說:

    你好,nginx安裝部分看的不明白。
    我現在的情況是打入:/etc/init.d/nginx start
    沒反應,也不報錯。這是什麼情問。謝謝。,

    • 船長 說:

      在我的系統上顯示的是Starting nginx: nginx.
      你可用ps命令看一下nginx啟動沒有。沒啟動一下找到日誌文件看一下有沒有錯誤信息。

  2. ZAKIR 說:

    最新的php-fpm貌似不再採用PHP-fpm .conf作為配置文件了,找了老半天沒找着。請問PHP-fpm.5.3.5配置文件在哪裡呢?

發表評論