使用Apache搭建Web网站服务器
一:实验目标
apache服务器常见概念
apache服务器安装及相关配置文件
例1:为公司内网搭建一个web服务器
例2:使用rpm搭建lamp 环境
例3:修改网根目录及对应参数,设置访问权限
例4,:使用别名,引用网站根目录以外的路径。
例5:打开软链接功能。 通过软件链接直接引用网站根目录以外的内容
例6:当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表
例7:通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。
例8:配置apache虚拟主机,实现在一台服务器上运行多个网站
二:实验环境
服务端:xuegod63.cn IP:192.168.1.63
客户端:xuegod64.cn IP:192.168.1.64
三:实验步骤
一:相关服务概述
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
WEB服务器也称为WWW(WORLD WIDE WEB,万维网)服务器,主要功能是提供网上信息浏览服务。
模式: B/S 模式,服务的端口为:80: http 443:https
在Apache中,其配置文件目录为“/etc/httpd/conf/httpd.conf”,这里面包括设置网站资源的存放目录及一些相关的配置。
二:服务安装及相关配置详解
1:安装httpd服务器
1.1:安装服务器端:httpd及测试工具
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# yum install elinks -y
[root@xuegod63 ~]# yum install httpd-devel -y
[root@xuegod63 Packages]# yum install elinks -y
1.2启动服务
[root@xuegod63 ~]# service httpd restart
[root@xuegod63 ~]# chkconfig httpd on
1.3:查看端口
[root@xuegod63 ~]# netstat -anutp | grep 80
tcp 0 0 :::80 :::* LISTEN 3854/httpd
2:服务相关配置文件
2.1:查看目录下相关文件作用
[root@xuegod63 httpd]# pwd
/etc/httpd
[root@xuegod63 httpd]# ls
conf conf.d logs modules run
注释:
Conf 是存放服务的主配置文件
conf.d 是存放apache的主页面信息
2.2:查看配置信息
[root@xuegod63 ~]#vim /etc/httpd/conf/httpd.conf
1)apache服务器的外部相关配置内容
ServerRoot "/etc/httpd" #apache配置文件的根目录
Timeout 60 #超时时间,即连接服务端在60秒内没有任何操作,即自动断开
Listen 80 #监听的端口
ServerAdmin root@localhost #设置管理员,e-mail 地址
ServerName www.example.com:80 #服务器主机名.
2)apache服务器的主配置内容
DocumentRoot "/var/www/html" #网站页面根目录,存放文档的地方
<Directory "/var/www/html">
Options Indexes FollowSymLinks #O目录浏览 #Followsymlinks:可以用连接,要是想要禁止显示文件目录,可以直接在‘indexes’前加‘-’。
AllowOverride None
Order allow,deny #目录与访问的控制
Allow from all
</Directory>
注释:Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。
谁写到后面,谁的优先级高。
3)别名功能,引用网站根目录以外的路径。
Alias /icons/ "/var/www/icons/" #别名和别名目录
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
4)网站没有默认首页的时候显示的内容
</Directory> Options Indexes #当一个目录没有默认首页时,允许显示此目录列表
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
DirectoryIndex index.html index.html.var #指定默认首页
AddDefaultCharset UTF-8 #设置服务器的默认编码为: UTF-8
三:实战
实战1:
1:实验要求
首先取消apache默认欢迎页,改为“welcome to www.xuegod.cn”,使用rpm搭建lamp 环境,修改网根目录及对应参数,设置访问权限,允许1.0网段和百度来访问,不允许2.0网段访问。使用别名功能,引用网站根目录以外的路径。将/usr/local/phpmyadmin 目录通过虚拟目录功能添加到网站根目录。当访问http://192.168.1.63/phpmyadmin/ 时,就可以访问目录/usr/local/phpmyadmin中的内容。
2:实验步骤
例1:为公司内网搭建一个web服务器
(1)apache默认欢迎页如下图所示,其欢迎页的默认目录为“/etc/httpd/conf.d/welcome.conf”
(2)取消apache默认欢迎页:它会显示目录,列表,图标
[root@xuegod63 ~]# vim /etc/httpd/conf.d/welcome.conf
#<LocationMatch "^/+$"> #把红色内容注释
# Options -Indexes
# ErrorDocument 403 /error/noindex.html
#</LocationMatch>
[root@xuegod63 ~]# service httpd restart
(3)重新创建首页并重启服务
[root@xuegod63 conf.d]# echo 'welcome to www.xuegod.cn!' > /var/www/html/index.html
[root@xuegod63 ~]# service httpd restart
测试:
例2:使用rpm搭建lamp 环境
LAMP 环境是由多个数据包共同搭建完成的,LAMP = linux+apache+mysql数据库+php,搭建完成之后,最终会支持php
1:安装相应的软件包
[root@xuegod63 ~]# yum install httpd mysql-server php php-mysql -y
[root@xuegod63 ~]# service mysqld start
[root@xuegod63 ~]# chkconfig mysqld on
2:编写php首页文档
[root@xuegod63 html]# cd /var/www/html/
[root@xuegod63 html]# vim index.php
<?php
phpinfo();
?>
[root@xuegod63 html]# service httpd restart
3:测试apache是否支持php
例3:修改网页根目录及对应参数,设置访问权限
1):创建根目录并拷贝数据
[root@xuegod63 html]# mkdir bbs
[root@xuegod63 html]# cp -r /boot/grub/ bbs/
[root@xuegod63 bbs]# cp /etc/passwd /var/www/html/bbs/
2):修改Apache主配置文件,给其权限
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
改:#DocumentRoot “/var/www/html”
为:DocumentRoot “/var/www/html/bbs”
<Directory "/var/www/html/bbs">
Options FollowSymLinks
Order allow,deny
#Allow from all
allow from 192.168.1.0/24
deny from 192.168.2.0/24
allow from .baidu.com
</Directory>
#Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。
谁写到后面,谁的优先级高。
3)重启测试
[root@xuegod63 conf]# service httpd restart
例4:使用别名功能,引用网站根目录以外的路径
在这里/phpmyadmin/ "/usr/local/phpmyadmin/ 引用别名功能,实现访问别名直接能够充分从网页根目录进行访问。所谓的别名功能指的就是跳板原理,将网站根目录与新创建的目录关联起来。当方位新目的之手,直接从新目录跳转到网站的根目录,从而访问到网站的根目录。
创建别名目录,拷贝数据并创建网页首页面
[root@xuegod63 ~]# mkdir /usr/local/phpmyadmin
[root@xuegod63 ~]# cp -r /boot/grub/ /usr/local/phpmyadmin/
[root@xuegod63 ~]# echo "wecome to my test" > /usr/local/phpmyadmin/test.html
修改Apache服务器的主配置文件
[root@xuegod63 ~]# vim /etc/httpd/conf/httpd.conf
注:Alias /phpmyadmin/ "/usr/local/phpmyadmin/" #/phpmyadmin/ 可以随意起。比如改/phpmyadmin/ 为/php/ 则访问链接: http://192.168.1.63/php
测试
[root@xuegod63 ~]# service httpd restart
注释:这里做的时候即使不显示内容,也是正常的。
实战2:
例5:打开软链接功能。 通过软件链接直接引用网站根目录以外的内容
例6,当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表
例7:通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。
1:实验要求
当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表
修改配置文件。在打开软链接功能。 通过软件链接直接引用网站根目录以外的内容。通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。 设置/usr/local/phpmyadmin/目录,只能通过用户名密码方式访问。
2:实验步骤
1)禁止显示目录列表
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf # 修改红色标记内容
Alias /phpmyadmin/ "/usr/local/phpmyadmin/"
<Directory "/usr/local/phpmyadmin/">
Options -Indexes FollowSymLinks #在Indexes 前加-减号,此目录下没有默认首页时,禁止显示目录
AllowOverride None
Order deny,allow
Allow from all
</Directory>
测试
[root@xuegod63 ~]# service httpd restart
3)通过软件链接直接引用网站根目录以外的内容
[root@xuegod63 html]# mkdir /web2
[root@xuegod63 html]# echo "welcome to the test1" > /web2/b.html
[root@xuegod63 html]# ln -s /web2 /var/www/html/web2 #ln创建软连接,s指原目标
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/bbs">
Options Indexes FollowSymLinks #默认开启
</Directory>
测试
[root@xuegod63 ~]# service httpd restart
3)通过用户认证的方式
方法一:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf #在需要使用用户验证的目录的相关Directory段落添加以下红色标记内容:
Alias /phpmyadmin/ "/usr/local/phpmyadmin/"
<Directory "/usr/local/phpmyadmin/">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
authtype basic
authname "MySQL admin software......."
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
#require user tom bob
require valid-user
</Directory>
参数说明:
authtype basic # 1)authtype命令:指定认证类型为:basic。
authname "MySQL admin software......." #请不要动我的奶酪
# AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。如图:
authuserfile /etc/httpd/conf/passwd.secret #AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。
require命令:指定哪些用户才能被授权访问。如:
require user user1 user2(只有用户user1和user2可以访问)
require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)
利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文
[root@xuegod63 phpmyadmin]# htpasswd -h #查看参数
-c Create a new file.
-m Force MD5 encryption of the password.
[root@xuegod63 conf]# htpasswd -cm 存放用户名和密码的文件名 用户名
[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
#第一个生成用户名和密码,需要创建文件,因此需要加-c参数
[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 123456
Re-type new password: 123456
Adding password for user bob
测试:
[root@xuegod63 conf]# service httpd restart
http://192.168.1.63/phpmyadmin/
注释:这里记得把之前写的“禁止显示目录列表”的‘-’给去掉。
方法二:
#vim httpd.conf #在需要使用用户验证的目录的相关Directory段落添加
Alias /phpmyadmin/ "/usr/local/phpmyadmin/"
<Directory "/usr/local/phpmyadmin/">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
AllowOverride AuthConfig
</Directory>
# AllowOverride AuthConfig一行表示允许对/usr/local/phpmyadmin/目录下的文件进行用户认证。
在要保护的目录下创建一个存放进行用户认证信息的文件:
[root@xuegod63 conf]# vim /usr/local/phpmyadmin/.htaccess #写入以下内容
authtype basic
authname "MySQL admin software by .htaccess"
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
require valid-user
利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文
[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 123456
Re-type new password: 123456
Adding password for user bob
[root@xuegod63 conf]# cat /etc/httpd/conf/passwd.secret #查看内容
tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.
bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0
[root@xuegod63 conf]# service httpd restart
测试:
http://192.168.1.63/phpmyadmin/
例8 ,配置apache虚拟主机,实现在一台服务器上运行多个网站
apache虚拟主机实现有三种方法:
1、通过不同的IP地址
2、通过不同的域名
3、通过不同的端口号
三种都需要把虚拟主机功能打开:
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
改:#NameVirtualHost *:80
为:NameVirtualHost *:80
方法1:1、通过不同的IP地址,解析不同域名
1)给服务器增加IP(另一个域名解析出来的那个IP)
[root@xuegod63 ~]##ifconfig eth0:1 192.168.1.56 netmask 255.255.255.0
[root@xuegod63 ~]## mkdir /var/www/html/bbs/
[root@xuegod63 ~]# echo "bbs.xuegod.cn" > /var/www/html/bbs/index.html
[root@xuegod63 ~]# echo "www.xuegod.cn" > /var/www/html/index.html
2)修改httpd.conf
#vim httpd.conf 在文件的最后,添加以下内容
<VirtualHost 192.168.1.63:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.56:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
3)测试:
[root@xuegod63 conf]# service httpd restart
http://192.168.1.56/ bbs.xuegod.cn
http://192.168.1.63/ www.xuegod.cn
方法二:通过不同域名:
在域名管理后台,修改DNS配置,www.xuegod.com与bbs.xuegod.com解析成相同的IP。
1)修改httpd.conf
#vim httpd.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName www.xuegod.cn
ErrorLog logs/www.xuegod.cn-error_log
CustomLog logs/www.xuegod.cn-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName bbs.xuegod.cn
ErrorLog logs/bbs.xuegod.cn-error_log
CustomLog logs/bbs.xuegod.cn-access_log common
</VirtualHost>
2)添加主机域名
[root@xuegod63 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63.cn
192.168.1.63 www.xuegod.cn
192.168.1.63 bbs.xuegod.cn
192.168.1.64 xuegod64.cn
3)测试:
[root@xuegod63 conf]# service httpd restart
[root@xuegod63 ~]# elinks www.xuegod.cn
[root@xuegod63 ~]# elinks bbs.xuegod.cn
方法三:基于端口配置虚拟主机:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf
改: Listen 80
为:Listen 80
Listen 81 # 更改为你要添加的多个端口
1)再建立两个虚拟主机:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf # 在文件的最后添加
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName www.example.com
ErrorLog logs/www.example.com-error_log
CustomLog logs/www.example.com-access_log common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName bbs.example.com
ErrorLog logs/bbs.example.com-error_log
CustomLog logs/bbs.example.com-access_log common
</VirtualHost>
2)
测试:
[root@xuegod63 conf]# service httpd restart
http://192.168.1.63/
http://192.168.1.63:81/