| 
| 
 
| 
  
    | 
      
        | Apache PHP MySQL Zend GD OpenSSL vsftpd 完全编译安装手册  |  
        |  |  
        
          | 系统 Debian Linux v3.1r0 (Sarge) Kernel v2.6.11 i686
 
 安装方式:源码编译
 版权:本文章可以任意转载,但请注明作者和出处,谢谢
 作者:keelort
 微米天空: http://www.micronsky.net
 原文链接: http://bbs.micronsky.net/viewtopic.php?t=160
 
 ################
 ##### 软件 #####
 ################
 
 Apache v2.0.54 官方主页: http://www.apache.org
 http://www.apache.org/dist/httpd/httpd-2.0.54.tar.gz  [7.16MB]
 
 PHP v4.3.11 官方主页: http://www.php.net
 http://cn.php.net/distributions/php-4.3.11.tar.gz  [4.64MB]
 
 Zend Optimizer v2.5.10 官方主页: http://www.zend.com
 http://downloads.zend.com/optimizer/2.5.10/ZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz  [3.36MB]
 
 MySQL v4.0.24 官方主页: http://www.mysql.com
 http://ftp.stu.edu.tw/pub/Unix/Database/Mysql/Downloads/MySQL-4.0/mysql-4.0.24.tar.gz  [16.1MB]  phperz~com
 
 GD Library v2.0.33 官方主页: http://www.boutell.com/gd/
 http://www.boutell.com/gd/http/gd-2.0.33.tar.gz  [573KB]
 
 FreeType v2.1.10 官方主页: http://www.freetype.org
 http://savannah.nongnu.org/download/freetype/freetype-2.1.10.tar.gz  [1.31MB]
 
 Jpeg v6b 官方主页: http://www.ijg.org
 ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz  [598KB]
 
 LibPNG v1.2.8 官方主页: http://www.libpng.org/pub/png/
 http://switch.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8.tar.gz  [498KB]
 
 OpenSSL v0.9.7g 官方主页: http://www.openssl.org
 http://www.openssl.org/source/openssl-0.9.7g.tar.gz  [2.98MB]
 
 vsftpd v2.0.3 官方主页: http://vsftpd.beasts.org
 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz  [149KB]
 
 zlib v1.2.2 官方主页: http://www.gzip.org/zlib/  www~phperz~com
 http://www.zlib.net/zlib-1.2.2.tar.gz  [420KB]
 
 ClibPDF v2.02-r1-1 官方网站: http://www.fastio.com
 http://www.fastio.com/clibpdf202r1.tar.gz  [836KB]
 
 mod_limitipconn v0.22 官方网站: http://dominia.org/djao/
 http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz  [6.18KB]
 
 Bandwidth Module v0.6 官方网站: http://www.ivn.cl/apache/
 http://www.ivn.cl/apache/bw_mod-0.6.tgz  [28.5KB]
 
 Apache DoS Evasive Maneuvers Module v1.10 官方网站: http://www.nuclearelephant.com/projects/dosevasive/
 http://www.nuclearelephant.com/projects/dosevasive/mod_dosevasive_1.10.tar.gz  [19.1KB]
 
 ################
 ##### 安装 #####
 ################
 
 1、解压缩,把所有源码压缩包放在一个目录中,解压缩所有 .tar.gz 压缩包
 for i in `ls *.gz`;do tar zxvf $i; done;  phperz.com
 
 2、开始安装
 
 ##### zlib #####
 
 cd zlib-1.2.2
 ./configure
 make
 make install
 cd ..
 
 
 ##### OpenSSL #####
 
 cd openssl-0.9.7g
 ./config --prefix=/usr/local/ssl \
 --openssldir=/usr/local/ssl \
 shared \
 zlib
 
 make
 make install
 ln -s /usr/local/ssl /usr/lib/ssl
 cd ..
 
 
 ##### MySQL #####
 
 cd mysql-4.0.24
 
 编辑 sql/mysqld.cc :
 搜索:&max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
 修改:&max_connections, 0, GET_ULONG, REQUIRED_ARG, 1000, 1, 16384, 0, 1,
 
 groupadd mysql
 useradd -g mysql mysql
 
 ./configure \
 --prefix=/server/mysql \
 --sysconfdir=/server/mysql \
 php程序员站 --without-isam \
 --without-debug \
 --enable-assembler \
 --with-unix-socket-path=/tmp/mysql.sock \
 --with-mysqld-user=mysql \
 --with-extra-charset=all \
 --with-client-ldflags=-all-static \
 --with-mysqld-ldflags=-all-static \
 --localstatedir=/data/mysql/data
 
 如果出现了以下错误:
 checking for tgetent in -ltermcap... no
 checking for termcap functions library... configure: error: No curses/termcap library found
 说明 curses/termcap 库没有安装
 apt-cache search curses | grep lib
 安装 libncurses5-dev ,然后重新运行配置
 
 mkdir /data
 mkdir /data/mysql
 mkdir /data/mysql/data
 
 make
 make install
 
 /server/mysql/bin/mysql_install_db --user=mysql
 
 chown -R mysql /data/mysql
 chgrp -R mysql /data/mysql  www.phperz.com
 chown -R root /server/mysql
 chgrp -R mysql /server/mysql
 cp /server/mysql/share/mysql/my-medium.cnf /server/mysql/my.cnf
 
 /server/mysql/share/mysql/mysql.server start
 /server/mysql/bin/mysqladmin -u root password 123456789
 cd ..
 
 
 ##### Apache2 #####
 
 cd httpd-2.0.54
 
 ./configure --prefix=/server/httpd \
 --enable-so \
 --with-mysql=/server/mysqld \
 --enable-cgi \
 --with-config-file-path=/server/httpd/conf \
 --enable-track-vars \
 --enable-mods-shared=all \
 --enable-cache \
 --enable-disk-cache \
 --enable-mem-cache \
 --enable-rewrite \
 --with-mpm=worker \
 --with-ssl=/usr/local/ssl \
 --enable-ssl
 
 make
 make install
 cd ..
 
 
 ##### mod_deflate #####
 phperz.com
 cd httpd-2.0.54/modules/filters
 
 /server/httpd/bin/apxs -i -c -a mod_deflate.c
 
 修改 Apache 配置文件 /server/httpd/conf/httpd.conf :
 添加:
 <Location />
 # Insert filter
 SetOutputFilter DEFLATE
 
 # Netscape 4.x has some problems...
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 
 # Netscape 4.06-4.08 have some more problems
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 
 # MSIE masquerades as Netscape, but it is fine
 # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 
 # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
 # the&nbsaoenbsp;regex won''''t work. You can use the following
 # workaround to get the desired effect:
 phperz~com BrowserMatch \bMSI[E] !no-gzip !gzip-only-te/tl
 
 # Don''''t compress images
 SetEnvIfNoCase Request_URI \
 \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
 
 # Make&nbssr&bsp;proxies don''''t deliver the wrong content
 #Header append Vary User-Agent env=!dont-vary
 </Location>
 
 DeflateFilterNote&nb;ai
 LogFormat ''''"%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{UseAeti"" (%{ratio}n)'''' deflate
 
 CustomLog logs/deflate_log deflate
 
 然后
 cd ../../../
 
 
 ##### FreeType #####
 
 cd freetype-2.1.10
 
 ./configure --prefix=/usr/local/freetype
 
 make
 make install
 cd ..
 
 
 ##### LibPNG #####
 
 phperz.com cd libpng-1.2.8
 
 cp scripts/makefile.linux makefile
 
 make test
 make install
 cd ..
 
 
 ##### Jpeg #####
 
 cd jpeg-6b
 
 mkdir /usr/local/jpeg
 mkdir /usr/local/jpeg/bin
 mkdir /usr/local/jpeg/lib
 mkdir /usr/local/jpeg/include
 mkdir /usr/local/jpeg/man
 mkdir /usr/local/jpeg/man/man1
 ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
 
 make
 make install
 cd ..
 
 
 ##### GD Library #####
 
 cd gd-2.0.33
 
 ./configure --prefix=/usr/local/gd \
 --with-jpeg=/usr/local/jpeg \
 --with-freetype=/usr/local/freetype \
 --with-png \
 --with-zlib
 
 make
 make install
 cd ..
 
 
 ##### ClibPDF #####
 
 cd ClibPDF/source
 cp Makefile.Linux makefile
 www~phperz~com make
 make install
 cd ..
 
 
 ##### PHP #####
 
 cd php-4.3.11
 
 ./configure --prefix=/server/php \
 --with-apxs2=/server/httpd/bin/apxs \
 --with-gd=/usr/local/gd \
 --enable-gd \
 --enable-gd-native-ttf \
 --with-jpeg-dir=/usr/local/jpeg \
 --with-png \
 --with-ttf \
 --with-zlib \
 --with-freetype-dir=/usr/local/freetype \
 --enable-magic-quotes \
 --with-mysql=/server/mysql \
 --with-mysql-sock=/tmp/mysql.sock \
 --with-iconv \
 --with-mbstring \
 --enable-mbstring \
 --enable-track-vars \
 --enable-force-cgi-redirect \
 --enable-ftp \
 --with-config-file-path=/server/httpd/conf \
 --with-openssl=/usr/local/ssl \
 --with-openssl-dir=/usr/local/ssl \
 --with-cpdflib=/usr/local \
 --with-pear=/server/php/pear  php程序员站
 
 make
 make install
 
 cp php.ini-dist /server/httpd/conf/php.ini
 cd ..
 
 
 ##### Zend Optimizer #####
 
 cd ZendOptimizer-2.5.10-linux-glibc21-i386
 
 ./install
 
 操作 [OK] [EXIT] [YES] [/server/zend] [/server/httpd/conf] [YES] [/server/httpd/bin/apachectl] [OK] [OK] [NO]
 
 cd ..
 
 
 ##### mod_limitipconn #####
 
 cd mod_limitipconn-0.22
 
 /server/httpd/bin/apxs -i -c -a mod_limitipconn.c
 
 修改 Apache 配置文件 /server/httpd/conf/httpd.conf:
 查找:#ExtendedStatus On ,去掉注释"#"
 查找:CustomLog logs/access_log common ,修改成 CustomLog logs/access_log common env=!LIMITIP
 添加:
 <IfModule mod_limitipconn.c>
 <Location />
 www.phperz.com MaxConnPerIP 5
 NoIPLimit image/*
 </Location>
 
 <Location /mp3>
 MaxConnPerIP 2
 OnlyIPLimit audio/mpeg video
 </Location>
 </IfModule>
 
 然后
 cd ..
 
 
 ##### Bandwidth Module #####
 
 cd bw_mod-0.6
 
 /server/httpd/bin/apxs -i -c -a bw_mod-0.6.c
 
 cd ..
 
 带宽限制在虚拟主机中设置
 
 
 ##### Apache DoS Evasive Maneuvers Module #####
 
 cd mod_dosevasive
 
 /server/httpd/bin/apxs -i -c -a mod_dosevasive20.c
 
 cd ..
 
 等一下启动 Apache2 后可以测试
 perl test.pl
 
 
 ###############################################################################################
 
 现在,WEB 服务已经安装完毕!
 www.phperz.com 测试 WEB 服务:
 
 mkdir /data/vhosts
 mkdir /data/vhosts/localhost
 
 启动 Apache2
 /server/httpd/bin/apachectl start
 如果出错请参考下一贴中的 httpd.conf 和 虚拟主机配置文件示例
 
 MySQL 服务前面已经启动了,密码是:123456789
 
 编辑一个 info.php 放在&nbbsp;/data/vbsp;/data/vhosts/localhost 下面,内容如下:
 
 <?php
 phpinfo();
 ?>
 
 测试: http://localhost/info.php
 OK,看到 PHP 信息了吧
 
 
 ##### 开机自动启动服务 #####
 
 cp /server/httpd/bin/apachectl /etc/init.d/httpd
 cp /server/mysql/share/mysql/mysql.server /etc/init.d/mysql
 recconf
 配置,已经有 httpd 和 mysql 选项了,选中,OK
 
 如果没有 rcconf ,用 apt-get install rcconf 安装
 
 
 
 #######################
 ##### 使 SSL 工作 #####
 phperz.com #######################
 
 
 mkdir /server/ssl
 cd /server/ssl
 
 
 ##### 手工签署证书 #####
 /usr/local/ssl/bin/openssl genrsa -des3 \
 -rand 任意大文件1:任意大文件2 \
 -out server.key 1024
 
 输入密码
 重复密码
 
 /usr/local/ssl/bin/openssl req -new -key server.key -out server.csr
 
 Enter pass phrase for localhost.key:  #<--## 输入密码
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be anpeautns;value,
 www~phperz~com If you enter ''''.'''', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:CN  #<--## 国家代码
 State or Province Name (full name) [Some-State]:LN  #<--## 省或州 Locality (eg, city) []:SY  #<--## 城市
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:micronsky.net  #<--## 组织名称
 Organizational Unit Name (eg, section) []:root  #<--## 部门
 Common Name (eg, YOUR name) []:keelort  #<--## 名字
 Email Address []:keelort@gmail.com  #<--## 电子邮 r b>Pleaens;enter the following ''''extra'''' attributes
 to be sent with your certificate request
 A challenge password []:  #<--## 直接回车就可以
 phperz.com An optional company name []:  #<--## 直接回车就可以
 
 /usr/local/ssl/bin/openssl x509 -req \
 -days 3650 \
 -in server.csr \
 -signkey server.key \
 -out server.crt
 
 ................................................................................
 
 注意:SSL 部分目前还不是很明白,apachectl startssl 启动后 http:// 不能用,只能用 https:// 连接,
 不知道怎么回事请高手指教,暂时没有写全
 
 ###############################################################################################
 
 ##### vsftpd #####
 
 cd vsftpd-2.0.3
 
 编辑 builddefs.h :
 #define VSF_BUILD_PAM
 修改为
 #undef VSF_BUILD_PAM
 
 编辑 defs.h :
 #define VSFTP_DEFAULT_CONFIG    "/etc/vsftpd.conf"
 修改为
 #define VSFTP_DEFAULT_CONFIG    "/server/vsftpd/conf/vsftpd.conf"
 php程序员之家 
 make
 
 useradd nobody
 mkdir /usr/share/empty
 mkdir /data/ftp
 useradd -d /data/ftp ftp
 chown root:root /data/ftp
 chmod og-w /data/ftp
 
 install --m 755 vsftpd /server/vsftpd/vsftpd
 install -m 644 vsftpd.8 /usr/share/man/man8
 install -m 644 vsftpd.conf.5 /usr/share/man/man5
 mkdir /server/vsftpd/conf
 install -m 644 vsftpd.conf /server/vsftpd/conf/vsftpd.conf
 
 使 vsftpd 以 standalone 方式启动:
 编写名为 vsftpd 的启动脚本:
 
 [code:1:b9bd2e7e99]
 #!/bin/sh
 # /etc/init.d/vsftpd
 #
 
 set&nbs- b>
 # Exit if vsftpd.conf doesn''''t have listen=yes or listen_ipv6=yes
 # (mandatory for standalone operation)
 if [ -f /server/vsftpd/conf/vsftpd.conf ] && ! egrep -iq "^ *listen(_ipv6)? *= *yes"   php程序员站
 
 /server/vsftpd/conf/vsftpd.conf; then
 exit 0
 fi
 
 DAEMON=/server/vsftpd/vsftpd
 NAME=vsftpd
 
 test -x $DAEMON || exit 0
 
 case "$1" in
 start)
 echo -n "Starting FTP server: $NAME"
 start-stop-daemon --start --background -m --pidfile /tmp/vsftpd.pid --exec $DAEMON
 echo "."
 ;;
 stop)
 echo -n "Stopping FTP server: $NAME"
 start-stop-daemon --stop --pidfile /tmp/vsftpd.pid --oknodo --exec $DAEMON
 echo "."
 ;;
 restart)
 php程序员之家 echo -n "Restarting FTP server: $NAME"
 start-stop-daemon --stop --pidfile /tmp/vsftpd.pid --oknodo --exec $DAEMON
 start-stop-daemon --start --background -m --pidfile /tmp/vsftpd.pid --exec $DAEMON
 echo "."
 ;;
 reload|force-reload)
 echo "Reloading $NAME configuration files"
 start-stop-daemon --stop --pidfile /tmp/vsftpd.pid --signal 1 --exec $DAEMON
 echo "."
 ;;
 *)
 echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload}"
 exit 1
 ;;  phperz.com
 esac
 
 exit 0
 [/code:1:b9bd2e7e99]
 
 运行 rcconf 选中 vsftpd ,确定
 
 
 重新启动,试试试不是所有的服务都启动了,呵呵...
 
 全文完
 
 最后编辑 [2005-06-27]
 文章比较长,难免有错误,还请高手指教,谢谢 :)
 原文链接: http://bbs.micronsky.net/viewtopic.php?t=160
 
 
 
 |  
          |  |  
          | [收藏此页] [打印本页] [返回顶部] |  |  
    |  |  |   
|  |   
|  |  |  |  |  |