Web Digest

还有众多网络文摘,仅供个人收藏和参考

Posts Tagged ‘lemp

在Ubuntu 8.04上建立LEMP环境 (1)- PHP-FPM

leave a comment »

PHP-FPM是以PHP源代码的补丁形式存在的,所以必须从源代码开始编译。

第一步:准备基本工具,编译环境和所需要的库

sudo apt-get install build-essential autoconf automake vim wget patch
sudo apt-get install libtool libmhash-dev libltdl3-dev  libmcrypt-dev libxml2-dev libmysqlclient15-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libpng12-dev libjpeg-dev libsasl2-dev libfreetype6-dev

第二步:下载PHP和PHP-FPM的源代码,并打上补丁

cd /usr/local/src/
sudo wget http://id.php.net/get/php-5.2.10.tar.gz/from/us.php.net/mirror
sudo tar zvxf php-5.2.10.tar.gz
sudo wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz
sudo gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | sudo patch -d php-5.2.10 -p1
cd php-5.2.10

第三步:编译安装

udo ./configure  –enable-fastcgi –enable-fpm –enable-discard-path –enable-safe-mode –enable-force-cgi-redirect –with-zend-vm=GOTO –with-mysql –with-mysql-sock –with-mysqli –with-mcrypt  –enable-mbstring –with-mhash –enable-json –disable-pdo –with-pgsql –with-curl –with-curlwrappers –disable-debug –disable-reflection  –disable-rpath –enable-inline-optimization –with-bz2 –with-libxml-dir –enable-xml –with-xmlrpc –with-iconv –with-zlib –enable-sockets –enable-sysvsem –enable-shmop –enable-sysvshm –enable-pcntl –enable-mbregex –enable-zip –enable-soap –with-pcre-regex –with-gettext –enable-sqlite-utf8  –with-ttf  –with-openssl –enable-calendar   –enable-dba   –enable-ftp   –with-gd   –with-freetype-dir –with-jpeg-dir  –with-png-dir  –enable-gd-native-ttf   –enable-gd-jis-conv  –enable-bcmath –enable-exif –with-mime-magic –without-pear

上面加–without-pear 是因为php5.2.10有个莫名其妙的Bug. 如果直接以–with-pear来编译的话,编译可以通过,但是到了Make Install的时候会有如下错误:
#Fatal error: Error: cannot open phar
#”/root/soft/php-5.2.10/pear/install-pear-nozlib.phar” in
#/path/php-5.2.10/pear/install-pear-nozlib.phar on line 795
#make[1]: *** [install-pear-installer] Error 255
#make: *** [install-pear] Error 2
所以只能在稍后单独安装Pear

sudo  make all install
#这步时间最长,可以起来活动活动
sudo  strip /usr/local/bin/php-cgi

sudo apt-get install php-pear #单独安装Pear

到了这里PHP基本安装完成了,但是5.2.10又会有个莫名奇妙的问题,必须首先删除以下目录
/usr/local/lib/php/.channels/
/usr/share/pear/.channels/
然后
pear update-channels

否则接下来用pecl安装其他模块时会遇到以下错误 (这叫什么事啊,全让我赶上上了)
“pecl.php.net is using a unsupported protocal – This should never happen.” error

sudo pecl install memcache
sudo pecl install apc
#会问是否用于Apache,要说no, 而且要纯小写的no,“No”是不行的
sudo pecl install syck-bet

到了这步就差不多了,接下来整理下环境,开始基本配置:

sudo cp /usr/local/src/php-5.2.10/php.ini-recommended /usr/local/lib/php.ini

sudo /usr/local/lib/php.ini

找到extension_dir
添加一句
extension_dir = “/usr/local/lib/php/extensions/no-debug-non-zts-20060613”
刚才PECL安装的APC和Memcache,sysbk模块都应该在那里

再添加动态模块加载语句:
extension=apc.so
extension=memcache.so
extension=syck.so

[apc]
 apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 30
apc.optimization = 0
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 2000
apc.mmap_file_mask = /tmp/apc.XXXXXX

保存退出Vi

安装memcached实体程序
sudo apt-get install memcached

建立etc下的符号连接,便于启动
sudo mkdir /etc/php/
sudo ln -s /usr/local/lib/php.ini /etc/php/php.ini
sudo ln -s /usr/local/etc/php-fpm.conf /etc/php/php-fpm.conf

在打开文件/etc/php/php-fpm.conf, 修改以下高亮的几行

In Linux read/write permissions must be set in order to allow connections from web server.
Many BSD-derrived systems allow connections regardless of permissions.
<value name=”owner”>www-data</value>
<value name=”group”>www-data</value>

Unix user of processes
<value name=“user”>www-data</value>

Unix group of processes
<value name=“group”>www-data</value>

然后用sudo php-fpm start试一下,如果能正常启动进程,就大致没问题了

第四步:设置启动脚本:

php-fpm默认已经提供了启动脚本,只需要在/etc/init.d/下建立相应符号连接就可以了
ln -s /usr/local/sbin/php-fpm /etc/init.d/php-fpm
然后更新rc的Level, 原理参见这篇文章
update-rc.d -f php-fpm defaults

需要加载Memccached话,

使用以下命令:

/usr/local/bin/memcached -u root -d -l 127.0.0.1 -p 11000 -m 128
表示在本地建立一个memcached进程, 端口11000,使用内存上限128M

暂时告一段落,起来活动一下

参考文章:

1. NGINX + PHP-FPM + APC = Awesome

2. Running SW forum (IPB3) and SW wiki (mediawiki) with Nginx + php-fpm + APC + Memcache

3. Video site for sarnworld – Part 2 (Setting up Nginx Webserver with SM Script)

4. Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)

5.Nginx 0.7.x + PHP 5.2.10 +Mysql 5.1.37 on CentOs 5.2

www-data

Written by admin

October 11, 2009 at 5:45 am

Posted in 网站|Site

Tagged with , , ,