你好,游客 登录 注册 搜索
背景:
阅读新闻

使用Apache搭建Web网站服务器

[日期:2017-05-05] 来源:Linux社区  作者:blxueyuan [字体: ]

一:实验目标

 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服务器 

1apache默认欢迎页如下图所示,其欢迎页的默认目录为“/etc/httpd/conf.d/welcome.conf

wKioL1j9bk7D5ubPAADKpoQWeE8798.png 

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

wKiom1j9blvD9Ql6AAAxt8VctnA462.png 

3重新创建首页并重启服务

[root@xuegod63 conf.d]# echo 'welcome to www.xuegod.cn!' > /var/www/html/index.html

[root@xuegod63 ~]# service httpd restart

试:

wKiom1j9bmfzy5i-AABH0W6Bpmw088.png 

 

 

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

wKioL1j9bneDmfhqAADYayCAkiQ923.png 

 

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

wKiom1j9boaARojkAABzDhGnUmI357.png 

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

wKioL1j9bqSDDl05AAB8vEgx6Uw641.png 

注:Alias /phpmyadmin/ "/usr/local/phpmyadmin/"     #/phpmyadmin/ 可以随意起。比如改/phpmyadmin/ /php/  则访问链接: http://192.168.1.63/php

 

测试

[root@xuegod63 ~]# service httpd restart

 

wKioL1j9brXRadolAABadB_7y28944.png

wKiom1j9brbQdFV2AABdxofGPAc829.png

 

 

注释:这里做的时候即使不显示内容,也是正常的。

 

实战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

wKiom1j9bsXSJFuBAABF11kesgY621.png 

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

wKioL1j9btHQtVt6AAA_Dn7zxmQ785.png 

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命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。如

wKioL1j9buHibfx0AACF2y-31Cw991.png 

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/

wKiom1j9bu-jRisTAAB814i5w6w886.png 

注释:这里记得把之前写的“禁止显示目录列表”的‘-’给去掉。

 

 

方法二:

#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/

wKiom1j9bvuj65UmAAB7N6X5aBA107.png 

 

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

 

wKiom1j9bxCxvrImAAA7oz_m2pE231.png

wKiom1j9bxCQbchyAAAmCklGN7E340.png

 

 

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

[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/

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-05/143468.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款