Apache服务(www服务器)

一.各大公司使用的服务

主流的一般是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的个人网站:
这里写图片描述

  1. 基于端口号的虚拟主机功能:
    基于端口号的虚拟主机设定最复杂,
    考虑:
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 

这时就可以访问了:
这里写图片描述

这里写图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值