使用 Apache 搭建Web网站服务器(二)

例1、搭建一台测试 web 服务器

部门内部搭建一台WEB服务器,采用的IP地址和端口为192.168.1.128:80,首页采用index.html文件。管理员E-mail地址为 cool@zh.cn,网页的编码类型采用UTF-8,所有网站资源都存放在/var/www/html目录下,并将Apache的配置文件根目录设置为/etc/httpd目录。

修改配置文件:

vim /etc/httpd/conf/httpd.conf

设置Apache 的根目录为/etc/httpd

设置httpd 监听端口80

设置管理员E-mail地址为  cool@zh.cn

设置WEB 服务器的主机名和监听端口为192.168.1.128:80

设置Apache 文档目录为/var/www/html

设置主页文件为 index.html

设置服务器的默认编码为UTF-8

修改配置文件之前,备份一份

vim /etc/httpd/conf/httpd.conf  
ServerRoot "/etc/httpd"  #apache配置文件的根目录
Timeout 60  #超时时间  
Listen 80   监听的端口
ServerAdmin cool@zh.cn #设置管理员,e-mail 地址
ServerName 192.168.1.128:80   #服务器主机名
DocumentRoot "/var/www/html"   #网站页面根目录
Options Indexes FollowSymLinks   #当一个目录没有默认首页时,允许显示此目录列表

DirectoryIndex index.html index.php   #指定默认首页
AddDefaultCharset UTF-8   # 设置服务器的默认编码为: UTF-8

 取消 apache  默认欢迎页

vim /etc/httpd/conf.d/welcome.conf

# This configuration file enables the default "Welcome"
# page if there is no default index page present for
# the root URL.  To disable the Welcome page, comment
# out all the lines below.
#
#<LocationMatch "^/+$">   #把红色内容注释
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#</LocationMatch>

 

创建首页

echo 'Welcome to my life !' > /var/www/html/index.html

测试:


LAMP 环境,几种不同的安全访问机制的实现:

一、修改网站目录对应参数及权限

修改网站默认根目录,并且设置访问权限,只有在我允许的范围之内可以访问

修改网站默认根目录

设置文档目录为/var/www/html/bbs

修改 DocumentRoot 路径为 指定的目录

允许所有人访问/var/www/html/bbs 目录

目录与访问控制:

<Directory "/var/www/html/bbs">      #子目录会继承这个目录的属性

    Options  FollowSymLinks            #Options:Indexes:目录浏览 

    AllowOverride None                     #Followsymlinks:可以用连接

    Order allow,deny

    Allow from 192.168.18.0/24                     #从哪里来的允许 

    Deny from 192.168.16.0/24                      #从哪里来的拒绝

    Allow from  .baidu.com

#Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。

谁写到后面,谁的优先级高

</Directory>

创建目录,创建测试首页

[root@python ~]# mkdir /var/www/html/bbs
[root@python ~]# cp /var/www/html/index.html /var/www/html/bbs/

注意:上面的访问控制的方法是Apache2.2版本中的写法,在2.4中是不支持的

Apache2.4的访问控制:

Require all granted #允许所有
Require all denied #拒绝所有
Require method http-method [http-method] ... #允许,特定的HTTP方法
Require user userid [ userid ] ... #允许,特定用户
Require group group-name [group-name] ... #允许,特定用户组
Require valid-user # #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定IP和网段


二、使用别名,引用网站根目录以外的路径

将/usr/local/phpdata 目录通过虚拟目录功能添加到网站根目录。当访问http://192.168.1.128/ phpdata/ 时,就可以访问目录/usr/local/phpdata中的内容。

注:apache的别名也叫虚拟目录

语法:

AliasURL路径   PATH物理路径

创建测试数据:

[root@python conf]# mkdir /usr/local/phpdata
[root@python conf]#  echo "This Alias PHPdata" > /usr/local/phpdata/index.html

修改配置文件:

[root@python ~]# vim /etc/httpd/conf/httpd.conf 

Alias /phpdata/ "/usr/local/phpdata/"
<Directory "/usr/local/phpdata/">
    Options Indexes FollowSymLinks  
    AllowOverride None 
    Require all granted
</Directory>
注:Alias /phpdata/ "/usr/local/phpdata/"     #/phpdata/ 可以随意起。比如改/phpdata/ 为/php/  则访问链接: http://192.168.1.128/php/

测试: 


三、当一个目录下没有默认首页时,访问http://192.168.1.128/phpdata/   禁止显示目录列表

显示目录列表:

cp -a /boot/grub/ /var/www/html/bbs/
cd /var/www/html/
rm -rf index.html

当网站没有默认的首页的时候,直接访问显示网站更目录下的文件夹资源

修改配置文件:

 vim /etc/httpd/conf/httpd.conf   # 修改红色标记内容

328 # The Options directive is both complicated and important.  Please see

 329 # http://httpd.apache.org/docs/2.2/mod/core.html#options

 330 # for more information.

 331 #

 332     Options -Indexes FollowSymLink      #注释index这行即可

 334 #


四、通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护

设置/usr/local/phpdata/目录,只能通过用户名密码方式访问。

 vim /etc/httpd/conf/httpd.conf   #在需要使用用户验证的目录的相关Directory段落添加以下红色标记内容:

     Alias /phpdata/ "/usr/local/phpdata /"

 <Directory "/usr/local/phpdata /">

    Options Indexes FollowSymLinks

    AllowOverride None

     authtype basic

     authname "my web site"

     authuserfile /etc/httpd/conf/passwd.secret

    require valid-user

 </Directory>

参数说明:

authtype basic             #authtype命令:指定认证类型为:basic。

authname "my web site "#  AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。

authuserfile /etc/httpd/conf/passwd.secret# AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。

require命令             #指定哪些用户或组才能被授权访问。如:

require user user1 user2     (只有用户user1和user2可以访问)

require valid-user        (在AuthUserFile指定的文件中任何用户都可以访问)

 

利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文

[root@python ~]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 
Re-type new password: 
Adding password for user tom

[root@python ~]# htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 
Re-type new password: 
Adding password for user bob

[root@python ~]# cat /etc/httpd/conf/passwd.secret 
bob:$apr1$ghXTDKYU$H/6GDBbFFZ/b7sqUzdfTP.
tom:$apr1$t5uT9/jI$z.obpguKI5S2.OGbpWwyf0

测试:


五、配置apache虚拟主机,实现在一台服务器上运行多个网站

apache虚拟主机实现有三种方法:

1、通过不同的IP地址

2、通过不同的域名

3、通过不同的端口号

三种都需要把虚拟主机功能打开:

 

方法1:

通过不同的IP地址,解析不同域名

给服务器增加IP(另一个域名解析出来的那个IP)

ifconfig ens33:1 192.168.1.166 netmask 255.255.255.0
mkdir  /var/www/html/bbs/
cp -a /boot/grub/ /var/www/html/bbs/

创建虚拟主机的配置文件:

vim zhtest.conf

<VirtualHost 192.168.1.128: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.166: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>

测试:

     


方法二:

通过不同域名:

在域名管理后台,修改DNS配置,zh128与zh166 解析成相同的IP。

[root@python ~]# cat /etc/httpd/conf.d/zhtest.conf 
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/
    ServerName zh128
    ErrorLog logs/zh128-error_log
    CustomLog logs/zh128-access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/bbs/
    ServerName zh166
    ErrorLog logs/zh166-error_log
    CustomLog logs/zh166-access_log common
</VirtualHost>


[root@python ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.128    zh128
192.168.1.166    zh166

测试:


方法3:基于端口配置虚拟主机:

[root@python conf.d]# cat zhtest.conf 
<VirtualHost 192.168.1.128:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/
    ServerName www.xuegod.com
    ErrorLog logs/www.xuegod.com-error_log
    CustomLog logs/www.xuegod.com-access_log common
</VirtualHost>
<VirtualHost 192.168.126.128:81>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/bbs/
ServerName bbs.xuegod.com
ErrorLog logs/bbs.xuegod.com-error_log
    CustomLog logs/bbs.xuegod.com-access_log common
</VirtualHost>

vim /etc/httpd/conf/httpd.conf

Listen 80
Listen 81

测试:

 


 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值