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应该是要新建的。如果你的是刚安装好的话。