这里只说一些应该注意的点
第一步要更改配置文件中的ServerName参数,这个是服务器的名称一定要记得更改。如果说让你有让某个域访问,另外一个域不能访问,你就只要让防火墙可以让那个域通过http和https服务就可以啦
mod_ssl这个软件包是提供安全加密的。当你安装完它之后你就会发现/etc/httpd/conf.d这个文件夹里面多了一个ssl.conf的文件,
我们要配置虚拟主机的话要复制一下模板文件,命令如下
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/vhosts.conf
通过看配置文件中出现了这个Include conf.modules.d/*.conf 参数,这个是子配置文件,如果子配置文件生效的话,会覆盖主配置文件,所以我们把全部的都做成虚拟主机就可以啦
下面是证书的,证书是由server发放的,我们只要下载下来放在指定的位置就可以啦,这个位置可以在ssl.conf文件中看到,因为这个用到的服务是https,所以防火墙要让它通过https服务,如果要让特定的用户可以修改这个目录的话,可以用setfacl命令去设置
对于要进行访问控制的,可以通过在/etc/httpd/conf/httpd.conf文件中可以看到对应的模板,像下面的这样
<Directory />
AllowOverride none
Require all denied
</Directory>
下面是动态网站的配置
首先要按mod_wsgi,这个是提供http动态的模块,如果没有安装会报错的哦。因为wsgi要用的端口是8909,默认情况下selinux是没有给8909贴上http_port_t的标贴的,所以我们要给它贴上标签,还要让防火墙允许它通过,最最最重要的是让http去侦听这个端口。
上面是思路,下面是真正的解题啦
yum install httpd -y
vim /etc/httpd/conf/httpd.conf
ServerName system1.group8.example.com
保存退出后
下载考证提供给你的主页下载的地址http://server.group8.example.com/pub/system1.html ,下载到指定的目录
wget -O /var/www/html/index.html http://server.group8.example.com/pub/system1.html
设置防火墙允许http服务通过
用firewall-config命令图形化操作
firewall-cmd --reload
systemctl restart httpd
这样就可以访问啦
因为后面是虚拟机主机的配置,我们可以刚刚配置的东西都搬到虚拟主机上,因为这样可以方便,你也可以不用在虚拟主机上做,其它HTTP服务上面可以配置多个虚拟主机,那什么时候要这个虚拟主机什么时候用那个呢,这就关系到虚拟主机的优先级别啦,当某个请求进入时,httpd将首先尝试匹配设置了显式IP地址的虚拟主机,如果这些匹配项失败了,那么就检查具有通配符IP地址的虚拟主机,如果仍没有匹配项,则将使用主服务器配置。综上所述,vhosts.conf配置文件的优先级比httpd.conf文件的要高一些,如果你在<VirtualHost *:80>始终将匹配端口80/tcp上的常规http流量,从而有效禁止主服务器配置用于端口80/tcp的流量
下面我是在虚拟主机上做的,看看题目的要求是要我们把刚刚的web服务器再配置成https的,这个是一个安全加密的的http服务
yum install mod_ssl.x86_64
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/vhosts.conf
编辑/etc/httpd/conf.d/vhosts.conf文件
删除里面的所有东西,增加下面的条目
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName system1.group8.example.com
ServerAlias www.zhouyu.com(如果你想有多个域名的话可以用这个参数)
ServerAdmin zhouyu@qq.com(出现错误的时候通知zhouyu@qq.com)
ErrorLog logs/sitel_error_log(与虚拟主机相关错误消息的位置)
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName system1.group8.example.com
SSLEngine on (开启HLS的指令)
SSLProtocol all -SSLv2 (指定httpd与客户通信时希望使用的协议的列表)
SSLCertificateFile /etc/pki/tls/certs/system1.crt
(此指令向httpd告知虚拟主机证书的位置)
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
(此指令告知读取虚拟主机的私钥的位置)
SSLCertificateChainFile /etc/pki/tls/certs/ssl-ca.crt
(用来标识ca证书的文件)
</VirtualHost>
保存退出
下面这几个可以参考/etc/httpd/conf.d/ssl.conf文件,可以用命令去除一些注释grep -v "^#" /etc/httpd/conf.d/ssl.conf后就可以很清楚的看到下面的内容,复制过去,修改一些参数就好
SSLProtocol all -SSLv2
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCertificateChainFile /etc/pki/tls/certs/ssl-ca.crt
在system1上下载server提供的证书,认证密钥,授权信息
wget -O /etc/pki/tls/certs/system1.crt http://server.group8.example.com/pub/tls/certs/system1.crt
wget -O /etc/pki/tls/private/system1.key http://server.group8.example.com/pub/tls/private/system1.key
wget -O /etc/pki/tls/certs/ssl-ca.crt http://server.group8.example.com/pub/tls/certs/ssl-ca.crt
然后用firewall-config图形管理让https服务通过
systemctl restart httpd
下面是限制性访问的,编辑/etc/httpd/conf.d/vhosts.conf文件,加入下面的语句
<Directory /var/www/html/private/>
AllowOverride none
Require all denied
Require local
</Directory>
其中下面的语句可以在/etc/httpd/conf/httpd.conf文件中看到
<Directory />
AllowOverride none
Require all denied
</Directory>
一定要加入Reuire local,否则其他的主机也可以访问。
下面是动态网站,动态网站需要用到这个软件包mod_wsgi
在/etc/httpd/conf.d/vhosts.conf文件中加入下面语句
<VirtualHost *:8909>
ServerName wsgi.group8.example.com
WSGIScriptAlias / /var/www/html/webinfo.wsgi
</VirtualHost>
Listen 8909
保存退出
WSGIScriptAlias / /var/www/html/webinfo.wsgi
语句的含义是:
后者是前者的wsgi脚本别名,意味着访问http:// wsgi.group8.example.com:8909/就相当于访问http://wsgi.group8.example.com:8909/var/www/html/webinfo.wsgi
因为我们添加了8909这个端口,所以要设置防火墙允许通过,可以使用图形化弄
因为selinux默认是不给8909端口http_port_t标签的,所以我们要给它加上这个标签
semanage port -a -t http_port_t -p tcp 8909
下载提供的文件到/var/www/html目录下
wget -O /var/www/html/webinfo.wsgi http://server.group8.example.com/pub/webinfo.wsgi
最后一步,重启服务就好啦