作者: Bendy QQ:67052 EMAIL: 67052@qq.com 这几天有空..没事做...给新手们写点教程.看能否在CU混个精华吧.
本文将从CENTOS基本安装起.一步一步手把手教学[为此我专门安装了一个VM干净系统] 本文将实现以下系统安装
一/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......"前面的"#"去掉 ...并更改"http://mirror.centos.org/centos/"为你找到的国内的CENTOS镜象站点网址 我现在可以列出几个给大家参考一下 http://ftp.hostrino.com/pub/centos/ http://mirror.be10.com/centos/ http://mirrors.ta139.com/centos/ 3,在[[centosplus]下面...更改那二个enabled=0 为enabled=1 //这样你会找到更多的软件.
更改完后..就可以使用以下命令更新系统了[时间可能会长点.看你网速定吧] [
更新后最好重启一下.因为好可能已经更新了内核文件了... 使用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 http://apache.mirror.phpchina.com/httpd/apache_1.3.39.tar.gz 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 http://cn.php.net/get/php-5.2.5.tar.gz/from/cn2.php.net/mirror wget http://cn.php.net/get/php-4.4.7.tar.gz/from/cn2.php.net/mirror 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 http://www.lighttpd.net/download/lighttpd-1.4.18.tar.gz 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目录.否则出错
自此 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 http://sysoev.ru/nginx/nginx-0.5.34.tar.gz 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 访问 http://your.com:9090 (你的域名地址或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 http://www.phpchina.com/download/soft/zend/optimizer/3.3.0/ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz 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 http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.zip 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
至此.....全文完.花了我大半天时间.... 本文只是将这几个WEBSERVER以最基本的形式架起来...供学习用.如果要应用.很多东西需要加强的. 欢迎大家交流相关经验.. Bendy QQ:67052 EMAIL: 67052@qq.com BTW 欢迎转载.