随着一起来基于Apache服务器部署WEB网站-ror体育

 体验式策划     |      2021-11-01 01:28
本文摘要:接上一篇文章,在相识Apache基本设置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功效以及会见控制方式。如果还没看上一篇的建议先检察后再来,上篇文章“linux入门系列18--web服务之apache服务1”。三、Apache虚拟主机功效如果早期你部署过网站,相信一定知道虚拟机主机、VPS等观点,尤其是2000年前后建站很是盛行,甚至降生了许多乐成的草根站长,其中有一部门网站到现在仍然做的很是乐成。

ror体育

接上一篇文章,在相识Apache基本设置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功效以及会见控制方式。如果还没看上一篇的建议先检察后再来,上篇文章“linux入门系列18--web服务之apache服务1”。三、Apache虚拟主机功效如果早期你部署过网站,相信一定知道虚拟机主机、VPS等观点,尤其是2000年前后建站很是盛行,甚至降生了许多乐成的草根站长,其中有一部门网站到现在仍然做的很是乐成。网站流量的增加是一个恒久累积的历程,如果每台服务器上只能运行一个网站,那些人气低、流量小的草根站长就要被迫负担着高昂的服务器租赁用度,这显然也会造成硬件资源的浪费。

为此在虚拟专用服务器(VPS:Virtual Private Server)和云盘算技术降生以前,IDC服务供应商为了更充实使用服务器资源和减低草根站长的购置门槛,都启用了虚拟主机功效。使用虚拟主机功效,可以把一台处于运行状态的物理服务器支解成多个“虚拟的服务器”。

虚拟主机功效也有显着的缺点,它无法像现在的云主机技术那样实现硬件资源的隔离,这些虚拟主机配合使用物理服务器的硬件资源,IDC供应商只能限制硬盘的使用空间巨细,因此同一台物理主机上的差别用户的虚拟主机可能会相互影响。可是出于成本思量,现在还是有部门小我私家站长接纳虚拟主机的方式来部署网站。其示意图如下:Apache的虚拟主机功效是服务器基于用户请求的差别IP地址、主机域名或端口号,实现提供多个网站同时为外部提供会见服务的技术。3.1 基于IP如果一台服务器有多个IP地址,每个IP与服务器上部署的每个网站一一对应, 这样当用户请求会见差别的IP地址时,会会见到差别网站的页面资源。

这种方式每个网站都有一个独立的IP地址,利于搜索引擎SEO优化,因此这种方式提供虚拟网站主机功效最常见且受草根站长的接待。本示例IP的网站对应关系为:192.168.78.101、102、103划分对应网站1、2、3,历程如下:3.1.1 设置多个IP使用前面解说的网络设置方法设置多IP,忘记的请返回检察“linux入门系列11--Centos7网络服务治理”。[root@apache ~]# nmtui中间操作历程省略,为主机设置三个IP地址,生存并退出重启网络使其生效[root@apache ~]# systemctl restart network[root@apache ~]# ip addr...省略部门内容2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:2e:3a:65 brd ff:ff:ff:ff:ff:ff inet 192.168.78.101/24 brd 192.168.78.255 scope global eno16777736 valid_lft forever preferred_lft forever inet 192.168.78.102/24 brd 192.168.78.255 scope global secondary eno16777736 valid_lft forever preferred_lft forever inet 192.168.78.103/24 brd 192.168.78.255 scope global secondary eno16777736 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe2e:3a65/64 scope link valid_lft forever preferred_lft forever[root@apache ~]# 确保通过ip addr下令可以看到适才设置的IP,并能在虚拟机或宿主机上能ping通适才设置的每个IP。

3.1.2 准备多个网站在系统根目录下的website目录下建立3个目录,并划分建立差别的页面文件。[root@apache website]# mkdir -p /website/1[root@apache website]# mkdir -p /website/2[root@apache website]# mkdir -p /website/3[root@apache website]# echo "192.168.78.101">/website/1/index.html[root@apache website]# echo "192.168.78.102">/website/2/index.html[root@apache website]# echo "192.168.78.103">/website/3/index.html3.1.3 设置Apache设置主设置文件/etc/httpd/conf/httpd.conf[root@apache website]# vim /etc/httpd/conf/httpd.conf...省略部门内容<VirtualHost 192.168.78.101> DocumentRoot /website/1 ServerName website1 <Directory /website/1> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.102> DocumentRoot /website/2 ServerName website2 <Directory /website/2> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.103> DocumentRoot /website/3 ServerName website3 <Directory /website/3> AllowOverride None Require all granted </Directory></VirtualHost>...省略部门内容添加如下设置,并生存退出重启httpd使其生效。

[root@apache website]# systemctl restart httpd3.2.4 测试会见由于是继续上前文的情况下实验,前文已经设置好了防火墙和SELinux,所以直接就可以会见了,如果你遇到不能会见的情况,请参考前文检查相关设置。注意:(1)前边已经把/website目录添加了SELinux的上下文,因此无需把刚刚建立的子目录/website/1等举行设置。(2)前文实验中直接通过ip可以会见/website/index.html文件,本文实验并没有删除原来的设置,只是新加了虚拟主机相关设置,可以看到,再次会见192.168.78.101这个ip是指向新的虚拟主机网站,而非原来的网站。也就是会虚拟主机设置会笼罩原来设置,优先级更高。

3.2 基于域名当服务器无法为每个网站都分配一个独立 IP 地址的时候,可以实验让 Apache 自动识别 用户请求的域名,从而凭据差别的域名请求来传输差别的内容。基于域名的设置与基于IP的设置,方法基本一致,只是多了一个域名和IP的映射。3.2.0 情况准备还是继续使用上一步的情况,把之前设置的多余的IP删除,只保留一个IP:192.168.78.101;同时将上一步3.1.3中设置的多个IP与网站的映射删除。

ror体育

假设三个域名划分对应三个网站,域名划分为:test1、test2、test3.heimatengyun.com,划分对应之前的1、2、3三个网站。3.2.1 设置域名与IP映射可以通过DNS剖析服务举行设置,本处直接修改/etc/hosts文件,在该文件中指定IP与域名之间的映射关系。/etc/hosts是Linux系统中用于强制把某个主机域名剖析到指定IP地址的设置文件。

[root@apache website]# vim /etc/hosts192.168.78.101 test1.heimatengyun.com test2.heimatengyun.com test3.heimatengyun.com在文件末尾添加以上内容生存并退出。在虚拟机中确保可以ping同以上各个域名。

[root@apache website]# ping -c 1 test1.heimatengyun.comPING test1.heimatengyun.com (192.168.78.101) 56(84) bytes of data.64 bytes from test1.heimatengyun.com (192.168.78.101): icmp_seq=1 ttl=64 time=0.033 ms--- test1.heimatengyun.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.033/0.033/0.033/0.000 ms[root@apache website]# 这样等后续操作完成后就可以在虚拟机内部通过域名举行会见。可是如果想让宿主机也能举行会见的话,需要在宿主机中也要添加IP与域名的映射。由于我的宿主机为win10,因此将以上IP与域名的映射内容添加到C:WindowsSystem32driversetchosts文件即可。

然后在宿主机就可以ping同前面的三个域名。3.2.2 准备多个网站由于是直接接纳原来的三个网站,先修改下每个网页里边的内容,我们接纳重定憧憬原来页面中追加对应的域名信息,利便后续验证效果。[root@apache website]# echo "test1.heimatengyun.com">>/website/1/index.html[root@apache website]# echo "test2.heimatengyun.com">>/website/2/index.html[root@apache website]# echo "test3.heimatengyun.com">>/website/3/index.html3.2.3 设置Apache修改Apache主设置文件,/etc/httpd/conf/httpd.conf[root@apache website]# vim /etc/httpd/conf/httpd.conf...省略部门内容<VirtualHost 192.168.78.101> DocumentRoot /website/1 ServerName test1.heimatengyun.com <Directory /website/1> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.101> DocumentRoot /website/2 ServerName test2.heimatengyun.com <Directory /website/2> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.101> DocumentRoot /website/3 ServerName test3.heimatengyun.com <Directory /website/3> AllowOverride None Require all granted </Directory></VirtualHost>...省略部门内容在设置文件中添加上述内容并生存退出。

注意:此处可以对比之前的IP设置,设置参数都是基本一样的,唯一的差别是之前每个网站对应差别IP,现在是都写同一个IP。可以自行对比修改完成后重启Apache,使其生效。[root@apache website]# systemctl restart httpd注意:修改Apache设置后,需要重启服务才会生效。3.2.4 测试会见在宿主机浏览器输入对应的域名即可会见对应的网站。

3.3 基于端口号基于端口号的虚拟主机功效可以让用户通过指定的端口号来会见服务器上的网站资源。相较于前二种方式,这种方式的设置要稍微复制一些,因为不仅要思量httpd服务法式的设置,还要思量SELinux服务对新开的端口的监控和限制。通常情况下使用80、443、8080等端口提供网站会见服务,如果是其他端口就需要注意SELinux的现在。

3.3.0 情况准备我们继续在上边的情况下实验,删除上一步3.2.3在设置文件中的设置。假设8111、8222、8333划分对应前面建立的1、2、3三个网站。3.3.1 网站内准备我们继续使用之前的三个网站,对网站内容举行修改[root@apache website]# echo "8111">>/website/1/index.html[root@apache website]# echo "8222">>/website/2/index.html[root@apache website]# echo "8333">>/website/3/index.html3.3.2 Apache设置对/etc/httpd/conf/httpd.conf举行设置,使其支持多端口监听(1)在或许43行左右,添加端口监听[root@apache website]# vim /etc/httpd/conf/httpd.conf...省略部门内容Listen 8111Listen 8222Listen 8333...省略部门内容继续下边的修改(2)在或许120行左右,追加基于端口号的虚拟主机参数设置<VirtualHost 192.168.78.101:8111> DocumentRoot /website/1 ServerName test1.heimatengyun.com <Directory /website/1> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.101:8222> DocumentRoot /website/2 ServerName test2.heimatengyun.com <Directory /website/2> AllowOverride None Require all granted </Directory></VirtualHost><VirtualHost 192.168.78.101:8333> DocumentRoot /website/3 ServerName test3.heimatengyun.com <Directory /website/3> AllowOverride None Require all granted </Directory></VirtualHost>...省略部门内容生存退出与3.2.3相对,没有太大变化,只是在IP后添加端口即可,几种设置方法都大同小异。

ror体育

重启apache使其生效[root@apache website]# systemctl restart httpdJob for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.[root@apache website]# journalctl -xn...省略部门内容***** Plugin bind_ports (92.2 confidence) suggests If you want to allow /usr/sbin/httpd to bind to network port 8111 Then you need to modify the port type. Do # semanage port -a -t PORT_TYPE -p tcp 8111 ...省略部门内容可是你会发现,重启失败。如果你检察日志,会发现这样的提示内容,别担忧,这正是刚开始提到的SELinux在搞鬼。3.3.3 设置SELinux域检察现在默认的SELinux允许的与HTTP协议相关的端口[root@apache website]# semanage port -l | grep httphttp_cache_port_t tcp 8080, 8118, 8123, 10001-10010http_cache_port_t udp 3130http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000pegasus_http_port_t tcp 5988pegasus_https_port_t tcp 5989[root@apache website]# 于是我们要把适才新加的三个端口添加进入[root@apache website]# semanage port -a -t http_port_t -p tcp 8111[root@apache website]# semanage port -a -t http_port_t -p tcp 8222[root@apache website]# semanage port -a -t http_port_t -p tcp 8333添加完成重启apache[root@apache website]# systemctl restart httpd3.3.4 测试会见经由以上的操作在虚拟机内容通过浏览器举行会见,可以正常通过各个端口去会见对应的网站。

可是如果在宿主机举行会见,你会发现会见不了。这无疑就是因为防火墙在搞鬼。利于“linux入门系列10--firewalld防火墙治理”解说的知识,将这3个对应的端口放行即可。

[root@apache website]# firewall-cmd --zone=public --list-ports [root@apache website]# firewall-cmd --zone=public --add-port=8111/tcp success[root@apache website]# firewall-cmd --zone=public --add-port=8222/tcp success[root@apache website]# firewall-cmd --zone=public --add-port=8333/tcp 此时,再次在宿主机举行会见,就可以正常会见了。细心的你可能会发现,如果是根据上边的步骤一路下来的话,你会发现现在其实是3种方式都开启的。划分通过差别的端口去会见,可以正常会见到对应的差别网站。

可是通过如果你通过ip或域名再去会见的话,你会发现统统都指向前一篇文章中案例1指向的网页。为什么会这样呢?那是因为之前案例没有显式指定端口,默认的端口为80。因此如果没显式指定端口,默认是去web的80端口的。四、Apache会见控制Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源举行会见控制。

简朴说就是能控制网站让指定用户才气看到。主要是通过会见控制指令实现,常用指令有:Allow、Deny、OrderAllow:允许某个主机会见服务器上的网站资源Deny:实现克制会见Order: 界说Allow或Deny指令起作用的顺序,其匹配原则是根据顺序举行匹配,若匹配乐成则执行后面的默认指令。

举个例子:Order Allow, Deny:表现先将源主机与允许规则举行匹配,若匹配乐成则允许访 问请求,反之则拒绝会见请求。4.1 通过IP控制假设我们的需求是:让前面部署的1网站只允许虚拟机内部举行会见,克制外部机械会见。[root@apache website]# vim /etc/httpd/conf/httpd.conf ...省略部门内容<VirtualHost 192.168.78.101:8111> DocumentRoot /website/1 ServerName test1.heimatengyun.com <Directory /website/1> AllowOverride None Require all grantedOrder allow,denyAllow from 192.168.78.101 </Directory></VirtualHost>...省略部门内容我们只需要打开主设置文件,在添加Order allow,deny和Allow from 192.168.78.101即可实现。设置之后,重启apache,发现在虚拟机里可以正常会见,可是在宿主机已经不能会见了此网站了(直接跳转到测试页面)。

除此之外还可以通过浏览器特征来限制指定浏览器举行会见,再此就不举行演示了。下一篇文章将演示Mysql数据的兄弟-MariaDB的安装及基本用法。


本文关键词:ror体育,随着,一,起来,基于,Apache,服务器,部署,WEB,网站

本文来源:ror体育-www.dljcyy.cn