分类: 系统运维
2009-08-15 00:34:39
4.3+lighttpd+nginx+zend opt+eaccele
一\MYSQL及GD等公用库..用RPM方式安装...简单方便....还有APACHE 2.x也用RPM安装...当然也可以自定义安装.
二\php将会有二个版本 4.4.7和5.2.5 都分别教大家如何安装在各个WEBSERVER上面.
三\除APACHE外...ZEUS/LIGHTTPD/NGINX三个系统可共用一个FASTCGI-PHP库.也可以分开...
第一部分:安装CENTOS及MYSQL4/APACHE2基本安装
使用最基本的服务包安装完CENTOS后.第一时间更改yum的配置文件..强制使用我们国内的CENTOS镜象更新我们的软件
具体更改的东西如下:
vi /etc/yum.repos.d/CentOS-Base.repo
1,在所有"mirrorlist........."那行的前面加上"#" 这样就取消了镜象寻找功能
2,将所有"#baseurl......"前面的"#"去掉 ...并更改""为你找到的国内的CENTOS镜象站点网址
我现在可以列出几个给大家参考一下
3,在[[centosplus]下面...更改那二个enabled=0 为enabled=1 //这样你会找到更多的软件.
更改完后..就可以使用以下命令更新系统了[时间可能会长点.看你网速定吧] [
yum -y update
更新后最好重启一下.因为好可能已经更新了内核文件了...
使用YUM安装MYSQL和APACHE2
yum -y install mysql mysql-server mysql-client httpd httpd-devel
在这里我们使用的是Mysql 4版本...如果你要安装MYSQL 5版本..你可以下载源码包回来再重新编译.这并不麻烦
使用这方法安装后..具体些资料如下:
apache2 : 启动脚本在/etc/rc.d/init.d/httpd 使用方法是service httpd start|stop.....
配置文件等放在/etc/httpd/
默认网页文件在/var/www/html/ 这个可以在配置文件里面更改..
mysql : 启动脚本在/etc/rc.d/init.d/mysqld 使用方法是service mysqld start|stop....
配置文件在/etc/my.cnf
数据文件等放在/var/lib/mysql/.....也可以在配置文件里面更改
默认ROOT是空密码,建议启动数据后使用"mysqladmin password 你的新密码"更改
安装完apache2后.我们要使用源码安装apache 1.3.39了..基本也是很简单的.并不是太复杂.
下载源码包,解压,并编译安装 [主要是添加REWITE的支持其它模块暂时不理],安装到/usr/local/apache
cd /tmp
wget
tar zxvf apache_1.3.39.tar.gz
cd apache_1.3.39
./configure --enable-shared=rewrite --prefix=/usr/local/apache
make
make install
cp /usr/local/apache/bin/apachecrl /etc/rc.d/init.d/apache
这样我们可以用 server apache start|stop....控制apache1.3.39服务了
安装目录是/usr/local/apache/
配置文件是/usr/local/apache/conf/httpd.conf
默认网站目录是/usr/local/apache/htdocs/
我们先更改一下端口.好与APACHE2区别起来..
在配置文件中找到Port 80 更改为Port 81
这样二个APACHE都可以同时运行了.
第二部分 PHP4/PHP5编译安装
对于PHP我们选择使用源码编译安装的方法.因为我们将来要配置好几个不同的服务器使用.
但我们还需要安装GD库所需要的东西[使用YUM安装]
yum install -y gd gd-devel libpng libpng-devel libjpeg libjpeg-devel freetype freetype-devel libxml2
先下载二个版本的源码包回来并解压
cd /tmp
wget
wget
tar zxvf php-5.2.5.tar.gz
tar zxvf php-4.4.7.tar.gz
跟着我们编译PHP5.2.5到apache 2[编译是一种等待.强烈建议你边看碟边编译!]
cd /tmp/php-5.2.5
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/sbin/apxs --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
同样.你也可以选择使用PHP4.4.7
cd /tmp/php-4.4.7
./configure --prefix=/usr/local/php4 --with-apxs2=/usr/sbin/apxs --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
二者的编译参数并没有太大的区别.
编译完后..手动修改apache2的配置文件以支持php
vi /etc/httpd/conf/httpd.conf
要改的有如下几处:
一般都在
#AddType application/x-tar .tgz
下加一行
AddType application/x-httpd-php .php
查找
DirectoryIndex index.html...........
将这行改为
DirectoryIndex index.html index.htm index.php
也就是指定了index.html index.htm index.php这三个主页文件[当然你也可以添加其它的]
另外.如果你二个PHP版本都编译的话.那配置文件里会加载二个PHP的.你必须取消一个.
在配置文件里面找到
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so
LoadModule php4_module /usr/lib/httpd/modules/libphp4.so
你随便在其中一行前面加上'#' 这个应该可以理解吧.
这时我们的apache2就支持PHP了.
下一步轮到我们的Apache 1.3.39了.
同样我们需要重新编译PHP4或者PHP5 具体的命令是:
PHP5.2.5
cd /tmp/php-5.2.5
make clean
./configure --prefix=/usr/local/php5 --with-apxs=/usr/local/apache/bin/apxs --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
PHP4.4.7
cd /tmp/php-4.4.7
make clean
./configure --prefix=/usr/local/php4 --with-apxs=/usr/local/apache/bin/apxs --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
同样地..需要按修改apache2的配置文件一样.修改apache1.3.39的配置文件...都一样的方法的.
跟着我们进一步先编译好php4/5使用CGI模式...因为除APACHE外的WEBSERVER都需要PHP以FAST-CGI模式编译的
PHP5.2.5
cd /tmp/php-5.2.5
make clean
./configure --prefix=/usr/local/php5-cgi --enable-force-cgi-redirect --enable-fastcgi --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
PHP4.4.7
cd /tmp/php-4.4.7
make clean
./configure --prefix=/usr/local/php4-cgi --enable-force-cgi-redirect --enable-fastcgi --with-gd --enable-trace-vars --with-zlib -with-mysql --enable-mbstring=all --disable-ipv6
make
make install
这里我们需要安装PHP到不同的目录.这也是为了以后方便的...分别安装到/usr/local/php4-cgi 和/usr/local/php5-cgi目录下..
至此我们的PHP编译完成了..
第三部分 安装LIGHTTPD /ZEUS /NGINX
先是LIGHTTPD
下载源码包/解压/编译安装到/usr/local/lighttpd
cd /tmp
wget
tar zxvf lighttpd-1.4.18.tar.gz
cd lighttpd-1.4.18
./configure --prefix=/usr/local/lighttpd
make
make install
cp doc/lighttpd.conf /etc
#复制配置文件到/etc目录下
修改/etc/lihttpd.conf如下:
在server.modules 下面找到"mod_fastcgi",将这行前面的#去掉
修改server.document-root 后面的目录为网站根目录..比如"/var/www/html"
并在下面添加
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/php4-cgi/bin/php"
)
)
)
如果是php5那bin-path对应的就是/usr/local/php5-cgi/bin/php-cgi
随便你选择一个版本..
在运行LIHTTPD之前...先添加LOG目录.否则出错
mkdir /var/log/lighttpd
自此 LIHTTPD安装完 [应用的时候.强烈建议你强制lighttpd运行在非ROOT用户下.方法是修改/etc/lighttpd.conf相应的USER/GROUP值.这应该不难理解.
复制个启动脚本...但需要手动修改一点.
cp /tmp/lighttpd-1.4.18/doc/rc.lighttpd.redhat /etc/rc.d/init.d/lighttpd
修改LIGHTTPD_CONF_PATH=值为"/etc/lighttpd.conf"
修改lighttpd=值为"/usr/local/lighttpd/sbin/lighttpd"
service lighttpd start|stop|......
跟着轮到Nginx了..
下载/解压/编译安装
cd /tmp/
wget
tar zxvf nginx-0.5.34.tar.gz
cd nginx-0.5.34
./configure --prefix=/usr/local/nginx
make
make install
cp conf/fastcgi_params /usr/local/nginx/conf
#复制FASTCGI配置头到配置文件目录
echo "fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;">>/usr/local/nginx/conf/fastcgi_params
#添加一个配置头,没它可不行!!!
这时,我们需要NGINX外挂一个FASTCGI进程来运行PHP.
这样.我们就需要用到一个程序来自lighttpd的swawn-fcgi
cp /usr/local/lighttpd/bin/spawn-fcgi /usr/local/nginx/sbin
在运行NGINX之前.我们需要先运行这个FCGI程序.
具体参数如下:
spawn-fcgi -f [PHP程序路径] -p [监听端口] -C [多少个进程] -P [PID文件存放地址] -u [用户名] -g [组名]
结合我们的就是
/usr/local/nginx/sbin/spawn-fcgi -f /usr/local/php4-cgi/bin/php -p 8008 -C 20 -u nobody -g nobody -a 127.0.0.1
这时我们需要配置nginx的配置文件/usr/local/nginx/conf/nginx.conf
下面是我的一个例子,大家可以参考一下
user nobody;
worker_processes 2;
error_log logs/error.log info;
#pid logs/nginx.pid;
worker_rlimit_nofile 2048;
events
{
use epoll;
worker_connections 2048;
}
http
{
include conf/mime.types;
default_type application/octet-stream;
#tcp_nopush on;
keepalive_timeout 60;
#gzip on;
server
{
listen 83; #这里修改监听端口
server_name localhost;
index index.html index.htm index.php;
root /var/www/html; #这里修改网站根目录
location ~ .*\.php?$
{
include conf/fastcgi_params;
fastcgi_pass 127.0.0.1:8008;#8008端口要与FCGI监听端口一致
fastcgi_index index.php;
}
}
}
这时我们需要注意权限问题了.有三个地方,
一是PHPFCGI运行用户,二NGINX运行用户身份,三是网站目录的身份..
如果运行有什么出错的话.请先检查这些权限问题
现在我们就可以运行了
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
另外.我也随便改做了一个nginx的启动脚本/etc/rc.d/init.d/nginx
#!/bin/bash
# v.0.0.1
# create by jackbillow at 2007.10.15
# nginx - This shell script takes care of starting and stopping nginx.
#
# chkconfig: - 60 50
# description: nginx [engine x] is light http web/proxy server
# that answers incoming ftp service requests.
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
nginx_path="/usr/local/nginx"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
fcgi_pid="/var/run/fcgi.pid"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginx_path/sbin/nginx ] || exit 0
RETVAL=0
prog="nginx"
start() {
# Start daemons.
if [ -e $nginx_pid -a ! -z $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
if [ -e $nginx_path/conf/nginx.conf ];then
echo -n $"Starting $prog: "
$nginx_path/sbin/nginx -c $nginx_path/conf/nginx.conf
$nginx_path/sbin/spawn-fcgi -a 127.0.0.1 -p 8008 -C 15 -u nobody -f /usr/local/php-cgi/bin/php -P $fcgi_pid 2>/dev/null
#如果要修改PHP的版本.请更改 -f后面的参数
RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog"
}
echo
else
RETVAL=1
fi
return $RETVAL
}
# Stop daemons.
stop() {
echo -n $"Stopping $prog: "
#killproc -d 10 $nigx_path/sbin/nginx
NGINXPID=`cat "$nginx_pid"` 2>dev/null
FCGIPID=`cat "$fcgi_pid"` 2>/dev/null
/bin/kill "$FCGIPID" 2>/dev/null
/bin/kill "$NGINXPID" 2>/dev/null
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reconfigure)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|reconfigure|status}"
exit 1
esac
exit $RETVAL
同时要设置运行权限
chmod 755 /etc/rc.d/init.d/nginx
至此.NGINX基本完成!
最后一个是zeus.其实ZEUS是最容易安装的.
我就方便大家.转些资料过来吧...
以下内容部分摘自http://www.discuz.net/viewthread.php?tid=85432Discuz作者Crossday的
Zeus 4.3+php+Zend Optimizer for Linux安装指南(第二版)
在网上找到ZEUS4.3的破解文件及原文件.[我的是朋友发给我的.所以无法提供给大家]
我得到的文件是Zeus_43_Linux.zip
cd /tmp
unzip Zeus_43_Linux.zip
cd Zeus_43_Linux
tar zxvf Zeus_43_Linux-x86.tgz #里面有这个压缩文档
cd Zeus_43_linux-x86
./zinstall
按CTRL+C 打入accept
Where should the product be installed? [/usr/local/zeus]: 回车
Installation options:
1. Full install of both admin server & web server
2. Stand-alone install of admin server
3. Clustered install of web server
H. Help
Choose installation option [1]: 回车
Enter the key filename, or leave blank for unlicensed mode: /tmp/Zeus_43_Linux/license.key (这里的 key 是假的,但要存在,文件就在刚刚解压的ZIP下面,真正的破解在之后覆盖二进制程序中进行)
Please choose a password for the admin server: ****** (输入管理员密码)
Re-enter: ****** (重新输入密码)
然后一直按回车就OK了
以上是安装过程 很容易的就装好了 下面进行破解
rm -f /usr/local/zeus/web/bin/zeus.web
cp -f /tmp/Zeus_43_Linux/zeus.web /usr/local/zeus/web/bin/zeus.web
chmod 755 /usr/local/zeus/web/bin/zeus.web
rm -f /usr/local/zeus/php/php.zeus #删除ZEUS自带的PHP
ln -s /usr/local/php5-cgi/bin/php-cgi /usr/local/zeus/php/php.zeus #给我们的PHP做一个符号连接,选择哪一个PHP版本.由这里决定
service zeus restart #重启ZEUS[ZEUS自带有脚本...service zeus start|stop|restart]
设置Zeus
访问 (你的域名地址或IP地址)
用户名 admin 密码:刚才设定的密码
进入Zeus管理控制台,点Create a Virtual Server 把相关的六个选项填好 不多说
注意:1. 指向的web目录要有权限读 2. 如果在 Host Name and Port 写域名,请确定该域名是绑定到当前IP的,否则请填写当前服务器IP地址
另外我们要注意绑定的端口..不要与其它WEBSERVER冲突..我们使用84端口了!
进入刚刚加入的virtual server,点Third Party中的PHP
Enabling PHP Support:选 Enabled
将 Specify the maximum number of PHP processes that should be created for each user:
由默认的 8 改为 5
将 Specify the maximum number of requests that an individual PHP process should handle. This prevents errant PHP processes from consuming too much memory.
由默认的 500 改为 200
其实这样仍然能够相应 5*200=1000个并发PHP请求了,足矣。
Apply Changes,然后点上面的 This configuration has been modified. Click here for details or to make it take effect.
然后 Commit
点左边Url Handling下面的Directory Requests
Index Files中的内容为 index.html, index.htm, index.shtml, index.cgi, index.php
如果不需要 index.shtml, index.cgi,可以将其去掉
!!重要!!下面的 Directory Listing,一定要Disabled,不然有安全问题。
回到Zeus的9090端口管理界面 把刚才设置的虚拟主机Start,放一个 phpinfo 进去,应该已经可以看到PHP装好了。
自此.ZEUS也基本上安装完成了!!
跟着我们要研究每一个PHP的配置与优化了...
我们先要理解.我们一共有多少个PHP独立配置
共有四个.就是二个PHP.独立模式和CGI模式...配置文件分别位于
/usr/local/php4/lib/
/usr/local/php4-cgi/lib/
/usr/local/php5/lib/
/usr/local/php5-cgi/lib/
我们需要从/tmp/php-4.4.7 和 /tmp/php-5.2.5 目录下复制标准配置文件过去
cp /tmp/php-4.4.7/php.ini-dist /usr/local/php4/lib/php.ini
cp /tmp/php-4.4.7/php.ini-dist /usr/local/php4-cgi/lib/php.ini
cp /tmp/php-5.2.5/php.ini-dist /usr/local/php5/lib/php.ini
cp /tmp/php-5.2.5/php.ini-dist /usr/local/php5-cgi/lib/php.ini
首先我们要先修改用于nginx的PHP的PHP.INI 找到
#cgi.fix_pathinfo=0
改为
cgi.fix_pathinfo=1
其它暂时不用理会.
第四部分 安装Zend Optimizer和eAccelerator优化
先下载ZEND OPT.解压/并安装
cd /tmp
wget
tar zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
cd ZendOptimizer-3.3.0a-linux-glibc21-i386
./install
这时一直可以按回车.直到需要你输入PHP.INI目录时.
我们就输入/usr/local/php/lib/
然后一直按回车就OK了
跟着ZENDOPT会自动改了/usr/local/php/lib/php.ini到它自已的目录
你可以再改回来.或者我们并不需要它更改PHP.INI,因为我们一会再全部自己改过!
rm -f /usr/local/php4/lib/php.ini
cp /tmp/php-4.4.7/php.ini-dist /usr/local/php4/lib/php.ini
ZEND OPT暂时先放到一边.我们跟着要安装eAccelerator了
先下载回来/解压/并配置缓存文件目录
cd /tmp
wget
unzip eaccelerator-0.9.5.2.zip
mkdir /tmp/cache
chown nobody.nobody /tmp/cache
chmod 777 /tmp/cache
这时,我们要分四次编译安装它了.
特别注意,暂时有个小问题,因为我们的APACHE2与APACHE1都是共用二个PHP的编译配置.而在本例中APACHE1.3.39是后编译的,
现在我发现在这个情况下.APACHE2的PHP加载不了ZENDOPT模块.[EA也可能无法加载.]
但APACHE 1.3.39不受影响.
要解决这个问题,一是再为APACHE2编译PHP4/5到不同的目录.二是APACHE2与APACHE1分别选择一个PHP版本.
这些都可以由你自由选择....不必陪我一起变态...呵
PHP4 CLI模式
cd /tmp/eaccelerator-0.9.5.2
make clean
/usr/local/php4/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php4/bin/php-config
make
cp modules/eaccelerator.so /usr/local/php4/lib
PHP5 CLI模式
cd /tmp/eaccelerator-0.9.5.2
make clean
/usr/local/php5/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php5/bin/php-config
make
cp modules/eaccelerator.so /usr/local/php5/lib
PHP4 CGI模式
cd /tmp/eaccelerator-0.9.5.2
make clean
/usr/local/php4-cgi/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php4-cgi/bin/php-config
make
cp modules/eaccelerator.so /usr/local/php4-cgi/lib
PHP5 CGI模式
cd /tmp/eaccelerator-0.9.5.2
make clean
/usr/local/php5-cgi/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php5-cgi/bin/php-config
make
cp modules/eaccelerator.so /usr/local/php5-cgi/lib
跟着要添加PHP配置到PHP.INI里面了...
[zend]
zend_extension = eaccelerator.so ;这里要修改到各个PHP.INI所在目录
eaccelerator.shm_size = "0"
eaccelerator.cache_dir = "/tmp/cache"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = 0
eaccelerator.log_file = "/var/log/eaccelerator_log"
eaccelerator.name_space = ""
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
zend_optimizer.version=3.3.0a
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
将上面代码一一加到各个PHP.INI的最后面
/usr/local/php4/lib/php.ini
/usr/local/php5/lib/php.ini
/usr/local/php4-cgi/lib/php.ini
/usr/local/php5-cgi/lib/php.ini
并作相应的修改就是将zend_extension = eaccelerator.so 这行修改为对应的目录
比如php4 cli就是 zend_extension = /usr/local/php4/libeaccelerator.so
wget
tar zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
sudo ./configure
sudo make
sudo make install
排错:
RubyFCGI
wget
tar zxvf ruby-fcgi-0.8.6.tar.gz
cd ruby-fcgi-0.8.6
sudo ruby install.rb config
sudo ruby install.rb setup
sudo ruby install.rb install
测试一下:
irb(main):001:0> require 'fcgi'
发现不能访问,查看error.log发现
2007-10-19 04:20:36: (mod_fastcgi.c.1032) If you're trying to run PHP as a FastCGI backend, make sure you're using the FastCGI-enabled version.
You can find out if it is the right one by executing 'php -v' and it should display '(cgi-fcgi)' in the output, NOT '(cgi)' NOR '(cli)'.
For more information, check %3AModFastCGI#preparing-php-as-a-fastcgi-programIf this is PHP on Gentoo, add 'fastcgi' to the USE flags.
在这里出现了一个问题,晚上很多人都是抄来抄去的,明明是配置了--enable-fastcgi,就应该成功了的,在php的/php-5.2.4/sapi/cgi/README.FastCGI
中也是这么说的,原来在哪里呢?输入php -v ,出现的是
PHP 5.2.4 (cli) (built: Oct 19 2007 05:43:31)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
而在bin目录下还有一个文件叫php-cgi,输入php-cgi -v才出现
PHP 5.2.4 (cgi-fcgi) (built: Oct 19 2007 05:43:18)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
问题就在这里,所以,上面的配置应该改为
fastcgi.server = ( ".php" =>
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/home/ixafei/server/php/bin/php-cgi"
))
)
重启lighttpd服务器
输入地址,成功出现phpinfo熟悉的界面