一、搭建思路
-
搭建环境:redhat7.2。
-
搭建架构:C/S 、B/S
-
(客户端):网站访问格式:http://ip:xx
-
(服务端):
- 安装软件包
- 启用服务:systemctl restart httpd
- 设置防火墙、selinux规则策略
- 配置服务,设置访问信息(根据需求设置访问格式、访问内容):/etc/httpd/conf/httpd.conf
- 重启服务:systemctl restart httpd
- 查看服务状态:systemctl status httpd
-
通过客户端进行测试
二、web服务器基本配置
搭建静态网站—基于http协议的静态网站
[root@localhost ~]# systemctl stop firewalld —关闭防火墙
[root@localhost ~]# setenforce 0 —关闭selinux
[root@localhost ~]# vim /etc/yum.repos.d/openlab.repo —配置yum仓库
[base]
name=haha
baseurl=file:///mnt/
enable=1
gpgcheck=0
[root@localhost ~]# mount /dev/sr0 /mnt/ —将镜像包挂载到yum仓库中的文件路径下
[root@localhost ~]# yum install httpd -y —安装httpd软件包
[root@localhost ~]# rpm -ql httpd —查看服务释放的相关目录
1:主配置文件:/etc/httpd/conf/httpd.conf(一般不建议直接修改主配置文件。可以创建额外的参数文件并使其生效,扩展名必须是.conf。在启动Apache时,该文件会被读入到主配置文件中。)
2:/var/www/html/ :默认的网站首页所在的目录,当输入网址后所显示的数据放在该目录下,默认为index.html。
3:/var/www/cgi-bin/ :默认给一些可执行的CGI(网页程序)程序放置的目录。存放输入网址/cgi-bin/后显示的数据。
4:/var/log/httpd/ :默认的Apache日志文件存放目录。对于流量较大的网站,存放的日志文件很容易达到1GB左右。
默认http访问界面
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName 0.0.0.0:80
[root@localhost ~]# systemctl restart httpd
(客户端)测试:
[root@localhost ~]# curl http://192.168.199.128
基于IP地址对web服务器的访问
[root@localhost ~]# nmcli connection modify eno16777736 ipv4.addresses 192.168.199.128/24 ipv4.gateway 192.168.199.1 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
[root@localhost ~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.199.200/24 ipv4.gateway 192.168.199.1 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
[root@localhost ~]# nmcli connection up eno16777736
[root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf
<Directory /www>
AllowOverRide none
Require all granted
</Directory>
<VirtualHost 192.168.199.128:80>
DocumentRoot /www/128
ServerName 192.168.199.128
</VirtualHost>
<VirtualHost 192.168.199.200:80>
DocumentRoot /www/200
ServerName 192.168.199.200
</VirtualHost>
[root@localhost ~]# mkdir /www/{128,200} -p
[root@localhost ~]# echo this is 192.168.199.128 > /www/128/index.html
[root@localhost ~]# echo this is 192.168.199.200 > /www/200/index.html
[root@localhost ~]# systemctl restart httpd
(客户端)测试:
基于端口对web服务器的访问
[root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf
<Directory /www>
AllowOverRide none
Require all granted
</Directory>
LISTEN 8080
LISTEN 8088
<VirtualHost 192.168.199.128:8080>
DocumentRoot /www/8080
ServerName 192.168.199.128
</VirtualHost>
<VirtualHost 192.168.199.128:8088>
DocumentRoot /www/8088
ServerName 192.168.199.128
</VirtualHost>
[root@localhost ~]# mkdir /www/{8080,8088} -p
[root@localhost ~]# echo this is 8080 > /www/8080/index.html
[root@localhost ~]# echo this is 8088 > /www/8088/index.html
[root@localhost ~]# systemctl restart httpd
(客户端)测试:
基于域名对web服务器的访问
基于域名访问网站时,需要用到域名解析(即将域名解析为IP地址)。
浏览器通过域名查询URL对应的IP(即对应的服务器地址)的方式:
1:浏览器缓存:浏览器会按照一定的频率缓存DNS记录。
2:操作系统缓存:当用户在浏览器中输入一个需要登录的网址时,系统会首先从hosts文件中查找对应的IP地址,一旦找到,系统会立即打开对应的网页。若未找到,则系统会将网址提交DNS域名解析服务器进行IP地址的解析。
windows系统下hosts文件的路径:C:\Windows\System32\drivers\etc\hosts
Linux系统下hosts文件路径:/etc/hosts
 3:路由器缓存
 4:ISP的DNS服务器:ISP时互联网服务提供商的简称,存在专门的DNS服务器应对DNS查询请求
5:根服务器:ISP的DNS服务器若找不到对应的IP地址,则会向根服务器发起请求进行递归查询
[root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf
<Directory /www>
AllowOverRide none
Require all granted
</Directory>
LISTEN 8080
LISTEN 8088
<VirtualHost 192.168.199.200:8080>
DocumentRoot /www/hh
ServerName www.haha.com
ServerAlias www1.haha.com
</VirtualHost>
<VirtualHost 192.168.199.200:8088>
DocumentRoot /www/xx
ServerName www.xixi.com
ServerAlias www1.xixi.com
</VirtualHost>
[root@localhost ~]# mkdir /www/{hh,xx} -p
[root@localhost ~]# echo this is www.haha.com > /www/hh/index.html
[root@localhost ~]# echo this is www.xixi.com > /www/xx/index.html
[root@localhost ~]# systemctl restart httpd
(客户端)测试:
[root@localhost ~]# vim /etc/hosts
192.168.199.200 www.haha.com
192.168.199.200 www1.haha.com
192.168.199.200 www.xixi.com
192.168.199.200 www1.xixi.com
搭建静态网站—基于https协议的静态网站
https产生的原因
超文本传输协议HTTP被用于在web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密。若攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读取其中的信息,因此HTTP协议不适合传输一些敏感的信息,如信用卡号、密码、身份证号等私密信息。为了解决HTTP协议这一缺陷,我们需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
HTTPS并非是新的协议,而是HTTP+SSL。原本是HTTP先和TCP(假定为TCP协议)进行通信。加入SSL后,变成了HTTP先和SSL通信,再通过SSL和TCP通信。
基于域名对web服务器进行访问
(以基于域名的https协议为例进行配置,基于端口和IP地址的可以参考上述配置)
[root@localhost ~]# mount /dev/sr0 /mnt/
[root@localhost ~]# yum install mod_ssl -y
[root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf
<Directory /ssl>
AllowOverRide none
Require all granted
</Directory>
<VirtualHost 192.168.199.128:443>
DocumentRoot /ssl/https
ServerName www.https.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/xixi.crt
SSLCertificateKeyFile /etc/pki/tls/private/xixi.key
</VirtualHost>
[root@localhost ~]# mkdir /ssl/https -p
[root@localhost ~]# echo this is https > /ssl/https/index.html
[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost certs]# make xixi.crt
[root@localhost certs]# mv xixi.key /etc/pki/tls/private/
[root@localhost certs]# ll …/private/
[root@localhost ~]# systemctl restart httpd
此处需要输入SSL的密码,在创建xixi.crt密钥时会提示管理员新建一个密码,需要记住改密码,否则https服务重启时就需要重新创建.crt文件了。
测试:(https测试需要使用客户端的浏览器进行测试)
[root@localhost ~]# vim /etc/hosts
192.168.199.128 www.https.com
提示该网页不被信任,这是因为服务端的数字证书是私人创建的,并没有在官方进行注册,所以会有该提示。选择我知道该风险即可。
虚拟目录及用户控制
虚拟目录的作用:
为了便于对网站资源进行灵活管理,可以把这些文件存放于本地计算机的其他文件夹中或者其他计算机的共享文件夹中,之后将该文件夹映射到网站主目录中的一个文件夹上。这些文件夹被称为“虚拟目录”。
每个虚拟目录都可以设置一个别名,这样用户可以通过虚拟目录的别名来访问对应真实文件夹的资源。并且虚拟目录可以在不修改别名的情况下更改对应的文件夹。
识别别名的原理:
通过web站点的标识信息:IP地址、端口号及主机名来进行识别。
[root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf
<Directory /usr/local/mysecret>
AuthType Basic
AuthName "Please Login:"
AuthUserFile /etc/httpd/mysecretpwd
Require user tom jack
</Directory>
<Directory /user>
AllowOverRide none
Require all granted
</Directory>
LISTEN 8989
<VirtualHost 192.168.199.128:8989>
DocumentRoot /user/fei
Alias /mysecret /usr/local/mysecret
ServerName www.pwd.com
ServerName www1.pwd.com
</VirtualHost>
[root@localhost ~]# mkdir /usr/local/mysecret
[root@localhost ~]# mkdir /user/fei -p
[root@localhost ~]# echo this is secret > /usr/local/mysecret/index.html
[root@localhost ~]# echo this is no the secret > /user/fei/index.html
[root@localhost ~]# htpasswd -c /etc/httpd/mysecretpwd tom
[root@localhost ~]# htpasswd /etc/httpd/mysecretpwd jack
[root@localhost ~]# systemctl restart httpd
(客户端)测试:
[root@localhost ~]# vim /etc/hosts
192,168.199.128 www.pwd.com
192.168.199.128 www1.pwd.com
tom用户成功登陆进入虚拟用户访问的网页(www.pwd.com)。
jack用户成功登陆虚拟用户访问的别名网页(www1.pwd.com)
非虚拟用户登录进入的网页: