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配置文件在哪里呢?

ZAKIR 进行回复 取消回复