一.各大公司使用的服务
主流的一般是apache nginx 公司的网站,其它一些是在上述基础上进行的二次开发。
apache:企业中常用的web服务,用来提供http://(超文本传输协议)
http:超文本传送协议(HyperText Transfer Protocol)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器。
二.Apache的基本配置
1.apache服务环境的搭建
安装apache软件包:
yum install -y httpd httpd-manual ##Apache服务器手册独立,需单独安装
启动apache服务:
systemctl start httpd ; systemctl enable httpd
查看监听端口:
ss -antlp | grep httpd ##此时是无显示端口
查看配置文件:
设置初始环境,火墙:
测试:
2apache的基础信息:
主配置目录: /etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d/
子配置文件:/etc/httpd/conf.d/ *.conf
默认发布目录:/var/www/html/
默认发布文件:index.html
默认端口:80
默认安全上下文:http_sys_content_t
程序开启默认用户apache
apache日志:/etc/httpd/logs/*
查看apache版本:
apachectl 命令:
apachectl命令是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。
语法
apachectl(参数)
参数
configtest:检查设置文件中的语法是否正确;
fullstatus:显示服务器完整的状态信息;
graceful:重新启动Apache服务器,但不会中断原有的连接;
help:显示帮助信息;
restart:重新启动Apache服务器;
start:启动Apache服务器;
status:显示服务器摘要的状态信息;
stop:停止Apache服务器。
1 修改默认端口:
vim /etc/httpd/conf/httpd.conf
42 Listen 8080 ##将默认端口改为8080,以后访问时要注意在URL后加8080!
2 修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。这个文件可以指定多个,有顺序。
当我们修改主页为test时,注意观察:
先修改配置文件:
将index改为test,并重启服务:
访问:
3修改默认发布目录:
先建立一个发布目录:
在目录下写一个主页html:
修改主配置文件:
重启服务,访问发现没有权限,
此时想到selinux,所以要修改安全上下文:restorecon是写入内核!!!
查看安全上下文,restorecon是写入内核!!!,不写入内核,不会生效,
再次查看,成功:
4 虚拟主机的设定(重要!):
什么是虚拟主机?
让你的一台服务器上面,有好多个“主网页存在“,硬件实际上只有一台,但是由网址来说,则似乎有很多主机存在的样子。
首先,每个主机名都必须对应到某个主网页目录中,先建主网页目录:
分别在对应的目录下写入首页html;
修改配置文件,先是默认目录:
其次时两个虚拟主机,c.conf与linux.conf
c.cong如下:
linux.conf如下:
最后测试,而且一定要在浏览器主机上做好本地解析:
查看测试效果,试验成功:
2018.3.24 在此实验并改进:
[root@python conf.d]# ls
adefault.conf autoindex.conf README userdir.conf welcome.conf
1 NameVirtualHost *:80
2 <virtualhost _default_:80>
3 DocumentRoot "/var/www/html"
4 CustomLog "logs/www.westos.com" combined
5 </virtualhost>
6
7
8 <virtualhost *:80>
9 servername c.westos.com
10 DocumentRoot "/var/www/virtual/c.westos.com/"
11 CustomLog "logs/c.westos.com" combined
12 </virtualhost>
13
14
15 <virtualhost *:80>
16 servername linux.westos.com
17 DocumentRoot "/var/www/virtual/linux.westos.com/"
18 CustomLog "logs/linux.westos.com" combined
19 </virtualhost>
20
21 <Directory "/var/www/virtual/c.westos.com/">
22 Require all granted
23
24 </Directory>
25
26
27 <Directory "/var/www/virtual/linux.westos.com/">
28 Require all granted
30 </Directory>
5 apache的内部访问控制:
1) 针对与主机的访问控制:
比如:只允许44主机访问,其他人都不允许:
vim adefault.conf
<Directory "/var/www/html/test">
Order deny,allow ##列表读取顺序,后读取的会覆盖前面读取的
Allow from 172.25.254.44
Deny from all
</Directory>
如果想用某个网络或IP无法访问的话,最好用火墙比较妥当,若只是某些重要目录不想让人家来查阅的话,那么可以用allow,deny与Order的设置数据就可以了。
2)用户方式的访问控制:
先设置用户及密码:
修改配置文件:
重启服务,查看:
6 apache支持的语言:
1 html
2 php
先用php写好页面:
安装php
它会自动生成php.conf:
在主配置文件中加入目录首页文件index.php:
重启服务,查看,:
3 cgi
[root@apacheserver html]# mkdir cgi
[root@apacheserver html]# cd cgi/
[root@apacheserver cgi]# ls
[root@apacheserver cgi]# vim index.cgi
[root@apacheserver cgi]# semanage fcontent -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
[root@apacheserver cgi]# restorecon -RvvF /var/www/cgi/
[root@apacheserver cgi]# vim /var/www/html/cgi/index.cgi
chmod +x /var/www/html/cgi/index.cgi
/var/www/htnl/cgi/index.cgi ##执行脚本确保脚本运行正常
vim adefault.conf
<Directory "/var/www/html/cgi">
Option +ExecCGI
AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd
观察:
7 https
1)https:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
2)SSL:SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。SSL (Secure Socket Layer)为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。
3)客户端通过https方式访问服务器全过程描述:
1.客户机通过https访问web服务器,web服务器向客户机出示自己的证书
2. 客户机验证证书的有效性,包括发证时间,发证机关,执行者标识。
3.如果客户机验证证书通过,客户机随机产生128位的key,再利用证书文件传递的public key对该随即key机进行加密。
4.加密后传送至服务器端,服务器再利用自己的public key 对加密的key进行解密,得到客户机的随机key值。
5.这时两端的key值相同,利用该key进行加密通讯。
实验步骤:
1)安装加密软件:
2)生成证书,此实验为www.westos.com:
此时发现没有安装ssl模块软件:
安装:
生成证书,一步一步来:
证书生成后,修改ssl配置文件,将新生成的证书文化与钥匙加入:
建立发布目录与发布目录文件:
重启服务,并在浏览器中输入https://login.westos.com:
但是此时有一个问题,在访问这个网站时必须将https手动加入,那我们可不可以将次网站设定为https重写呢?
8 设定https虚拟主机并设定网页重写:
修改配置文件:
其中,^(/.*)$ ##表示客户端浏览器上输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ##标示^(/.*)$的值
[redirect=301] ##临时重写 302 永久转换
此后观察,自动强制加密访问:
8 个人用户主页功能
虚拟主机虽然好,但是用户多时会耗费root太多时间,httpd的个人用户主页可以让用户在自己的家目录中管理个人网站。
1
2
3
4 重启httpd
5切换到niubiao用户
6 建立public html目录:
7 往此目录中写入网页
8最重要的一点,把家目录的权限改为755,保证其他人可以有权限读取里面的内容》
9 修改selinux 环境
10 访问niubiao的个人网站:
- 基于端口号的虚拟主机功能:
基于端口号的虚拟主机设定最复杂,
考虑:
1httpd服务程序配置
2 selinux服务对于新开设端口的监控。我们不仅要考虑目录上的selinux安全上下文的限制,还须考虑selinux域对http服务程序的管控。
1 创建虚拟主机用户数据发布目录与网页:
mkdir -p /var/www/virtual/6111
mkdir -p /var/www/virtual/6222
echo '6111' > /var/www/virtual/6111/index.html
echo '6222' > /var/www/virtual/6222/index.html
2 httpd配置文件
[root@iscsi-server 6222]# vim /etc/httpd/conf/httpd.conf
41 #Listen 12.34.56.78:80
42 Listen 80
43 Listen 6111
44 Listen 6222
3 虚拟主机区域配置:
[root@iscsi-server conf.d]# vim adefault.conf
<Virtualhost 172.25.254.136:6111>
2 Documentroot '/var/www/virtual/6111'
3 servername linux.westos.com
4 <Directory '/var/www/virtual/6111' >
5 require all granted
6 </Directory>
7 </Virtualhost>
8
9
10 <Virtualhost 172.25.254.136:6222>
11 Documentroot '/var/www/virtual/6222'
12 servername c.westos.com
13 <Directory '/var/www/virtual/6222' >
14 require all granted
15 </Directory>
16
17 </Virtualhost>
14 require all granted
15 </Directory>
16
17 </Virtualhost>
4 修改数据发布目录与文件的安全上下文
5 此时重启服务,回报错,因为selinux会拒绝使用apache 使用这两个端口,我们用semanage查询过滤与http协议有关且selinux允许的端口列表:
[root@iscsi-server conf.d]# semanage port -l | grep http
[root@iscsi-server virtual]# semanage port -a -t http_port_t -p tcp 6111
[root@iscsi-server virtual]# semanage port -a -t http_port_t -p tcp 6222
该操作会立即生效
此时浏览页面可以看到内荣,这时注意虽然防火墙允许了http服务,但是要更改port(非443,80,8080),还要特别的在防火墙上放行!
firewall-cmd --permanent --add-port=6111/tcp
firewall-cmd --permanent --add-port=6222/tcp
firewall-cmd --reload
这时就可以访问了: