• 使用Apache服务部署静态网站2019-7-5


    使用Apache服务部署静态网站

    第1步:把镜像挂载到系统中

    第2步:使用vim文件编辑器创建YUM仓库的配置文件

    [root@study ~]# vim /etc/yum.repos.d/abc.repo

    [abc]

    name=abc

    baseurl=file:///media/

    enabled=1

    gpgcheck=0

    第3步:安装Apache服务程序

    [root@study ~]# yum install httpd -y

    第4步:启用httpd服务程序并将其加入开机启动项中

    [root@study ~]# systemctl start httpd

    [root@study ~]# systemctl enable httpd

    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

    第5步:在浏览器输入系统IP 地址是否出现测试页面。

     

    配置服务文件参数

    httpd服务程序的主要配置文件及存放位置

    配置文件的名称 存放位置
    服务目录 /etc/httpd
    主配置文件 /etc/httpd/conf/httpd.conf
    网站数据目录 /var/www/html
    访问日志 /var/log/httpd/accesss_log
    错误日志 /var/log/httpd/error_log

    httpd的主配置文件存在三种类型的信息:注释行信息、全局配置、区域配置

    参数 用途
    ServerROOT 服务目录
    ServerAdmin 管理员邮箱
    User 运行服务的用户
    Group 运行服务的用户组
    ServerName  网站服务器的域名
    DocumentRoot 网站数据目录
    Directory 网站数据目录的权限
    Listen  监听的IP地址与端口号
    DirectoryIndex 默认的索引页页面
    ErrorLog 错误日志文件
    CustomLog 访问日志文件
    Timeout 网页超时时间,默认为300秒

    DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中,而当前网站普遍的首页面名称时index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效。

    [root@study ~]# echo "Welcome to Purple Cloud Fairy" > /var/www/html/index.html

    修改网站数据目录

    1、建立网站数据的保存目录,并创建首页文件

    root@study ~]# mkdir /home/wwwroot
    [root@study ~]# echo "The New Web Directory" > /home/wwwroot/index.html

    2、打开httpd服务程序的主配置文件,将第119行用于定义网站数据保存的参数DocumentRoot修改为/home/wwwroot,同时还需要将第124行定义目录权限的参数Directory后面的路径也修改为/home/wwwroot

    [root@study ~]# mkdir /home/wwwroot
    [root@study ~]# echo "The New Web Directory" > /home/wwwroot/index.html
    [root@study ~]# vim /etc/httpd/conf/httpd.conf 
    [root@study ~]# systemctl restart httpd

    个人用户主页功能

    第1步:在httpd服务程序中,默认没有开启个人用户主页功能。

    需要编辑/etc/httpd/conf.d/userdir.conf文件,然后在第17行的UserDir disabled注释掉,表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的注释去掉(UserDir参数表示网站数据在用户目录中的保存目录名称,即public_html目录)

    第2步:在用户家目录中建立用于保存网站数据的目录及首页文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。

    [root@study ~]# su - linux

    -bash-4.2$ mkdir public_html

    -bash-4.2$ echo "This is purple's website" > public_html/index.html 

    -bash-4.2$ chmod -Rf 755 /home/linux

    添加个人主页口令

    1、先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面在分别添加密码数据库的存放文件,以及验证要用到的用户名称。

    [root@study ~]# htpasswd -c /etc/httpd/passwd linux
    New password: 输入网页验证密码
    Re-type new password:再输入一遍进行确认

    Adding password for user linux

    2、编辑个人用户主页功能的配置文件。把第31~40行的参数信息修改称下列内容,保存并退出配置文件,重启httpd服务程序即可生效。

    31 <Directory "/home/*/public_html">
    32 AllowOverride all
    33 #刚刚生成出来的密码验证文件保存路径
    34 authuserfile "/etc/httpd/passwd"
    35 #当用户尝试访问个人用户网站时的提示信息
    36 authname "My privately website"
    37 authtype basic
    38 #用户进行账户密码登录时需要验证的用户名称
    39 require user linux
    40 </Directory>

     

     虚拟主机功能

    虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服 务器”Apache 的虚拟主机功能是服务器基于用户请求的不同 IP 地址、主机域名或端口号,实 现提供多个网站同时为外部提供访问服务的技术。

    1、基于IP地址

    第1步:添加IP

    [root@study ~]# cd /etc/sysconfig/network-scripts/

    [root@study network-scripts]# touch ifcfg-eno16777736:1 ifcfg-eno16777736:2

    [root@study network-scripts]# cat ifcfg-eno16777736 >ifcfg-eno16777736:1

    [root@study network-scripts]# cat ifcfg-eno16777736 >ifcfg-eno16777736:2

    将这两个配置文件IP地址分别修改为192.168.218.139、192.168.218.140

    重启网络服务、查看IP地址

    [root@study network-scripts]# /etc/init.d/network restart
    Restarting network (via systemctl): [ OK ]
    [root@study network-scripts]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:da:49:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.218.138/24 brd 192.168.218.255 scope global dynamic eno16777736
    valid_lft 1803sec preferred_lft 1803sec
    inet 192.168.218.140/24 brd 192.168.218.255 scope global secondary eno16777736:1
    valid_lft forever preferred_lft forever
    inet 192.168.218.139/24 brd 192.168.218.255 scope global secondary eno16777736:2
    valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feda:49b1/64 scope link
    valid_lft forever preferred_lft forever

    第2步:分别在/home/wwwroot 中创建用于保存不同网站数据的 3 个目录,并向其中分别写入网站的首页文件。

    [root@study network-scripts]# mkdir -p /home/wwwroot/138 139 149

    [root@study network-scripts]# echo "IP:192.168.138" > /home/wwwroot/138/index.html 

    [root@study network-scripts]# echo "IP:192.168.139" > /home/wwwroot/139/index.html 

    [root@study network-scripts]# echo "IP:192.168.140" > /home/wwwroot/140/index.html 

    第3步:在 httpd 服务的配置文件中大约 113 行处开始,分别追加写入三个基于 IP 地址的虚 拟主机网站参数,然后保存并退出。

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

    113 <VirtualHost 192.168.218.138>
    114 DocumentRoot /home/wwwroot/138
    115 ServerName www.purple.com
    116 <Directory /home/wwwroot/138>
    117 AllowOverride None
    118 Require all granted
    119 </Directory>
    120 </VirtualHost>
    121 <VirtualHost 192.168.218.139>
    122 DocumentRoot /home/wwwroot/139
    123 ServerName bbs.purple.com
    124 <Directory /home/wwwroot/139>
    125 AllowOverride None
    126 Require all granted
    127 </Directory>
    128 </VirtualHost>
    129 <VirtualHost 192.168.218.140>
    130 DocumentRoot /home/wwwroot/140
    131 ServerName www.purple.com
    132 <Directory /home/wwwroot/140>
    133 AllowOverride None
    134 Require all granted
    135 </Directory>
    136 </VirtualHost>

    [root@study ~]# systemctl restart httpd

    在浏览器访问这3个IP

     基于主机域名

    第1步:手动定义IP地址与域名之间的对应关系的配置文件,保存并退出后会立即生效。

    通过PING来验证是否成功解析为IP地址

    [root@study ~]# vim /etc/hosts

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.218.138 www.purple.com bbs.purple.com blogs.purple.com

    第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录,并向其中分 别写入网站的首页文件。

    [root@study ~]# mkdir -p /home/wwwroot/www

    [root@study ~]# mkdir -p /home/wwwroot/bbs

    [root@study ~]# mkdir -p /home/wwwroot/blogs

    [root@study ~]# echo "www.purple.com" > /home/wwwroot/www/index.html

    [root@study ~]# echo "bbs.purple.com" > /home/wwwroot/bbs/index.html

    [root@study ~]# echo "blogs.purple.com" > /home/wwwroot/blogs/index.html

    第3步:在 httpd 服务的配置文件 113 行处开始,分别追加写入三个基于主机名的 虚拟主机网站参数,然后保存并退出。

    113 <VirtualHost 192.168.218.138>
    114 DocumentRoot /home/wwwroot/www
    115 ServerName www.purple.com
    116 <Directory /home/wwwroot/www>
    117 AllowOverride None
    118 Require all granted
    119 </Directory>
    120 </VirtualHost>
    121 <VirtualHost 192.168.218.138>
    122 DocumentRoot /home/wwwroot/bbs
    123 ServerName bbs.purple.com
    124 <Directory /home/wwwroot/bbs>
    125 AllowOverride None
    126 Require all granted
    127 </Directory>
    128 </VirtualHost>
    129 <VirtualHost 192.168.218.138>
    130 DocumentRoot /home/wwwroot/blogs
    131 ServerName blogs.purple.com
    132 <Directory /home/wwwroot/blogs>
    133 AllowOverride None
    134 Require all granted
    135 </Directory>
    136 </VirtualHost>

    使用curl命令测试

    [root@study ~]# systemctl restart httpd

    [root@study ~]# curl www.purple.com
    www.purple.com
    [root@study ~]# curl bbs.purple.com
    bbs.purple.com
    [root@study ~]# curl blogs.purple.com
    blogs.purple.com

     基于端口号

    第1步:分别在/home/wwwroot中创建用于保存不同网站数据的两个目录,并向其中分别写入网站的首页文件。

    [root@study ~]# mkdir -p /home/wwwroot/2345

    [root@study ~]# mkdir -p /home/wwwroot/2346

    [root@study ~]# echo "port:2345" > /home/wwwroot/2345/index.html
    [root@study ~]# echo "port:2346" > /home/wwwroot/2346/index.html

    第2步:在httpd服务配置文件的第43行和第44行分别添加用于监听2345和2346端口的参数。

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

    43 Listen 2345
    44 Listen 2346

    第3步:在httpd服务的配置文件中大约113行开始,分别追加写入两个基于端口号的虚拟网站参数,然后保存退出。

    <VirtualHost 192.168.218.138:2345>
     DocumentRoot "/home/wwwroot/2345"
     ServerName www.purple.com
     <Directory "/home/wwwroot/2345">
     AllowOverride None
     Require all granted
     </Directory>
     </VirtualHost>
     <VirtualHost 192.168.218.138:2346>
     DocumentRoot "/home/wwwroot/2346"
     ServerName www.purple.com
     <Directory "/home/wwwroot/2346">
     AllowOverride None
     Require all granted
     </Directory>

    </Virtualhost>

    [root@study ~]# systemctl restart httpd

    Apache的访问控制

    Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过Allow指令允许某个主机访问服务器上的网站资源,通过Deny指令实现禁止访问。在允许或禁止访问网站资源时,还会用到Order命令,这个指令用来定义Allow或Deny指令其作用的顺序,其匹配原则时按照顺序进行匹配,若匹配成功则执行后面的默认指令。

    第1步:现在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含Successful单词的首页文件。

    [root@study ~]# mkdir /var/www/html/server

    [root@study ~]# echo "Successful" > /var/www/html/server/index.html

    第2步:打开httpd服务的配置文件,在第129行后面添加规则来限制源主机的访问。这段规则的含义时允许使用Chrome浏览器的主机访问,除此之外所有请求都会被拒绝。

    129 <Directory "/var/www/html/server">
    130 SetEnvIf User-Agent "Chrome" ff=1
    131 Order allow,deny
    132 Allow from env=ff
    133 </Directory>

    [root@study ~]# systemctl restart httpd

    使用Chrome浏览器访问。

    使用QQ浏览器访问

     通过匹配IP地址进行访问控制,例如只允许IP地址为192.168.218.138的主机访问网站资源

    在httpd配置文件第129行添加下列规则,

    129 <Directory "/var/www/html/server">
    130 Order allow,deny
    131 Allow from 192.168.218.138
    132 Order allow,deny
    133 </Directory>

    [root@study ~]# systemctl restart httpd

    [root@study ~]# curl 192.168.218.138/server/
    Successful

    浏览器访问

  • 相关阅读:
    遇到的错误
    关于绝对路径的中斜杠和反斜杠
    为什么自动注入写的是接口名
    程序中什么时候打印什么级别的日志
    redis 实现点赞功能
    静态变量,静态代码块
    response.getWriter().write()和 response.getWriter().print()的区别
    SQL 语句
    vue 在v-for 里面动态加载 图片
    弹性布局
  • 原文地址:https://www.cnblogs.com/DevonL/p/11140857.html
Copyright © 2020-2023  润新知