Centos5.5上LNMP(spawn-fcgi)平台搭建

服务器换机房,且需要重装系统。老大要求。在服务器上安装centos5.5上安装基本软件外其他一概不装。以最小化安装方式。。。于是环境搭建就交给我了。omg。之前装过一次惨不忍睹,全编译安装才用gcc一个包一个包的编译。。找包的依赖库头都是大的。折腾了近一个星期。。。好吧。这次老大好歹还发了个安装步骤及需要的包。方便点了。
好了。开始。 
新整理的一些依赖包集合,在这里

首先安装包:

|–php依赖包
|–eaccelerator-0.9.6.1.tar.bz2
|–freetype-2.4.2.tar.gz
|–gd-2.0.35.tar.gz
|–gettext-0.18.1.1.tar.gz
|–jpegsrc.v8b.tar.gz
|–libiconv-1.13.1.tar.gz
|–libmcrypt-2.5.7.tar.gz
|–libpng-1.2.44.tar.gz
|–libxml2-2.7.7.tar.gz
|–mcrypt-2.6.8.tar.gz

|–mhash-0.9.9.9.tar.gz

|–zlib-1.2.5.tar.gz
|–mysql

|–mysql-5.0.89-linux-i686-glibc23.tar.gz
|–nginx
|–nginx-0.8.49.tar.gz
|–pcre-8.10.tar.gz
|–php扩展
|–PDO_MYSQL-1.0.2.tgz
|–php-5.2.14.tar.gz
|–ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

|–spawn管理包
|–spawn-fcgi-1.6.3.tar.gz
|–vsftpd
|–vsftpd-2.3.2.tar.gz

~~~
好了系统安装好了。默认是安装了ssh的。虽然可以用psftp.exe通过ssh来上传文件;但ftp还是必须的。所以我首先安装的是ftp;当然vsftpd.2.3.3.tar.gz还是通过psftp上传上去的。安装方法看这里:Centos5.5上vsftpd安装使用

首先把这些软件都上传到服务器某个目录下。我是这样安装的lnmp都是安装在我自定义的目录下的。所以先建了这些目录。
/opt/software #存放所以软件包的地方
/opt/wwwroot  #站点文件存放地方
/opt/module/   # mysql nginx php安装的文件的目录
/opt/data/   # data目录存放入mysql data数据。或备份数据

一、安装nginx

groupadd www
useradd -g www www
安装先决条件
tar -zxvf pcre-8.10.tar.gz
cd pcre-8.10
./configure
make&&make install

tar zxvf nginx..gz
cd nginx
./configure –user=www –group=www –prefix=/opt/module/nginx –with-http_stub_status_module –with-http_ssl_module
make&make install

启动nginx
/opt/module/nginx/sbin/nginx &
注意:安装好后,且确定启动了。那么必须要在iptables防火墙中开启80端口。不然可能怎么都看不到“welcome to nginx”

修改iptables方法如下。
可以先查看iptables端口状态;/etc/init.d/iptables status
vi /etc/sysconfig/iptables
可以看到22端口的那一行。
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
如果你要添加80端口那么直接复制22这一行。粘贴到-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited 的上面,同样如果你要开发3306端口那么也这样复制一段把22修改为3306则可。保存。iptables必须要重启来能使用。service iptables restart;于是你就可以看到welcome to nginx了。

二、安装mysql
mysql-5.0.89-linux-i686-glibc23.tar.gz 由于mysql是二进制包。所以还是比较方便的。
直接解压。然后移动。

mv mysql-5.0.89-linux-x86_64-glibc23 /opt/module/mysql
cd /opt/module/mysql
groupadd mysql
useradd -g mysql mysql
chown -R mysql .
chgrp -R mysql .
chown -R root .

./scripts/mysql_install_db –user=mysql –basedir=/opt/module/mysql –datadir=/opt/data/mysql
cd /opt/data/mysql/
cp /opt/module/mysql/support-files/my-huge.cnf /etc/my.cnf
cp /opt/module/mysql/support-files/mysql.server  /etc/rc.d/init.d/mysqld

chmod 755 /etc/rc.d/init.d/mysqld
chkconfig –add mysqld
chkconfig mysqld on

启动 /opt/module/mysql/bin/mysqld_safe &

注:这里可能会出现错误。
[root@localhost mysql]# Starting mysqld daemon with databases from /opt/module/mysql/data
STOPPING server from pid file /opt/module/mysql/data/localhost.localdomain.pid
101029 17:49:43  mysqld ended
这是因为basedir与datadir目录未设置的问题。那么在/etc/my.cnf  [mysqld]里和
/etc/rc.d/init.d/mysqld里面都上
添加basedir = /opt/module/mysql   datadir=/opt/data/mysql  (这都是我的目录,相应改成你的目录)

再次启动。就应该可以了。

三、php安装

首先是php的依赖包!
libiconv-1.13.1.tar.gz
libmcrypt-2.5.8.tar.gz
libxml2-2.7.7.tar.gz
libpng-1.2.44.tar.gz
mhash-0.9.9.9.tar.gz
mcrypt-2.6.8.tar.gz
freetype-2.4.2.tar.gz
jpegsrc.v8b.tar.gz
gd-2.0.35.tar.gz

gettext-0.18.1.1.tar.gz

zlib-1.2.5.tar.gz

 

tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure –prefix=/usr/local
make
make install
cd ../

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
cd libltdl/
./configure –enable-ltdl-install
make
make install
cd ../../

tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln命令在某个地方建立一个同步的链接
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config


tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make
make install
cd ../

tar -zxvf freetype-2.4.2.tar.gz
cd freetype-2.4.2/
./configure –prefix=/opt/module/lib/freetype
make && make install
cd ../

tar zxvf libpng-1.2.44.tar.gz
cd libpng-1.2.44/
./configure
make && make install
cd ../

tar zxvf jpegsrc.v8b.tar.gz
cd jpeg-8b/
./configure –enable-static –enable-shared
make && make install
cd ../

tar zxvf gd-2.0.35.tar.gz
cd gd-2.0.35/
./configure –prefix=/opt/module/lib/gd –with-freetype=/opt/module/lib/freetype –with-jpeg –with-png
make
make install
cd ../

tar zxvf gettext-0.18.1.1.tar.gz
cd gettext-0.18.1.1/
./configure
make
make install
cd ../

tar zxvf libxml2-2.7.7.tar.gz
cd libxml2-2.7.7/
./configure –prefix=/opt/module/lib/libxml
make && make install

cd ../

 

tar zxvfzlib-1.2.5.tar.gz

cd zlib-1.2.5

./configure

make&&make install

cd ../

解压php安装包。
tar -zxvf php-5.2.14.tar.gz
cd php-5.2.14/
./configure –prefix=/opt/module/php –with-config-file-path=/opt/module/php/etc –with-mysql=/opt/module/mysql –with-mysqli=/opt/module/mysql/bin/mysql_config –with-iconv-dir=/usr/local –with-freetype-dir=/opt/module/lib/freetype –with-jpeg-dir=/usr/local  –with-png-dir=/usr/local  –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-discard-path –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-fastcgi –enable-fpm –enable-force-cgi-redirect –enable-mbstring –with-mcrypt –with-gd=/opt/module/lib/gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-ldap –with-ldap-sasl –with-xmlrpc –enable-zip –enable-soap –with-gettext

make ZEND_EXTRA_LIBS=’-liconv’
make install 
# 
注:这里可能会出现错误。

Installing PEAR environment:      /opt/module/php/lib/php/
/opt/software/php-5.2.14/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
make[1]: *** [install-pear-installer] Error 127
make: *** [install-pear] Error 2
说没找到libmysqlclient.so.15 那么解决方法。
cp /opt/module/mysql/lib/libmysqlclient.so.15 /usr/lib
再次make install 搞定!

cp php.ini-dist   /opt/module/php/etc/php.ini

四、安装spawn-fcgi-1.6.3.tar.gz

tar zxvf spawn-fcgi-1.6.3.tar.gz
cd spawn-fcgi-1.6.3
./configure
make && make install

五、php和nginx整合

修改nginx配置文件nginx.conf
=========下面这一段添加到nginx.conf中的http{} 之间===========
#upstream
upstream  spawn {
# ip_hash;
server   127.0.0.1:9000 max_fails=0 fail_timeout=30s;
server   127.0.0.1:9001 max_fails=0 fail_timeout=30s;
}

======================================================
在server{} 中的 index 后面加上index.php。
然后把这一段的注释取消。
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /opt/module/nginx/html$fastcgi_script_name;
#原scripts改为你需要测试的目录,我这里是/opt/module/nginx/html;否则会报这样的“Nginx no input file specified”错。
include        fastcgi_params;
}

nginx.conf配置完成。

nginx启动,以此为例;可以先车市nginx配置是否正确,/opt/module/nginx/sbin/nginx -t 如果没错误,则可/opt/module/nginx/sbin/nginx &直接启动了。

nginx重启 /opt/module/nginx/sbin/nginx -s reload

 

 

创建spawn-fcgi文件。
#mkdir /opt/module/php/sbin
# vi /opt/module/php/sbin/spawn-fcgi

#! /bin/sh
set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="spawn-fcgi daemon"
NAME=spawn-fcgi
DAEMON=/usr/local/bin/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

d_start() {
$DAEMON -a 127.0.0.1 -p 9000 -C 128 -u www -g www -f /opt/module/php/bin/php-cgi > /dev/null 2>&1

$DAEMON -a 127.0.0.1 -p 9001 -C 128 -u www -g www -f /opt/module/php/bin/php-cgi > /dev/null 2>&1 || echo -n " already running"

spawn-fcgi写入完成后,要让他的权限为可执行,不然不能正常运行。

chmod a+x spawn-fcgi 

#
#注意这里/opt/module/php/bin/php-cgi要改为你自己的php安装目录。
#

}

d_stop() {
/usr/bin/killall -9 php-cgi > /dev/null 2>&1 || echo -n " not running"
}

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac

exit 0

同样都要开放相应端口,这里的是9000和9001。
启动!/opt/module/php/sbin/spawn-fcgi start
如看到“Starting spawn-fcgi daemon: spawn-fcgi.”  则表示启动成功了。

然后再/opt/module/nginx/html 目录中放入index.php ;其中写上 phpinfo(); 如正常的话,则可以看到配置信息了。


六、安装扩展

tar -jxvf eaccelerator-0.9.6.1.tar.bz2 //php加速扩展
cd eaccelerator-0.9.6.1
/opt/module/php/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/opt/module/php/bin/php-config –prefix=/opt/module/lib/eaccelerator
make && make install

pdo_mysql
/opt/module/php/bin/phpize
./configure –with-php-config=/opt/module/php/bin/php-config –with-pdo-mysql=/opt/module/mysql
Make && make install
Extension_dir = /opt/module/php/lib/php/extensions/no-debug-non-zts-20060613/

vi php.ini
extension_dir = "/opt/module/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension=eaccelerator.so
extension=pdo_mysql.so

tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install
按步骤安装。注意最后一下会询问你是否采用的是apache服务器,这里我们用的是nginx所以点击NO

好了。重启php-cgi ;杀掉所以php-cgi 进程。killall -9 php-cgi  再次启动 /opt/module/php/sbin/spawn-fcgi start

如果一切顺利,那么就可以找到pdo,pdo_mysql, eaccelerator  ,with Zend Extension Manager v1.2.2!
大功告成!

假如你的站点配置太多了。不可能全部都写到nginx.conf ;可以这样。在nginx.conf 的 http 中最下面添加。
include /opt/module/nginx/conf/vhosts/*;

然后新建。
#mkdir /opt/module/nginx/conf/vhosts
#vi vhosts/www.linuxtone.org.conf
server
{
listen       80;
server_name  www.test.org .test.org;
index index.html index.htm index.php;
root  /opt/wwwroot/test.com;
location ~ .*\.php?$
{
fastcgi_pass spawn;
include /opt/module/nginx/conf/fastcgi.conf;
fastcgi_index  index.php;
}
location ~* \.(js|css|jpg|jpeg|gif|png)$ {
if (-f $request_filename) {
access_log   off;
expires      1d;
break;
}
}
}
重启nginx;
在/opt/wwwroot/test.com 目录存入index.php 文件;如正常显示,则配置成功!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*