Apache 虚拟主机 VirtualHost 配置

虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名.

Apache 是世界上使用最广的 Web 服务器, 从 1.1 版开始支持虚拟主机. 本文将讲解在不同服务器 (Redhat Enterprise Linux, Ubuntu Linux, Windows) 上使用 Apache 搭建虚拟主机来搭建多个网站.

 

主旨

本文旨在让读者知道如何在同一台机器上搭建多个网站, 并附带一些使用技巧. 以操作为主, 不会过多谈及原理.

目标

本文是写给拥有一定的服务器配置和管理技能, 工作中需要同时维护多个网站的网站主, 网站开发者和网络管理员. 如果你是互联网公司的配管工程师, 对计算机服务器原理和操作十分熟悉, 请忽视本文, 你不会在上面找到太多有价值的东西.

Redhat Enterprise Linux

Redhat Enterprise Linux (包括 CentOS Linux), 是使用最广的 Linux 服务器, 大量的网站应用都部署在其上.

1. 打开文件 /etc/httpd/conf/httpd.conf, 搜索 VirtualHost example, 找到代码如下:

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot /var/www/httpdocs/demo_aliluna_com
    ServerName demo.aliluna.com
    ErrorLog logs/demo.aliluna.com-error.log
    CustomLog logs/demo.aliluna.com-access.log common
</VirtualHost>

3. 重启 httpd 服务, 执行以下语句.

service httpd restart

Ubuntu Linux

Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同.

1. 打开目录 /etc/apache2/sites-available/, 发现 default 和 default-ssl 两个文件, 其中 default 是 http 虚拟主机服务的配置文件, default-ssl 是配置 https 服务使用的. 可以复制一份 default 文件. 并修改配置文件名, 文件名必须与域名一致 (如: demo.aliluna.com)

2. 打开新建的配置文件, 修改 DocumentRoot, ServerName 和对应的配置目录. 例子如下:

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot /var/www/httpdocs/demo_aliluna_com
    ServerName demo.aliluna.com
    ErrorLog ${APACHE_LOG_DIR}/demo.aliluna.com-error.log
    CustomLog ${APACHE_LOG_DIR}/demo.aliluna.com-access.log combined
</VirtualHost>

3. 通过 a2ensite 激活虚拟主机配置

sudo a2ensite demo.aliluna.com

4. 打开目录 /etc/apache2/sites-enabled/, 你会发现所有激活的虚拟主机, 可以通过 a2dissite 进行注销

sudo a2dissite demo.aliluna.com

5. 重启 Apache 服务, 激活虚拟主机

sudo /etc/init.d/apache2 restart

Windows

Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异, 以下方式适合原生 Apache, XAMPP 和 WAMP 套件.

1. 打开目录 {Apache2 安装目录}\conf\extra\, 找到 httpd-vhosts.conf 文件.

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot "D:/workspace/php/demo_aliluna_com"
    ServerName demo.aliluna.com
    ErrorLog "logs/demo.aliluna.com-error.log"
    CustomLog "logs/demo.aliluna.com-access.log" common
</VirtualHost>

3. 打开 httpd.conf 文件, 添加如下语句.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4. 重启 Apache 服务.

终于搞定LAMP

太阳当空照花儿对我笑,小鸟说早早早,你为什么背上小书包,我要上学校,天天不迟到,
爱学习爱劳动长大要为人民立功

HAHA 昨天终于把LAMP搞定了,用的UBUNTU,只要能装上就好了,好不容易装上后又遇到个难题
Vsftpd, 怎么弄都配不好,郁闷死呢,弄好后匿名能访问了,WEB服务器级别的哪能让匿名访问啊,汗
关掉匿名访问,用本地用户有登陆不上网找了很多都白搭,后来用安完vsftpd后标准的vsftpd.conf添加2行终于好了 ,用另一台windows XP当客户端,才发现550错误,可以下载没有上传权限,日了 ,后来只是配置中一小行代码就搞定,哈哈

#接受本地用户
local_enable=YES
#本地用户主目录
local_root=/var/www
chroot_local_user=YES
#FlashFXP上传问题,添加允许被动模式传输
pasv_enable=YES

中间还遇到过mysql错误。
研究了2周的lamp搞定.
今天差不多那块硬盘能过来,哈哈。
明天就放假了,不知道这个51有没有假

ubuntu desktop版架设apache+php+mysql服务器

1.安装apache2
sudo apt-get install apache2
2.安装php
sudo apt-get install libapache2-mod-php5
sudo apt-get install php5
3.安装sql服务器
sudo apt-get install mysql-server
sudo apt-get install php5-mysql
4.为sql设置用户名和密码
mysqladmin -u root password db_user_password
5.修改web目录权限
chown -R www-data:www-data /var/www
6.重启apache
sudo /etc/init.d/apache2 restart
然后将windows下的phpmyadmin直接移动到/var/www 下
访问后输入username 和 password就可以进入管理sql
以apache2进行配置,添加网站。详情:
more /etc/apache2/sites-available/site1.xxxx.com
代码:

ServerAdmin webmaster@localhost
ServerName site1.xxxx.com
CustomLog /var/log/apache2/site1.xxxx.com-access.log combined
DocumentRoot /var/www/site1/

Options Indexes FollowSymLinks MultiViews
AllowOverride all
order allow,deny
allow from all


more /etc/apache2/sites-available/site2.xxxx.com
代码:

ServerAdmin webmaster@localhost
ServerName site2.xxxx.com
ServerAlias site2.yyyy.com
CustomLog /var/log/apache2/site2.xxxx.com-access.log combined
DocumentRoot /web/site2

Options Indexes
AllowOverride None
order allow,deny
allow from all


创建完毕后,直接
sudo ln -s /etc/apache2/sites-available/site1.xxxx.com /etc/apache2/sites-enabled/site1.xxxx.com
sudo ln -s /etc/apache2/sites-available/site2.xxxx.com /etc/apache2/sites-enabled/site2.xxxx.com
重启apache2
sudo /etc/init.d/apache2 force-reload
7.安装vsftpd,用sudo apt-get install vsftpd。并进行配置:
重新启动:sudo /etc/init.d/vsftpd restart 首先是最基本的配置,请看我的/etc/vsftpd/vsftpd.conf
###############################################################################
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口令
no_anon_password=YES
#接受本地用户
local_enable=YES
#可以上传(全局控制).若想要匿名用户也可上传则需要设置anon_upload_enable=YES,若想要匿名用户可以建立目录则需要设置anon_mkdir_write_enable=YES.这里禁止匿名用户上传,所以不设置这两项.
write_enable=YES
#本地用户上传文件的umask
local_umask=022
#使用上传/下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
#日志使用标准xferlog格式
xferlog_std_format=YES
#login时的欢迎信息
ftpd_banner=Welcome to KingArthur’s FTP service.
#设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
banner_file=/etc/vsftpd/banner
#为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
dirmessage_enable=YES
#本地用户login后所在目录,若没有设置此项,则本地用户login后将在他的home目录(/etc/passwd的第六个字段)中.匿名用户的对应选项是anon_root
local_root=/var/ftp
#设置为YES则下面的控制有效
chroot_list_enable=YES
#若为NO,则记录在chroot_list_file选项所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里选择YES.
chroot_local_user=YES
#若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES
#若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_deny=NO
#注意!!!vsftpd还要检察/etc/vsftpd.ftpusers文件,记录在这个文件中的用户将无法login!!
#服务器以standalong模式运行,这样可以进行下面的控制
listen=YES
#匿名用户的传输比率(b/s)
anon_max_rate=51200
#本地用户的传输比率(b/s)
local_max_rate=512000
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5
connect_from_port_20=YES
tcp_wrappers=YES
pam_service_name=vsftpd
##############################################################################
下面是我的/etc/vsftpd.user_list
##############################################################################
ftpuser
anonymous
##############################################################################
/etc/vsftpd.ftpusers可以使用系统自带的文件
/etc/vsftpd.chroot_list内容为空
接着建立系统用户ftpuser,将他加入ftp组并将/etc/passwd中他的记录的最后一个字段改成/sbin/nologin(禁止本地登录).
设置/var/ftp的所有者和所有组为root,权限为755
设置/var/ftp/pub的所有者为root,所有组为ftp,权限为775
至此vsftpd的基本配置就完成了.这里我们接受匿名用户anonymous和本地用户ftpuser的请求.anonymous只能下载, ftpuser可以下载和上传.他们登录后均在/var/ftp目录下且无法离开这个目录(被chroot了).ftpuser可以在 /var/ftp/pub目录中建立目录和上传文件,上传文件的权限为755(设置了local_umask=022).匿名用户的传输比率为 50kb/s,ftpuser的传输比率为500kb/s.可联接的最多客户数为100,每ip可联接的最多客户数为5.
如果需要使本地用户ftpput可以login,只需要将他加入/etc/vsftpd.user_list,要使他可以上传,只需将他加入ftp组.
接着我们可以在/var/ftp下的各个目录(包括/var/ftp)下建立.message文件,这样用户进入这个目录时vsftpd将显示. message的内容,你可以在这里面写上欢迎信息或者注意事项等等.另外可以编辑/etc/vsftpd/banner,建立login时的欢迎信息, 让你的ftp更加个性化.
下面我们使用quota为ftpuser加入磁盘限额,避免恶意用户用垃圾数据塞满你的硬盘.
假设/var/ftp在根分区/(/dev/hda5)中,则将/etc/fstab中根分区的记录的第4个字段改成defaults,usrquota,这样这条记录看起来类似这样:
LABEL=/ / ext3 defaults,usrquota 1 1
接着重启系统后输入下列命令:
quotacheck -acu #检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表
quotacheck -avu #生成每个启用了配额的文件系统的当前磁盘用量表
edquota ftpuser #为用户ftpuser设置磁盘配额
这时系统会在默认文本编辑器(vi)中打开配额文件,显示类似这样:
Disk quotas for user ftpuser (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda5 0 0 0 0 0 0
第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period)。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置.按你的需要修改后存盘推出.
要校验用户的配额是否被设置,使用以下命令:
quota testuser
接着使用edquota -t来设置过渡期(grace period)
和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda5 7days 7days
按你的需要修改后存盘退出
这样我们就成功的为ftpuser增添了磁盘配额.而一个比较完整的FTP站点也配置完成了
8.安装firestarter,用sudo apt-get install firestarter,这个好重要,限制了访问IP和服务.
完成了。
附加:
安装zend (据说不仅能起一定的安全作用还能提高php的效率)
由于现有的大部分源中都没有,所以我们可以自己通过google去搜索一个tar.gz
解压 后
sudo .\install
一步步按照提示
需要注意的是php.ini位于apache目录下 可以通过find命令查找
全文over.
补充:
如果按照本文设置好服务器后,在打开部分浏览器可能会显示乱码,需要手动选在GB2312编码方式,很不方便。
所以对编码问题的补充:
sudo vi /etc/php5/apache2/php.ini
修改里面的default_charaset =”GB2312″
sudo vi /etc/apache2/conf.d/charset
改成gb2312
sudo /etc/init.d/apache2 restart
重启apache2
OK,此问题解决!

Lamp

一、软件版本
Linux:Redhat Linux 8.0,六CD正版包装,68元
Apache:1.3.26,下载自Apache官方网站
Mysql:4.0.7(Binary版,非RPM版,非源代码)
PHP:4.3.2
说明:并不是版本越高越好,因为最新的版本往往处于测试阶段,存在一些不稳定的地方 而且,老版本的使用者很多,不至于在出现问题的时候找不到资料参考。
二、Mysql安装测试
网上搜到很多文章安装顺序都是Mysql-apache-PHP
其实,Mysql和Apache哪个在前面都无所谓,但是这两个最好都在PHP前面安装
下载Mysql4.0.7.tar.gz(存在/root目录) 以root身份(可以是其他用户身份)进入Command
Line,默认的目录是~root
运行tar解压缩
#(表示提示符,下同)tar zxvf mysql4.0.7.tar.gz
移动到/usr/local/mysql下面
# mv mysql-4.0.7-gamma-linux-i686 /usr/local/mysql
进入mysql目录 # cd /usr/local/mysql 数据库初始化
# ./scripts/mysql_install_db
注意:这里不要./configure,因为下载的是Binary文件,无需配置,可以直接运行
启动Mysql服务
# ./bin/safe_mysqld –user=root &
更改root用户密码(是mysql的root用户,和Linux的root用户无必然联系)
# ./bin/mysqladmin -u root password ‘your password’
连接Mysql数据库服务器
# ./bin/mysql -u root -p
提示输入密码,输入密码后Enter,若正确, 提示符变为:mysql> 此时,Mysql已经安装测试成功
可以输入show databases;(分号不要掉了)查看数据库,有两个,Mysql和test 前者重要(MS SQL中的Master数据库同样重要),后者可删除
三、Apache安装测试
下载apache1.3.26
以root身份进入Command Line
# tar zxvf apache1.3.26.tar.gz //可以在图形界面下面双击用File Scroller打开
# mv apache1.3.26 /usr/local/apache
# cd /usr/local/apache
# ./configure –prefix=/usr/local/apache –enable-shared=max –enable-module=most
# make // 请确定您的Linux中含有gcc
# make install
OK,make install完毕之后,会提示你安装成功,并告诉你如何启动apache服务
修改/usr/local/apache/conf/httpd.conf
找到#ServerName youname-machine-name一行
修改为ServerName www.yourdomain.com 注意去掉前面的#,
# cd /usr/local/apache
# ./bin/apachextl start
显示httpd started
Ok,运行成功
四、PHP安装配置
下载PHP4.3.2.tar.gz
# tar zxvf php4.3.2.tar.gz
# mv php4.3.2 /usr/local/php
# cd /usr/local/php
# ./configure –with-apxs=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql –enable-track-vars
# make
# make install
完成之后会给出一个提示,感谢你选择php
编辑/usr/local/apache/conf/httpd.conf
加入Addtype application/x-httpd-php .php
加入DirectoryIndex index.html(已有) index.php
在/usr/local/apache/htdocs下写入一个index.php文件,
内容如下:
打开浏览器,地址栏输入你的IP:
将显示PHP系统信息 至此,PHP安装配置完毕,测试成功

LAMP on CentOS4.4

[color="blue"]一、系统约定RPM包和源码包存放位置[/color]
RPM包和源码包存放位置
/usr/local/src
源码包编译安装位置(prefix)
/usr/local/xxx
脚本以及维护程序存放位置
/usr/local/sbin
MySQL 数据库位置
/var/lib/mysql
Apache 网站根目录
/home/www
Apache 虚拟主机日志根目录
/data/logs/www
yum RPM包信息文件
/etc/yum.list
[color="blue"]二、系统环境部署及调整[/color]
[color="darkred"]1. 检查系统是否正常
[/color]
# more /var/log/messages //检查有无系统内核级错误信息
# demesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
# ping www.ioicn.com.cn // 检查网络是否正常
[color="darkred"]2. 关闭不需要的服务[/color]
# export LANG=’en_US’ //设置语言
# ntsysv //选择启动的服务
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
random
sendmail
sshd
syslog
[color="darkred"]3. 对TCP/IP网络参数进行调整,加强抗SYN Flood能力[/color]
# echo ‘net.ipv4.tcp_syncookies = 1′ >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
# sysctl -p //查看
[color="darkred"]4. 配置yum[/color]
# rpm –import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3
# yum list | tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。
[color="darkred"]5. 修改命令history记录[/color]
# vi /etc/profile
[color="darkgreen"]找到[/color]
HISTSIZE=1000
[color="magenta"]改为[/color]
HISTSIZE=50
[color="darkred"]6. 定时校正服务器时间[/color]
# yum install ntp
# crontab -e
加入一行
[color="magenta"]*/15 * * * * ntpdate 210.72.145.44[/color]
[color="darkred"]7. 重新启动系统[/color]
# init 6
[color="darkred"]8. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)[/color]
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake
bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel
libtiff-devel freetype-devel pam-devel
[color="darkred"]9. 源码编译安装所需包 (Source)
[/color]
(1) GD2
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/gd-2.0.33.tar.gz
# tar xzvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure –prefix=/usr/local/gd2 –mandir=/usr/share/man //./configure 配置。
# make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。
(2) Apache 日志截断程序
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure –prefix=/usr/local/cronolog
# make
# make install
(3) libxml 库程序
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/libxml2-2.6.26.tar.bz2
# tar xjvf libxml2-2.6.26.tar.bz2
# cd libxml2-2.6.26
# ./configure –prefix=/usr/local/libxml2
# make
# make install
[color="darkred"]10. 升级 OpenSSL和OpenSSH[/color]
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/openssl-0.9.7j.tar.gz
# tar xzvf openssl-0.9.7j.tar.gz
# cd openssl-0.9.7j
# ./config –prefix=/usr/local/openssl
# make
# make test
# make install
# cd ..
# wget http://www.ioicn.org/download/tools/openssh-4.2p1.tar.gz
# tar xzvf openssh-4.2p1.tar.gz
# cd openssh-4.2p1
# ./configure
–prefix=/usr –with-pam –with-zlib=/usr/local/zlib –with-ssl-dir=/usr/local/openssl –with-md5-passwords –mandir=/usr/share/man
# make
# make install
如要禁止 root 直接登录,此处先建立一个普通系统用户:
# useradd username
# passwd username
# echo ‘Protocol 2′ >> /etc/ssh/sshd_config
# echo ‘Protocol 2′ >> /usr/etc/sshd_config
# echo ‘PermitRootLogin no’ >> /etc/ssh/sshd_config
# echo ‘PermitRootLogin no’ >> /usr/etc/sshd_config
# /etc/rc.d/init.d/sshd restart
[color="#0000ff"]三、编译安装 L.A.M.P 环境
[/color]
[color="darkred"]1. 编译安装 MySQL
[/color]
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/mysql-5.0.26.tar.gz
# tar xzvf mysql-5.0.26.tar.gz
# cd mysql-5.0.26
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -mfpmath=sse
-mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer”
CXXFLAGS=”-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4
-march=pentium4 -pipe -fomit-frame-pointer” ./configure
–prefix=/usr/local/mysql –localstatedir=/var/lib/mysql –with-comment=Source –with-server-suffix=-Comsenz –with-mysqld-user=mysql –without-debug –with-big-tables –with-charset=latin1 –with-collation=latin1_swedish_ci –with-extra-charsets=all –with-pthread –enable-static –enable-thread-safe-client –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –without-isam –without-innodb –without-ndb-debug
# make
# make install
# useradd mysql //添加 mysql 用户
# cd /usr/local/mysql
# bin/mysql_install_db –user=mysql
# chown -R root:mysql . //设置权限,注意后面有一个 “.”
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限
# chgrp -R mysql . //注意后面有一个 “.”
# cp share/mysql/my-huge.cnf /etc/my.cnf
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld
# /etc/rc.d/init.d/mysqld start //启动 MySQL
# bin/mysqladmin -u root password “password_for_root”
# service mysqld stop //关闭 MySQL
[color="darkred"]2. 编译安装 Apache[/color]
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/httpd-2.2.3.tar.bz2
# tar xjvf httpd-2.2.3.tar.bz2
# cd httpd-2.2.3
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -mfpmath=sse
-funroll-loops -mcpu=pentium4 -march=pentium4 -pipe
-fomit-frame-pointer” ./configure –prefix=/usr/local/apache2
–enable-module=so –enable-deflate=shared –enable-expires=shared
–enable-rewrite=shared –enable-cache –enable-file-cache
–enable-mem-cache –enable-disk-cache –enable-static-support
–enable-static-htpasswd –enable-static-htdigest
–enable-static-rotatelogs –enable-static-logresolve
–enable-static-htdbm –enable-static-ab –enable-static-checkgid
–disable-cgid –disable-cgi –disable-userdir
# make
# make install
# echo ‘/usr/local/apache2/bin/apachectl start ‘ >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。
注解:
./configure //配置源代码树
–prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
–enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
–enable-deflate=shared //支持网页压缩
–enable-expires=shared //支持 HTTP 控制
–enable-rewrite=shared //支持 URL 重写
–enable-cache //支持缓存
–enable-file-cache //支持文件缓存
–enable-mem-cache //支持记忆缓存
–enable-disk-cache //支持磁盘缓存
–enable-static-support //支持静态连接(默认为动态连接)
–enable-static-htpasswd //使用静态连接编译 htpasswd – 管理用于基本认证的用户文件
–enable-static-htdigest //使用静态连接编译 htdigest – 管理用于摘要认证的用户文件
–enable-static-rotatelogs //使用静态连接编译 rotatelogs – 滚动 Apache 日志的管道日志程序
–enable-static-logresolve //使用静态连接编译 logresolve – 解析 Apache 日志中的IP地址为主机名
–enable-static-htdbm //使用静态连接编译 htdbm – 操作 DBM 密码数据库
–enable-static-ab //使用静态连接编译 ab – Apache HTTP 服务器性能测试工具
–enable-static-checkgid //使用静态连接编译 checkgid
–disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
–disable-cgi //禁止编译 CGI 版本的 PHP
–disable-userdir //禁止用户从自己的主目录中提供页面
[color="darkred"]3. 编译安装 PHP
[/color]
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/php-5.1.6.tar.bz2
# tar xjvf php-5.1.6.tar.bz2
# cd php-5.1.6
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -mfpmath=sse
-mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer”
CXXFLAGS=”-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4
-march=pentium4 -pipe -fomit-frame-pointer” ./configure
–prefix=/usr/local/php
–with-apxs2=/usr/local/apache2/bin/apxs –with-zlib-dir
–with-bz2 –with-tiff-dir –with-gd=/usr/local/gd2
–with-freetype-dir –with-jpeg-dir –with-png-dir –with-ttf –enable-mbstring –with-mysql=/usr/local/mysql –with-config-file-path=/etc –disable-ipv6 –enable-static
# make
# make install
# cp php.ini-dist /etc/php.ini
[color="darkred"]4. 安装 Zend Optimizer
[/color]
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/ZendOptimizer-3.0.2-linux-glibc21-i386.tar.gz
# tar xzvf ZendOptimizer-3.0.2-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.0.2-linux-glibc21-i386/install.sh
[color="red"]安装 Zend Optimizer 过程的最后不要选择重启 Apache。[/color]
[color="darkred"]5. 整合 Apache 与 PHP
[/color]
# vi /usr/local/apache2/conf/httpd.conf
查找:(设置 WEB 目录)
[color="darkgreen"]DocumentRoot “/usr/local/apache2/htdocs”
[/color]
替换为:
[color="magenta"]DocumentRoot “/home/www”
[/color]
查找:
[color="darkgreen"]AddType application/x-gzip .gz .tgz
[/color]
在该行下面添加:
[color="magenta"]AddType application/x-httpd-php .php
[/color]
查找:(禁止浏览网页目录)
[color="darkgreen"]Options Indexes FollowSymLinks[/color]
替换为:
[color="magenta"]Options FollowSymLinks[/color]
查找:(设置静态网页)
[color="darkgreen"]LoadModule rewrite_module modules/mod_rewrite.so[/color]
在该行下面添加:
[color="magenta"]
RewriteEngine On
RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3
[/color]
查找:(启动 CGI)
[color="darkgreen"][/color]
[color="darkgreen"]AllowOverride None[/color]
在该行下面添加:
[color="magenta"]Options +ExecCGI[/color]
查找:(设置 WEB 默认文件)
[color="darkgreen"]DirectoryIndex index.html[/color]
替换为:
[color="magenta"]DirectoryIndex index.html index.htm index.php [/color]
//在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html
查找:(如果安装后出现You don’t have permission to access / on this server.)
[color="#006400"]Deny from all [/color]
[color="black"]//拒绝主机访问[/color]
全部替换为:
[color="#ff00ff"]Allow from all [/color]
[color="black"] //允许主机访问[/color]
修改完成后保存退出。
# mkdir /home/www
# /usr/local/apache2/bin/apachectl restart //重启 Apache。
[color="darkred"]6. 查看确认 L.A.M.P 环境信息
[/color]
# echo ‘#!/usr/local/php/bin/php\
‘ > /usr/local/php/phpinfo.php //创建 phpinfo.php
# chmod 755 /usr/local/php/phpinfo.php
# /usr/local/php/phpinfo.php > /usr/local/php/phpinfo
# more /usr/local/php/phpinfo
检查 phpinfo 中的各项信息是否正确。
[color="#8b0000"]7. 测试环境[/color]
[color="black"] # echo ‘ ‘ > /home/www/phpinfo.php
[/color]
# chmod 755 /home/www/phpinfo.php
用浏览器打开
http://127.0.0.1/phpinfo.php
#
echo ‘ ‘
> /home/www/testdb.php
# chmod 755 /home/www/testdb.php
# service mysqld start
用浏览器打开
http://127.0.0.1/testdb.php
[color="#0000ff"]四、服务器安全性设置
[/color]
[color="darkred"]1. 设置系统防火墙[/color]
# touch /usr/local/sbin/fw.sh
将以下脚本命令粘贴到 fw.sh 文件中。
#! /bin/bash
Set FTP Transfer Mode
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
Inital iptables Chains Policy
/sbin/iptables -F -t filter
/sbin/iptables -P INPUT Drop
/sbin/iptables -P OUTPUT ACCEPT
Enable Native Network Transfer
/sbin/iptables -A INPUT -i lo -j ACCEPT
ICMP Control
/sbin/iptables -A INPUT -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
WWW Service
/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
FTP Service
/sbin/iptables -A INPUT -p tcp –dport 21 -j ACCEPT
SSH Service
/sbin/iptables -A INPUT -p tcp –dport 22 -j ACCEPT
Deny All Other Connections
/sbin/iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# chmod 755 /usr/local/sbin/fw.sh
# echo ‘/usr/local/sbin/fw.sh’ >> /etc/rc.local
# /usr/local/sbin/fw.sh

PHP安装错误 configure: error: xml2-config not found. Please check your libxml2 installation.
[hidden]
要安装
libxml2-2.6.23-1.2.i386.rpm
libxml2-devel-2.6.23-1.2.i386.rpm
编译出现
出现错误:checking libxml2 install dir… no
….
configure: error: xml2-config not found.Please check your libxml2 installation.
意思是没有安装libxml2
./configure –prefix=/usr/local/apache2/ –with-config-file-path=/usr/local/apache2/conf –with-libxml-dir=/usr/local/libxml2/
不能按照以上命令写一定要按照自给的li b x m l 2的路径写
然后make
再ma ke tes t
之后make install
[/hidden]

lamp

L.A.M.P 环境配置文档–CentOS
L.A.M.P 环境部署详细步骤
本文所用的操作系统为 CentOS 3.8,如果使用 Red Hat AS3/4 则不能使用 yum RPM 包管理命令!
推荐使用 CentOS 3.8 系统。
一、系统约定软件源代码包存放位置
/usr/local/src
源码包编译安装位置(prefix)
/usr/local/software_name
脚本以及维护程序存放位置
/usr/local/sbin
MySQL 数据库位置
/var/lib/mysql
Apache 网站根目录
/data/wwwroot
Apache 虚拟主机日志根目录
/data/logs/www
Apache 运行账户
www:www
yum RPM包信息文件
/etc/yum.list
二、系统环境部署及调整
1. 检查系统是否正常
# more /var/log/messages (检查有无系统内核级错误信息)
# dmesg (检查硬件设备是否有错误信息)
# ifconfig(检查网卡设置是否正确)
# ping www.163.com (检查网络是否正常)
2. 关闭不需要的服务
# ntsysv
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance (仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。)
microcode_ctl
network
random
sendmail
sshd
syslog
3. 对TCP/IP网络参数进行调整,加强抗SYN Flood能力
# echo ‘net.ipv4.tcp_syncookies = 1′ >> /etc/sysctl.conf
# sysctl -p
4. 配置yum
# rpm –import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3
# yum list | tee /etc/yum.list
5. 修改命令history记录
# vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=50
6. 定时校正服务器时间
# yum install ntp
# crontab -e
加入一行:
*/15 * * * * ntpdate 210.72.145.44
## 210.72.145.44 为中国国家授时中心服务器地址。
7. 重新启动系统
# init 6
8. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel
9. 源码编译安装所需包(Source)
(1) GD2
# cd /usr/local/src
# wget http://download.discuz.net/env/gd-2.0.33.tar.gz
# tar xzvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure –prefix=/usr/local/gd2
# make
# make install
(2) LibXML2
# cd /usr/local/src
# wget http://download.discuz.net/env/libxml2-2.6.26.tar.bz2
# tar xjvf libxml2-2.6.26.tar.bz2
# cd libxml2-2.6.26
# ./configure –prefix=/usr/local/libxml2
# make
# make install
(3) Apache日志截断程序
# cd /usr/local/src
# wget http://download.discuz.net/env/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure –prefix=/usr/local/cronolog
# make
# make install
10. 升级OpenSSL和OpenSSH
# cd /usr/local/src
# wget http://download.discuz.net/env/openssl-0.9.7j.tar.gz
# wget http://download.discuz.net/env/openssh-4.2p1.tar.gz
# tar xzvf openssl-0.9.7j.tar.gz
# cd openssl-0.9.7j
# ./config –prefix=/usr/local/openssl
# make
# make test
# make install
# cd ..
# tar xzvf openssh-4.2p1.tar.gz
# cd openssh-4.2p1
# ./configure \
“–prefix=/usr” \
“–with-pam” \
“–with-zlib” \
“–with-ssl-dir=/usr/local/openssl” \
“–with-md5-passwords”
# make
# make install
禁止root直接登录,此处先建立一个普通系统用户:
# useradd username
# passwd username
# echo ‘Protocol 2′ >> /etc/ssh/sshd_config
# echo ‘Protocol 2′ >> /usr/etc/sshd_config
# echo ‘PermitRootLogin no’ >> /etc/ssh/sshd_config
# echo ‘PermitRootLogin no’ >> /usr/etc/sshd_config
# /etc/rc.d/init.d/sshd restart
三、编译安装L.A.M.P环境
1. 下载软件
# cd /usr/local/src
# wget http://download.discuz.net/env/httpd-2.2.3.tar.bz2
# wget http://download.discuz.net/env/mysql-5.0.27.tar.gz
# wget http://download.discuz.net/env/php-5.2.0.tar.bz2
# wget http://download.discuz.net/env/Z … glibc21-i386.tar.gz
2. 编译安装MySQL
# tar xzvf mysql-5.0.27.tar.gz
# cd mysql-5.0.27
# ./configure \
“–prefix=/usr/local/mysql” \
“–localstatedir=/var/lib/mysql” \
“–with-comment=Source” \
“–with-server-suffix=-Comsenz” \
“–with-mysqld-user=mysql” \
“–without-debug” \
“–with-big-tables” \
“–with-charset=” \ #这个后边需要指定你所需要的字符集参数(gbk,utf8……)
“–with-collation= ” \ #字符集校正码(gbk_chinese_ci,……)
“–with-extra-charsets=all” \
“–with-pthread” \
“–enable-static” \
“–enable-thread-safe-client” \
“–with-client-ldflags=-all-static” \
“–with-mysqld-ldflags=-all-static” \
“–enable-assembler” \
“–without-isam” \
“–without-innodb” \
“–without-ndb-debug”
# make
# make install
# useradd mysql
# cd /usr/local/mysql
# bin/mysql_install_db –user=mysql
# chown -R root:mysql .
# chown -R mysql /var/lib/mysql
# cp share/mysql/my-huge.cnf /etc/my.cnf
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld
# /etc/rc.d/init.d/mysqld start
# bin/mysql -u root password “password_for_root”
3. 编译安装Apache
# cd /usr/local/src
# tar xjvf httpd-2.2.3.tar.bz2
# cd httpd-2.2.3
# ./configure \
“–prefix=/usr/local/apache2″ \
“–enable-module=so” \
“–enable-deflate=shared” \
“–enable-expires=shared” \
“–enable-rewrite=shared” \
“–enable-static-support” \
“–enable-static-htpasswd” \
“–enable-static-htdigest” \
“–enable-static-rotatelogs” \
“–enable-static-logresolve” \
“–enable-static-htdbm” \
“–enable-static-ab” \
“–enable-static-checkgid” \
“–disable-userdir”
# make
# make install
# echo ‘/usr/local/apache2/bin/apachectl start ‘ >> /etc/rc.local
4. 编译安装PHP
# cd /usr/local/src
# tar xjvf php-5.2.0.tar.bz2
# cd php-5.2.0
# ./configure \
“–prefix=/usr/local/php” \
“–with-apxs2=/usr/local/apache2/bin/apxs” \
“–with-config-file-path=/etc” \
“–with-mysql=/usr/local/mysql” \
“–with-libxml-dir=/usr/local/libxml2″ \
“–with-gd=/usr/local/gd2″ \
“–enable-gd-native-ttf” \
“–with-jpeg-dir” \
“–with-png-dir” \
“–with-bz2″ \
“–with-freetype-dir” \
“–with-iconv-dir” \
“–with-zlib-dir” \
“–enable-mbstring” \
“–disable-ipv6″ \ # IPv6 离我们还好远,暂时不用它
“–disable-cgi” \ # 出于安全考虑,禁用 CGI 支持
“–disable-cli” # 出于安全考虑,禁止编译出 php Command Line Shell 命令
# make
# make install
# cp php.ini-dist /etc/php.ini
5. 安装Zend Optimizer
# cd /usr/local/src
# tar xzvf ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.2.0-linux-glibc21-i386/install.sh
安装Zend Optimizer过程的最后不要选择重启Apache。
6. 整合Apache与PHP
# vi /usr/local/apache2/conf/httpd.conf
找到:
AddType application/x-gzip .gz .tgz
在该行下面添加
AddType application/x-httpd-php .php
AddOutputFilterByType DEFLATE text/html text/plain text/xml
找到:

DirectoryIndex index.html index.html.var

将该行改为

DirectoryIndex index.html index.htm index.php

找到:
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf
#Include conf/extra/httpd-default.conf
去掉前面的“#”号,取消注释,设置相关的模块配置文件。
修改完成后保存退出。
# /usr/local/apache2/bin/apachectl restart
7. 查看确认L.A.M.P环境信息,提升 PHP 安全性
# echo ‘#!/usr/local/php/bin/php \
phpinfo(); \
?>‘ > /usr/local/php/phpinfo.php
# chmod 755 /usr/local/php/phpinfo.php
# /usr/local/php/phpinfo.php > /usr/local/php/phpinfo
# more /usr/local/php/phpinfo
检查phpinfo中的各项信息是否正确。
确认 PHP 能够正常工作后,在 php.ini 中进行设置提升 PHP 安全性。
# vi /etc/php.ini
找到:
disable_functions =
设置为:
disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,ini_restore
最后,重新启动 Apache 服务即可。

apache403问题

Forbidden
You don’t have permission to access / on this server.
——————————————————————————–
Apache/2.0.55 (Win32) PHP/5.1.2 Server at localhost Port 80
更改目录的同时还是要修改

#
# Note that from this point forward you must specifically allow
# particular features to be enabled – so if something’s not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# This should be changed to whatever you set DocumentRoot to.
#

#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#

apache主配置文件中文

apache主配置文件配置解说
Apache为网络管理员提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图象映射、重写URL、URL拼写检查以及联机手册man等。也就是说,如果您在LinuxServer上成功安装配置了Apache之后,您的计算机也将随着Apache的生效而摇身一变,成为一台名副其实的WebServer,这种变化的确是激动人心的。在Internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,首先应该把我们的LinuxServer配置成为一台强大的WebServer。本章将详细介绍如何配置Apache服务器。希望各位同仁能够通过阅读本片文章达到理论实践双丰收的目的,在很短的时间里迅速成为一名出色的网络管理员。1.2所需资源
1.2.1所需包
RedHat6.2服务器安装1.2.2所需配置文件
/etc/httpd/conf/httpd.conf系统自带,管理员配置
/etc/httpd/conf/access.conf系统自带,不需要修改
/etc/httpd/conf/srm.conf系统自带,不需要修改
1.3配置方案
/etc/httpd/conf/httpd.conf
说明:apache主配置文件
源文件:ServerTypestandalone
   #定义WebServer的启动方式为standalone,以增强其对大量访问的及时响应性
ServerRoot”/etc/httpd”
   #指定包含httpd服务器文件的目录
LockFile/var/lock/httpd.lock
PidFile/var/run/httpd.pid
ScoreBoardFile/var/run/httpd.scoreboard
Timeout300
   #响应超时量,单位为秒
KeepAliveOn
   #允许用户建立永久连接
MaxKeepAliveRequests100
KeepAliveTimeout15
MinSpareServers5
   #要保留的空闲服务器进程的最小值
MaxSpareServers20
   #要保留的空闲服务器进程的最大值
StartServers8
   #系统启动时的守护进程数
MaxClients150
   #所能提供服务的最大客户端编号,大于它的部分被放入请求队列
MaxRequestsPerChild100
LoadModulevhost_alias_modulemodules/mod_vhost_alias.so
LoadModuleenv_module    modules/mod_env.so
LoadModuleconfig_log_module modules/mod_log_config.so
LoadModuleagent_log_module modules/mod_log_agent.so
LoadModulereferer_log_modulemodules/mod_log_referer.so
LoadModulemime_module    modules/mod_mime.so
LoadModulenegotiation_modulemodules/mod_negotiation.so
LoadModulestatus_module   modules/mod_status.so
LoadModuleinfo_module    modules/mod_info.so
LoadModuleincludes_module  modules/mod_include.so
LoadModuleautoindex_module modules/mod_autoindex.so
LoadModuledir_module    modules/mod_dir.so
LoadModulecgi_module    modules/mod_cgi.so
LoadModuleasis_module    modules/mod_asis.so
LoadModuleimap_module    modules/mod_imap.so
LoadModuleaction_module   modules/mod_actions.so
LoadModuleuserdir_module  modules/mod_userdir.so
LoadModulealias_module   modules/mod_alias.so
LoadModulerewrite_module  modules/mod_rewrite.so
LoadModuleaccess_module   modules/mod_access.so
LoadModuleauth_module    modules/mod_auth.so
LoadModuleanon_auth_module modules/mod_auth_anon.so
LoadModuledb_auth_module  modules/mod_auth_db.so
LoadModuledigest_module   modules/mod_digest.so
LoadModuleproxy_module   modules/libproxy.so
LoadModuleexpires_module  modules/mod_expires.so
LoadModuleheaders_module  modules/mod_headers.so
LoadModuleusertrack_module modules/mod_usertrack.so
LoadModulesetenvif_module  modules/mod_setenvif.so
LoadModuleperl_module    modules/libperl.so
LoadModulephp3_module    modules/libphp3.so
ClearModuleList
AddModulemod_vhost_alias.c
AddModulemod_env.c
AddModulemod_log_config.c
AddModulemod_log_agent.c
AddModulemod_log_referer.c
AddModulemod_mime.c
AddModulemod_negotiation.c
AddModulemod_status.c
AddModulemod_info.c
AddModulemod_include.c
AddModulemod_autoindex.c
AddModulemod_dir.c
AddModulemod_cgi.c
AddModulemod_asis.c
AddModulemod_imap.c
AddModulemod_actions.c
#AddModulemod_speling.c
AddModulemod_userdir.c
AddModulemod_alias.c
AddModulemod_rewrite.c
AddModulemod_access.c
AddModulemod_auth.c
AddModulemod_auth_anon.c
AddModulemod_auth_db.c
AddModulemod_digest.c
AddModulemod_proxy.c
AddModulemod_expires.c
AddModulemod_headers.c
AddModulemod_usertrack.c
AddModulemod_so.c
AddModulemod_setenvif.c
AddModulemod_perl.c
AddModulemod_php3.c
Port80
   #定义服务器所使用的TCP的端口号
Usernobody
Groupnobody
   #以上两行是分配给httpd的新用户的文件权限,出于安全的考虑把
   它们的权限设置成为最低。
ServerAdminroot@weboa.com.cn
   #设置Web管理员的邮件地址
ServerNameWebOA
   #定义客户端从服务器读取数据时返回给客户端的主机名,其缺省值
   是localhost,第一次安装Linux的时候经常这里出错。
DocumentRoot”/home/weboa/jakarta-tomcat/webapps/weboa”
   #设置所有Apache文档的根目录,比如说,用户对
   http://www.weboa.com.cn/index.html?..肭螅珹pache对它
   的响应是/home/weboa/jakarta-tomcat/webapps/weboa/index.html   OptionsFollowSymLinks
   AllowOverrideNone
   OptionsIndexesIncludesFollowSymLinks
   AllowOverrideNone
   Orderallow,deny
   Allowfromall      #允许所有人访问UserDirpublic_html
DirectoryIndexindex.htmlindex.htmindex.shtmlindex.cgi
   #设置多种成功访问主页的方式,为的是提高系统的容错性
AccessFileName.htaccess   Orderallow,deny
   DenyfromallUseCanonicalNameOn
TypesConfig/etc/mime.types
DefaultTypetext/plain   MIMEMagicFileshare/magicHostnameLookupsOff
ErrorLog/usr/httpd/log/error_log
LogLevelwarn
   #定义那些错误类型被记录到错误日志中
Logformat”%h%l%u%t\”%r\”%>s%b\”%{Referer}i\”\”%{User-Agent}i\”"combined
   #所有的Logformat都用来定义日志中的条目
Logformat”%h%l%u%t\”%r\”%>s%b”common
Logformat”%{Referer}i->%U”referer
Logformat”%{User-agent}i”agent
CustomLog/usr/httpd/log/access_logcommon
ServerSignatureOn
Alias/icons/”/home/httpd/icons/”
#定义虚拟主机目录与系统目录的对应关系   OptionsIndexesMultiViews
   AllowOverrideNone
   Orderallow,deny
   AllowfromallScriptAlias/cgi-bin/”/home/httpd/cgi-bin/”
#定义CGI目录   AllowOverrideNone
   OptionsExecCGI
   Orderallow,deny
   AllowfromallIndexOptionsFancyIndexing
AddIconByEncoding(CMP,/icons/compressed.gif)x-compressx-gzip
AddIconByType(TXT,/icons/text.gif)text/*
AddIconByType(IMG,/icons/image2.gif)image/*
AddIconByType(SND,/icons/sound2.gif)audio/*
AddIconByType(VID,/icons/movie.gif)video/*
AddIcon/icons/binary.gif.bin.exe
AddIcon/icons/binhex.gif.hqx
AddIcon/icons/tar.gif.tar
AddIcon/icons/world2.gif.wrl.wrl.gz.vrml.vrm.iv
AddIcon/icons/compressed.gif.Z.z.tgz.gz.zip
AddIcon/icons/a.gif.ps.ai.eps
AddIcon/icons/layout.gif.html.shtml.htm.pdf
AddIcon/icons/text.gif.txt
AddIcon/icons/c.gif.c
AddIcon/icons/p.gif.pl.py
AddIcon/icons/f.gif.for
AddIcon/icons/dvi.gif.dvi
AddIcon/icons/uuencoded.gif.uu
AddIcon/icons/script.gif.conf.sh.shar.csh.ksh.tcl
AddIcon/icons/tex.gif.tex
AddIcon/icons/bomb.gifcore
AddIcon/icons/back.gif..
AddIcon/icons/hand.right.gifREADME
AddIcon/icons/folder.gif^^DIRECTORY^^
AddIcon/icons/blank.gif^^BLANKICON^^
DefaultIcon/icons/unknown.gif
ReadmeNameREADME
HeaderNameHEADER
AddEncodingx-compressZ
AddEncodingx-gzipgztgz
AddLanguageen.en
AddLanguagefr.fr
AddLanguagede.de
AddLanguageda.da
AddLanguageel.el
AddLanguageit.it
LanguagePriorityenfrde   AddTypeapplication/x-httpd-php3.php3
   AddTypeapplication/x-httpd-php3-source.phps
   AddTypeapplication/x-httpd-php.phtmlAddTypeapplication/x-tar.tgz
AddTypetext/html.shtml
AddHandlerserver-parsed.shtml
AddHandlerimap-filemap
BrowserMatch”RealPlayer4\.0″force-response-1.0
BrowserMatch”Java/1\.0″force-response-1.0
BrowserMatch”JDK/1\.0″force-response-1.0   Alias/perl//home/httpd/perl/   SetHandlerperl-script
   PerlHandlerApache::Registry
   Options+ExecCGI
Alias/doc//usr/doc/   orderdeny,allow
   denyfromall
   allowfromlocalhost
   OptionsIndexesFollowSymLinksinclude/etc/httpd/conf/tomcat-apache.conf
Alias/netcard”/home/weboa/jakarta-tomcat/webapps/weboa/net_card”   OptionsIndexesFollowSymLinks
   allowfromallCacheSize5
#定义缓存区大小,以KB为单位。可以根据需要和硬盘空间大小进行设置
CacheGcInterval4
#每隔4小时检查缓存区,如果已经超过CacheSize就删除文件
CacheMaxExpire24
#HTTP文件最多被保持24小时
CacheLastModifiedFactor0.1
#定义HTTP文件失效期,缺省是0.1,意思是说失效期=离最近一次修改的时间X,比如离最近一次修改的时间是5小时,那么失效期就是5X0.1=0.5小时
CacheDefaultExpire1
#这一指令提供一个缺省的时间(小时)来销毁缓存的文件,这些文件的最后更改时间不详。CacheMaxExpire命令不覆盖这一设置##以下是如何对一个目录进行登陆控制的方法##在/etc/httpd/conf/httpd.conf中添加以下内容:
Alias/weboa/”/home/weboa/”   OptionsIndexesMultiViews
   AllowOverrideauthconfig
   Orderallow,deny
   Allowfromall在/home/weboa目录下建立.htaccess文件
   authname”sharedfiles”
   authtypebasic
   authuserfile/etc/httpd/conf/passwd
requirevalid-user在/etc/httpd/conf目录?#葱忻钌扇现募?
htpasswd-cthjthj#创建认证文件和第一个名和密码
htpasswdweboaweboa#添加其他用户名和密码
###以下是做虚拟主机的实现方法###需要在/etc/httpd/conf/httpd.conf中添加下列内容:
Alias/webadmin/”/home/weboa/webadmin/html/”   OptionsIndexesMultiViews
   AllowOverrideNone
   Orderallow,deny
   AllowfromallNameVirtualHost192.168.0.1#虚拟域名的DNS服务器
ServerAdminroot@weboa.com.cn#网管邮件地址
DocumentRoot/home/weboa/webadmin/html/#服务器页面目录
ServerNamewebadmin.weboa.com.cn#服务器名称
需要在/var/named/name2ip.conf中添加的内容:
webadmin   IN   A   192.168.0.1
1.4测试及管理办法
1.4.1测试方法
每当管理员更改了Apache的设置之后,都应执行/etc/rc.d/init.d/httpdrestart使得更改生效。1.4.2管理方法
Apache提供大量的日志文件,当Apache出错的时候,管理员可以根据htppd.conf中的ErrorLog定义的路径来诊断。具体方法是:
tail-f/var/log/httpd/apache/error_log假设你有一些敏感的信息要放在Intranet/Internet上,你首先可能会想到自己开发一个用户身份认证的系统来保护你的Web页面。其实Apache本身就自带了限制用户访问Web页面的机制,实现起来也不复杂。本文介绍在Linux+Apache上的实现方法:1、修改http.conf
  假设你想控制/usr/local/apache/htdocs下各目录的不同访问权限,你可以在与之间加入一行:
AllowOverrideAll
  意思是在/usr/local/apache/htdocs下不同目录的访问权限由该目录下的.htaccess文件来控制,而且不同目录的权限策略可互相覆盖。2、编辑你想要控制的目录下的.htaccess文件
  假设你的phpmyadmin目录在/usr/local/apache/htdocs下,你可以这样在phpmyadmin目录下创建一个.htaccess文件,内容如下:AuthUserFile/usr/local/apache/pass/pwdPhp
AuthTypeBasic
AuthName”DatabaseSecurityZone”
ErrorDocument401/catchErrors/err_401.htmlrequirevalid-user
该文件说明了几个问题:
(1)用户信息存放在/usr/local/apache/pass/pwdPhp中.
(2)认证类型为基本型(此外还有一些其他的加密类型).
(3)ErrorDocument所指向的html文件.
(4)认证方式:用户认证(valid-user)或组认证(valid-group).3.生成用户密码文件
有一个用户密码生成程序:htpasswd(在/usr/local/apache/bin下),它可以加入用户密码信息到指定的文件中,如/usr/local/apache/pass/pwdPhp.我的用户密码文件内容如下:admin:a0Hplbj33QjV2
guest:R0BYSO383QjVT4.重起apachedeamon
/usr/local/apche/bin/apachectlrestart5.测试
用IE浏览受保护的页面,如http://ip/phpmyadmin/(可能需要refresh几次才能凑效),这时应该出现一个身份认证窗口,你需要输入用户名(admin/guest)和密码(******)才能访问这个页面。

Windows 环境下的PHP5 与 Apache 服务器的配置

目前 PHP5 发布了第三个候选版本,估计正式版本不久就快释放了。安装过程应该不会有所变化,下面文章内容将讲述 Windows2000/XP/2003(不建议在 windows 98 下建立 PHP 环境) 下 PHP 环境的配置,服务器选择 Apache 2.0.49,数据库选择 MySQL 4.0.20 版本。
需要下载几个软件包:
  1. PHP5 RC3
  2. Apache 2.0.49
  3. MySQL 4.0.20
下载软件包
1. PHP5 RC3
PHP 的下载地址为: http://www.php.net/downloads.php ,找到如下图位置,下载方框中的两个软件包。其中 PHP 5.0.0RC3 zip package 就是 PHP5 软件包,而 Collection of PECL modules for PHP 5.0.0RC3 则是 PHP5 的 PECL 扩展模块集合包。 下载完成后放于 C 盘备用。
2. Apache 2.0.49
Apache官方下载地址为: http://httpd.apache.org/download.cgi ,找到如下图位置,下载 For Windows 的 MSI 安装包,保存于 C 盘备用。
3. MySQL 4.0.20
 MySQL 官方下载地址为: http://dev.mysql.com/downloads/mysql/4.0.html ,找到 Windows downloads 部分,下载 Without installer 包并保存于 C 盘,如下图所示:
安装 PHP5
  假设你的系统安装于 C 盘,否则下列目录均须改成相应的盘的目录。
  将下载来的 PHP5 RC3(php-5.0.0RC3-Win32.zip) 解压缩到 C:\PHP5\ 目录下。将 PECL 扩展模块集合包里的所有文件解压缩到 C:\PHP5\ext\ 目录下。
  复制 C:\PHP5\ 目录下的 php5ts.dll 文件到 C:\windows\(如果是 windows 2000 操作系统,则为 C:\WINNT\ 目录,下同,不再重复说明) 目录下。
  复制 C:\PHP5\ 目录下的下列 dll 文件于 C:\windows\system32\ 目录下:
fdftk.dll
fribidi.dll
gds32.dll
libeay32.dll
libintl-1.dll
libmhash.dll
libmysql.dll
libmysqli.dll
ntwdblib.dll
ntwdblib.dll
yaz.dll
其中 libmysql.dll 为 MySQL 4.1 之前版本的扩展支持,libmysqli.dll 为 MySQL 4.1 之后版本的扩展支持。因为我上面下载的是 MySQL 4.0.20 ,所以其实复制 libmysql.dll 即可。
  复制 C:\PHP5\ 目录下的 php.ini-dist 文件到 C:\windows\ 目录下,并改名为 php.ini ,并用记事本打开编辑:
  定位到下面两行:
; Directory in which the loadable extensions (modules) reside.
extension_dir = “./”
修改下面一行使它指向 C:\PHP5\ext\ 目录,修改后如下:
; Directory in which the loadable extensions (modules) reside.
extension_dir = “C:\PHP5\ext\”
定位到下面两行:
;Windows Extensions
;Note that ODBC support is built in, so no dll is needed for it.
可以看到下面列出了所有可支持扩展,我们可以去掉前面的分号来使 PHP 支持相应的扩展。我测试了下,支持下列扩展,也可以根据选择是否配置。
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_curl.dll
extension=php_dba.dll
;extension=php_dbase.dll
extension=php_dbx.dll
;extension=php_exif.dll
extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
;extension=php_pgsql.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_tidy.dll
;extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
;extension=php_yaz.dll
extension=php_zip.dll
保存文件并退出。
安装 Apache 2.0.49
 准备好下载下来的apache_2.x.x-win32-x86-no_ssl.msi 。双击后开始安装。一步 Next 下来,同意许可协议后会有填写服务器信息的页面,本地调试,前面两个输入 localhost 即可。如下:
一路 Next 下来,均按照默认路径安装――当然你也可以选择你自己需要的路径。Apache 会自动安装并启动相关服务。并在任务栏右下角运行着一个 Apache 监控器:
我们可以从这个监控器来重起、停止、启动 Apache 服务。双击小图标打开控制界面:
接下来对 Apache 的配置文件进行配置,用记事本打开 C:\Program Files\Apache Group\Apache2\conf\ (我这里是按照默认安装路径安装,后面的设置按照自己的安装路径做相应的改变) 目录下的 httpd.conf 文件,定位到下面这行:
DirectoryIndex index.html index.html.var
在其后面添加一个 PHP 默认页,通常是 index.php ,如下:
DirectoryIndex index.html index.html.var index.php
为了使 Apache 识别 PHP 的相关扩展名,搜索并定位到下面这个部分:

AllowOverride None
Options None
order allow,deny
Allow from all

在后面添加如下两行:
AddType application/x-httpd-php .php .phtml .php3 .php4
AddType application/x-httpd-php-source .phps
指定 php 模块,找到并定位到如下这行:
#LoadModule ssl_module modules/mod_ssl.so
在下面添加一行:
LoadModule php4_module c:\php5\php5apache2.dll
使它指向 PHP5 目录下的 php5apache2.dll 文件,路径一定要准确。
  为了指定 Apache 识别中文,我们指定 GB2312 为默认编码。应该找到并定位到下面这行
AddDefaultCharset ISO-8859-1
将其修改为:
AddDefaultCharset GB2312
另外,如果要禁止目录浏览,查找并定位到下面这几行:

#……
#一些注释
#……
Options Indexes FollowSymLinks
去掉几行注释下面进跟着的一行的 Indexes 即可,修改后:

#……
#一些注释
#……
Options FollowSymLinks
OK,保存 httpd.conf 文件后重起 Apache 服务器。
安装MySQL 4.0.20
将 mysql-4.0.20-win-noinstall.zip 文件夹压缩到 C 盘根目录下(注意:使用该版本 MySQL 必须将解压缩后文件夹放于 C 盘根目录下),解压缩后可以在 C 盘根目录下找到名为 mysql-x.x.x 的文件夹。将其改名为 mysql 。
  进入 bin 目录,找到 winmysqladmin.exe 文件,打开它。第一次运行会提示输入一个新的用户名和密码。这里可以随意选择你需要的用户名和密码输入,作为 my.ini 的默认用户名和密码。如下图:
点击 OK 确定后,WinMySQLadmin 将缩小到右下角的任务栏里:
我们来看看 MySQL 服务是否启动。打开“控制面板”,进入后打开“管理工具”,再打开“服务”。如果一切顺利的话我们会看到 MySQL 已启动的信息,如下图:
到这里 MySQL 的安装告一段落,非常简单。
测试 PHP 是否配置成功:
  打开记事本,输入如下这行代码:

保存为 phpinfo.php 文件,存放于 Apache2\htdocs\ 目录下,记得保存的时候选择保存类型为“所有文件”,如下图:
好了,打开浏览器,在地址栏中输入: http://localhost/phpinfo.php 并回车,如果一切顺利的话你将看到下面这个页面,到此 PHP5 的配置大功告成:
注:本文未从安全性和性能上来讨论服务器的配置,相应的安全配置请参考其他手册,本文仅简单介绍了 PHP5 环境的配置,作为学习 PHP5 的前提,本文并不能作为服务器配置文章来阅读,比如,这里没有设置 MySQL 的 root 用户密码,将导致很大的安全隐患,所以请读者自行设置。
作者简介