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
你好,nginx安裝部分看的不明白。
我現在的情況是打入:/etc/init.d/nginx start
沒反應,也不報錯。這是什麼情問。謝謝。,
在我的系統上顯示的是Starting nginx: nginx.
你可用ps命令看一下nginx啟動沒有。沒啟動一下找到日誌文件看一下有沒有錯誤信息。
最新的php-fpm貌似不再採用PHP-fpm .conf作為配置文件了,找了老半天沒找着。請問PHP-fpm.5.3.5配置文件在哪裡呢?
PHP-fpm .conf應該是要新建的。如果你的是剛安裝好的話。