二、Apache的安装
1、RHEL4系统中默认安装了Apache服务器,软件包名称是httpd,版本是2.0.52,它在第二张光盘中,还有相关的软件包httpd-manual、httpd-suexec、system-config-httpd都是系统默认安装的。
#rpm -qa |grep httpd
httpd软件包
是Apache服务器的程序软件包
httpd-manual软件包
是Apache服务器的手册文档
Apache服务器RPM安装后的目录和文件
目录或文件                           描述
/etc/httpd/               Apache服务器的根目录
/etc/httpd/conf/httpd.conf Apache服务器的主配置文件
/var/www/html/              Apache服务器的文档根目录
/etc/init.d/httpd              Apache服务器的启动脚本文件
/var/log/httpd/access_log Apache服务器的访问日志文件
/var/log/httpd/error_log Apache服务器的错误日志文件
2、Apache编译安装
A、编译安装的优点
具有较大的自由度,功能可定制
可及时获得新版本
普遍适用于大多数Linux版本
B、编译安装的步骤
获得源码包
确认编译环境
释放源码包文件
编译前的配置
编译服务器程序
安装已编译完成的程序
1)、获得Apache服务器的源码包
从Apache的官方网站下载源码包
http://httpd.apache.org/download.cgi或用命令#wget http://mirror.vmmatrix.net/apache/httpd/httpd-2.0.59.tar.gz获得源码包文件httpd-2.0.59.tar.gz,大小5MB。
用#ll httpd-2.0.59.tar.gz确认是否下载成功。
2)、确认Linux系统中的编译环境  (RHEL4默认不安装linux系统中的开发编译环境)
编译安装需要系统中具备gcc等编译工具
可使用图形界面的软件包管理程序安装完整的编译环境
# system-config-packages
用#rpm -q gcc 查询验证
3)、Apache编译安装
编译步骤操作
A使用tar命令释放源代码安装包 (将源码包负责到/usr/local/src目录中,它是保存编译程序源代码的目录,在它目录下用tar解压)
#cp httpd-2.0.59.tar.gz /usr/local/src
#cd /usr/local/src
# tar zxvf httpd-2.0.59.tar.gz
成功后当前目录下会出现httpd-2.0.59目录,进入该目录
#ls
httpd-2.0.59  httpd-2.0.59.tar.gz
#cd httpd-2.0.59
B使用./configure命令进行编译前的配置工作
# ./configure --prefix=/usr/local/apache2 \        (使用“--prefix”选项指定Apache服务器程序将要安装到的系统目录)
> --enable-so --enable-rewrite                       (使用“--enable-so”选项设置Apache服务器可以使用动态加载模块功能 )
 (使用“--enable-rewrite”选项设置Apache服务器具有rewrite功能,可以实现对动态网页地址的重写,从而使网页访问者可以通过更加简单和容易记忆的网页地址访问动态网页系统中的网页 )
C使用make命令进行程序的编译 (该过程是真正将程序源代码转换成可执行程序的过程)
# make
D使用make install命令将已经编译的文件安装到系统中(根据./configure的配置将Apache安装到/usr/local/apache2目录中)
# make install 
#ls /usr/local 验证
#du -sh /usr/local/apache2  查看apache2目录大小。
E、Apache服务器的目录结构
“/usr/local/apache2/”目录中的子目录 (apache2是apache服务器的根目录)
子目录                          描述
bin 保存Apache服务器运行和管理所需的执行程序
lib 保存Apache服务器运行所需的库文件
conf 保存Apache服务器的配置文件
htdocs Apache服务器的文档根目录
manual 保存Apache服务器的帮助手册文件(网页格式)
man 保存Apache服务器的手册页文件  (man1和man8)
logs 保存Apache服务器的日志文件 (access_log访问日志文件,error_log错误日志文件)
三、Apache的基本配置
1、Apache服务器的启动和停止
1)使用apachectl脚本控制服务程序
apachectl脚本文件
/usr/local/apache2/bin/apachectl
启动httpd服务程序
apachectl start
重新启动httpd服务程序
apachectl restart
停止httpd服务程序运行
apachectl stop
测试httpd.conf的语法
apachectl -t
(httpd是服务器的执行程序,apachect1是服务程序的启动脚本)
不使用任何参数显示帮助信息
#bin/apachect1
为让系统启动时自动运行要在rc.local中添加启动命令
#vi /etc/rc.local
/usr/local/bin/apachect1  start
需要在httpd.conf头部添加ServerName www.benet.com (域名)做为apache服务器设置的主机域名。
还要在授权DNS服务器中添加A记录,以便访问apache服务器主机。
2、apache的配置
1)httpd.conf配置文件解析
httpd.conf配置文件的结构 (由注释行和设置行组成)
注释行以“#”开始
不以“#”开始的行是配置文件中真正有效的设置内容
获得完整的有效配置清单
使用grep命令去除文件中以#开始的行
grep -v "^#" conf/httpd.conf
用wc -1计算httpd.conf文件的行数内容
#wc  -1 conf/httpd.conf      
#grep -v "^#" conf/httpd.conf  | wc -1
httpd.conf中的全局配置
   设置项                                   说明
ServerRoot 设置Apache服务器的根(Root)目录 (如果不使用绝对路径,将被理解为是在服务器的根目录中)
ServerAdmin 设置Apache服务器管理员的E-mail地址 (可以通过该E-mail联系服务器管理员)
ServerName 设置Apache服务器的主机名
DocumentRoot 设置Apache服务器网页(文档)根目录
Listen              设置Apache服务器监听的网络端口号 (默认为80)
PidFile              设置保存httpd服务器程序进程号(PID)的文件 (默认为logs/httpd.pid,logs目录在apache根目录                             中)
ErrorLog              设置Apache服务器中错误日志文件的路径和文件名(默认为logs/error_log)
CustomLog 设置Apache服务器中访问日志文件的路径和格式类型
Timeout              设置Web服务器与浏览器之间网络连接的超时秒数 (默认300s)
KeepAlive 设置为Off时服务器不使用保持连接功能(一次连接一次传输),传输的效率比较低;设置为On时(                            一次连接多次传输),可以提高服务器传输文件的效率,建议设置保持连接功能有效                      MaxKeep
AliveRequests 当KeepAlive为On时,设置客户端每次连接允许请求响应的最大文件数 ,默认设置为100个文件
KeepAliveTimeout用于设置保持连接的超时秒数,默认15s,客户机两次相邻请求超过此值时需要重新进行连接请求。
httpd.conf中的区域设置
除全局设置外,httpd.conf文件中的大多数设置都是包括在“区域”中的
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory> 
使用</Directory>定义根区域的结束
使用<Directory />定义根区域的开始 (区域设置内容只作用于区域内部)
2)建立系统用户的个人主页
httpd.conf文件配置
在httpd.conf文件中需要进行UserDir的设置
#grep UserDir /usr/local/apache2/conf/httpd.conf
UserDir public_html
切换用户
#su - zhangsan
$ pwd
/home/zhangsan
用户目录设置
用户宿主目录需设置为其他用户可以进入
$ ls -ld  .
$ chmod o+x ~
$ ls -ld  .
用户宿主目录中需要建立public_html目录
$ mkdir public_html
public_html目录中需要建立index.html文件
$ vi public_html/index.html
访问用户个人主页
http://192.168.1.2/~zhangsan/ (http://192.168.1.2/服务器地址,~zhangsan用户zhangsan的宿主目录,~放在用户名前指定用户宿主目录)
3)域名虚拟主机的配置
httpd.conf文件中添加虚拟主机
NameVirtualHost 192.168.0.2
<VirtualHost 192.168.0.2:80>
    ServerName www.benet.com
    DocumentRoot /home/benet.com
</VirtualHost>
NameVirtualHost用于设置域名虚拟主机使用的IP地址
使用<VirtualHost 192.168.0.2:80>和</VirtualHost>建立在地址“192.168.0.2:80”上的虚拟主机区域
使用ServerName设置当前虚拟主机所使用的域名
使用DocumentRoot设置当前虚拟主机所使用的文档根目录
实例
#mkedir /home/1benet.com
#echo “www.1benet.com home page” > /home/1benet.com/index.html
#mkedir /home/2benet.com
#echo “www.2benet.com home page” > /home/2benet.com/index.html
#vi /usr/local/apache2/conf/httpd.conf
NameVirtualHost  192.168.0.2
 
<VirtualHost  192.168.0.2:80>
ServerName  www.1benet.com
DocumentRoot  /home/1benet.com
</VirtualHost>
<VirtualHost  192.168.0.2:80>
ServerName  www.2benet.com
DocumentRoot  /home/2benet.com
</VirtualHost>
重启httpd服务
#usr/local/apache2/bin/apachect  stop
#usr/local/apache2/bin/apachect  start
没有DNS,因此要做hosts中设置 (如果是windows,hosts在c:\windows\system32\dirvers\etc\hosts目录中)
#vi /etc/hosts
www.1benet.com
192.168.0.2      www.2benet.com
在浏览器中输入验证
http://www.1benet.com
http://www.2benet.com
3、Apache的日志
Apache的两类日志文件
httpd.conf中对日志文件的设置(默认设置)
ErrorLog logs/error_log
CustomLog logs/access_log common
访问日志文件
用于记录对Apache服务器的访问事件
/usr/local/apache2/logs/access_log
每一行为一个访问记录,每个记录从左至由各字段的含义为
客户机IP地址
客户机访问服务器的日期和时间
客户机向服务器发出的访问请求
错误日志文件
用于记录Apache服务器中的错误事件
/usr/local/apache2/logs/error_log
每一行为一个访问记录,每个记录从左至由各字段的含义为
错误事件发生的日期和时间
错误事件的类型
错误事件的内容描述
四、Apache与其他应用程序的协作
1、LAMP网页应用架构
LAMP的组成
 Linux作为操作系统(web服务器的平台)(LAMP中的L)
 Apache作为前端的Web服务器   (LAMP中的A)
 MySQL作为后端的数据库服务器   (LAMP中的M)
 PHP/Perl/Python作为编程语言(应用系统)   (LAMP中的P)
LAMP的特点
 全部组成部分都采用开源软件
 适合于构建各种类型的网页应用系统
 具有广泛的应用系统支持
2、配置LAMP应用
1)安装并管理MySQL服务器
A、获得MySQL软件包
http://dev.mysql.com/downloads/
或# wget    http://downloads.mysql.com/archives/mysql-3.23/mysql-3.23.58-pc-linux-i686.tar.gz
B、添加mysql用户和组
# groupadd -g 200 mysql
# useradd -u 200 -g mysql -d /usr/local/mysql/data -M mysql 
C、释放MySQL软件包
# tar zxvf mysql-3.23.58-pc-linux-i686.tar.gz -C /usr/local/
D、为了便于管理,需要用ln命令建立该目录的符号链接目录mysql
# cd /usr/local/
# ln -s mysql-3.23.58-pc-linux-i686/ mysql 
E、在/var/lib/mysql目录中建立子目录mysql,并用chown设置该目录的属主属组
#mkdir  /var/lib/mysql
#chown -R mysql.mysql  /var/lib/mysql
#chown -R root.mysql  /usr/local/mysql-3.23*
#chown -R mysql.mysql  /usr/local/mysql/data
F、进入MySQL服务器程序目录,复制mysql的配置文件my.cnf到/etc目录中,并执行mysql_install_db命令初始化
#cd /usr/local/mysql
#cp support-files/my-medium.cnf  /etc/my.cnf (因为安装系统时已在/etc目录中存在my.cnf,过程中会提示覆盖原有的my.cnf文件)
G、初始化MySQL服务器中的数据库
# ./scripts/mysql_install_db
H、再用chown命令设置/var/lib/mysql和/usr/local/mysql/data的属主属组为mysql,保证mysql系统用户有足够的权限访问
#chown -R mysql.mysql /var/lib/mysql
#chown -R mysql.mysql /usr/local/mysql/data
I、启动mysql服务程序
# /usr/local/mysql/bin/safe_mysqld --user=mysql & (用--user指定以系统用户mysql身份运行)
J、设置数据库管理员用户口令
# /usr/local/mysql/bin/mysqladmin -u root password 'myrootpw' (因为root初始密码为空)
K、登录数据库
# /usr/local/mysql/bin/mysql -u root -p (-u指定登陆用户,-p提示用户输入口令)
注意:使用root登陆后会出现mysql>提示符,在此状态下可输入命令对MySQL数据库进行操作,为了安装phpBB论坛,需要使用“CREATE DATABASE phpbb;”命令建立phpbb数据库,该数据库提供给phpBB程序使用。
2)安装并管理PHP环境
A、获取php源码包
http://www.php.net/downloads.php 或wget http://cn2.php.net/distributions/php-4.4.4.tar.gz
B、释放php源码包
# tar zxvf php-4.4.4.tar.gz -C /usr/local/src/
C、完成编译前的配置
# cd /usr/local/src/php-4.4.4
# ./configure --prefix=/usr/local/php4 \  (--prefix设置php程序的安装路径 )
> --with-apxs2=/usr/local/apache2/bin/apxs \  (--with-apxs2设置php为Apache服务器提供的模块的安装位置 )
> --with-mysql=/usr/local/mysql \      (--with-mysql设置mysql服务器程序的安装位置 )
> --with-config-file-path=/usr/local/php4   (--with-config-file-path设置php程序的配置文件所在的位置 )
D、编译并安装php程序
# make; make install
E、建立php的配置文件
# cp php.ini-dist /usr/local/php4/php.ini
3)进行Apache服务器中的设置
A、httpd.conf中对php的配置
#vi /usr/local/apache2/conf/httpd.conf
确认下面一行存在并使之生效
LoadModule php4_module modules/libphp4.so
添加下面的一行
AddType application/x-httpd-php .php
在下面一行的末尾添加index.php,以便apache能够正确处理php类型的index文件
DirectoryIndex index.html index.html.var index.php
B、停止并再次启动httpd服务程序
# /usr/local/apache2/bin/apachectl stop
# /usr/local/apache2/bin/apachectl start
E、测试php网页
建立php测验页
# vi /usr/local/apache2/htdocs/test.php
<?php
phpinfo( );
?>
访问测试页
http://192.168.1.2/test.php
4)安装phpBB论坛系统
A、获得phpBB安装包
http://www.phpbb.com/downloads.php 或#wget http://jaist.dl.sourceforge.net/sourceforge/phpbb/phpbb-2.0.21.tar.gz
B、释放phpBB安装包
# tar zxvf phpBB-2.0.21.tar.gz -C /usr/local/apache2/htdocs/ (释放过程会建立phpBB2子目录)
C、设置目录属主和属组
# chown -R nobody:nobody phpBB2/
D、访问phpBB安装向导页面
http://192.168.1.2/phpBB2/
E、删除配置目录
# cd /usr/local/apache2/htdocs/phpBB2/
# rm -rf install/ contrib/
F、访问phpBB论坛首页
http://192.168.1.2/phpBB2/
注:
./configure结合makefilein进行配置检测
URL是资源统一定位符
--sysconfdir=/etc/httpd
如果不用--ref它会默认安装到APACHE2目录中
apachectl类同于rndc
开启虚拟主机
<LIFMODULE>
Name VirtualHost *:80
<VirtualHost *:80>
server name www.benet.org
documentroot
mysql安装包有三种
rpm包
二进制包(可能运行不了)
源码包 (结合最紧凑)