Apache web 服务

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, [1]  也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache Nginx IIS。

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python解释器编译到服务器中

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

HTTP是基于TCP/IP协议通信协议来传递数据(HTML文件、图片文件、查询结果等)。它不涉及数据包传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口

一、apache的安装部署

服务端:

1.yum install httpd -y       安装apache软件


2.yum install httpd-manual     apache手册


3.systemctl start httpd      开启服务
4.systemctl enable httpd      开机自启动服务
5.firewall-cmd --list-all   查看火墙策略
6.firewall-cmd --permanent --add-service=http   允许火墙通过http服务
7.firewall-cmd --permanent --add-service=https   允许火墙通过https服务
8.firewall-cmd --reload   火墙重装载

/var/www/html      apache的/目录,默认发布目录,安装apache之后会自动生成
/var/www/html/index.html    apache的默认发布文件,此文件的内容是什么,客户端测试看到的就是什么
测试:
客户端浏览器登陆:http://192.168.1.120,浏览器登陆此IP访问的是此IP默认端口的默认发布目录下的默认发布文件

登陆http://192.168.1.120/manual/  可以访问apache的手册

扫描二维码关注公众号,回复: 5003648 查看本文章

http://httpd.apache.org/docs/2.4/zh-cn/  此链接可以查看apache的中文手册

我们也可以随便找一个网站,进入网站后点击右键,选择save page as ,这样就可以将此网站的图片和html文件全部下载,然后将此图片和html文件全部下载到默认目录下,然后将.html文件的名字修改为index.html或者修改配置文件里的默认发布文件。然后用客户端测试就可以看到与该网站一样的页面了,这就类似与上线

二、apache的基础信息

主配置目录: /etc/httpd/conf
主配置文件: /etc/httpd/conf/httpd.conf
子配置目录: /etc/httpd/conf.d
子配置文件: /etc/httpd/conf.d/*.conf
默认发布目录: /var/www/html
默认发布文件: /var/www/html/index.html
默认端口:   80
默认安全上下文:  httpd_sys_content_t
程序开启默认用户: apache
apache日志:  /etc/httpd/logs/*

三、修改默认端口

1.修改为已有端口:

semanage port -l | grep http  查看所有有关http的端口

查看端口:netstat -antlupe | grep httpd,httpd服务默认是80端口

vim /etc/httpd/conf/httpd.conf
43   Listen   8080     修改默认端口为8080(43表示行号)


firewall-cmd --permanent --add-port=8080/tcp      火墙允许8080端口通过
firewall-cmd --reload

再次查看网络端口号是否被火墙允许通过,端口号是否已被更改

2.修改为没有的端口号
当selinux为警告状态时,可以随意修改为自己需要的端口号
当selinux为强制状态时,如果想要修改默认端口为6666,但是查看到的所有端口没有6666,那么做以上操作修改默认端口是不够的,还需要添加端口
semanage port -l | grep http  查看所有有关http的端口
semanage port -a -t http_port_t -p tcp 6666     添加6666端口  -a表示add添加,-t表示type类型,类型可以通过semanage port -l | grep http命令查看,-p表示protocol协议,6666表示要添加的端口号。

systemctl restart httpd

四、修改默认发布文件:

默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex   test.html index.html   当test.html不存在时访问index.html
systemctl restart httpd

例如,我改为上述内容,当默认发布目录下没有test.html时,访问的是index.html,当默认发布目录下有test.html时,访问的是text.html

五、修改默认发布目录:

120  DocumentRoot "/liming/html"          要发布的目录的路径
121  <Directory "/liming/html">
122          Require all granted          给此目录授权,让其成为默认发布目录
123  </Directory>

服务授权完成后,如果selinux为强制状态,还需要设置安全上下文才可访问,如果不是强制状态,则不需要修改安全上下文
semanage fcontext -a -t httpd_sys_content_t '/liming(/.*)?'
rstorecon -RvvF /liming/

或者chcon -t httpd_sys_content_t /liming/html/   也可以更改安全上下文
systemclt restart httpd

<h1></h1>表示字体大小。

客户端测试:

六、apache的虚拟主机

恢复安装apache最初的环境
cd /var/www/    
mkdir westos.com/news/html -p          创建news的发布目录
mkdir westos.com/music/html -p         创建music的发布目录
vim westos.com/news/html/index.html    编辑news的发布文件,文件内容即客户端浏览器测试到的内容
vim westos.com/music/html/index.html   同上
cd /etc/httpd/conf.d   进入子配置文件
vim a_default.conf   编辑默认进入的目录的子配置文件
<VirtualHost _default_:80>          默认的80端口
        DocumentRoot /var/www/html     所在目录的路径
        Customlog logs/default.log combined   不是必须要写,为了方便排错,combined是混合型的日志,这里的logs表示的是/etc/httpd/logs/
</VirtualHost>
vim music.conf      编辑进入music目录的子配置文件
<VirtualHost *:80>                          *表示下面的域名
        ServerName music.westos.com   域名
        DocumentRoot /var/www/westos.com/music/html   访问域名时登陆的apache服务器的目录
        CustomLog logs/music.log combined          添加日志,同上
</VirtualHost>
<Directory "/var/www/westos.com/music/html/">
        Require all granted                      给此目录授权
</Directory>
news和music的配置相同,只是名字不同
systemctl restart httpd


测试:在客户端添加本地解析
vim /etc/hosts
192.168.1.120 www.westos.com news.westos.com music.westos.com
然后在浏览器测试。

七、apache的访问控制

1.针对IP的访问控制:
cd /etc/httpd/conf.d/
vim a_default.conf
<Directory "/var/www/html">   当客户端要访问/var/www/html时
      Order Deny,Allow         先通过Deny认证,再通过Allow
      Allow from 192.168.1.20   允许20客户端访问
      Deny from all             不允许任何人访问
</Directory>

systemctl restart httpd


测试:在20客户端的浏览器测试

在220客户端测试

将刚才写入配置文件的内容隐掉然后在220测试

可以访问,证明测试成功。

2.针对用户的访问控制:
在服务端:
htpasswd -cm http_userlist admin    创建http登陆用户,用户名为admin,用户信息文件为http_userlist,用户信息文件在此命令执行的当前目录下,当再次创建用户时,不需要-c,-c表示create,已经创建过就不再需要创建用户信息文件了
cd /etc/httpd/conf.d/
vim a_default.conf
<Directory "/var/www/html">    当客户端要访问/var/www/html时
        AuthUserFile /etc/httpd/conf.d/http_userlist   用户信息文件
        AuthName "Please input username and password"  在登陆端写入说明
        Authtype basic                                 认证类型:基础认证,用户+密码
        Require user admin                             用户admin可以认证
    Require valid-user                             所有用户都可以去认证,两者不可重复
</Directory>

systemctl restart httpd.service
测试:在客户端浏览器测试

如果测试不用输入密码也可以进入,那么就有可能是缓存的问题了,可以清一下缓存,ctrl+shift+delete清除缓存,如果清除缓存还解决不了问题,那么可以看是否服务开启,客户端DNS,火墙策略。最后如果还不行,可以先将selinux设为警告模式,如果警告模式可以,那么八成就是因为安全上下文的问题,本次测试还需要用户信息文件的安全上下文也为httpd_sys_content_t

八、apache支持的语言

1.html,超文本标记语言,这个不用说,apache默认发布语言就是index,html
2.PHP   PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言
服务端:
vim /var/www/html/index.php    向默认目录写入.php文件,内容如下:
<?php
    phpinfo();
?>
yum install php -y       安装PHP
systemctl restart httpd


测试:
在客户端浏览器输入172.25.254.216/index.php

3.cgi

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例 子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如评论之类的东西。接着用户按一下“发布或提交”(到 目前为止工作都在客户端),浏览器把这些信息传送到服务器的 CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序将执 行结果返回给服务器(webServer),然后服务器将结果返回给客户端,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个 过程结束。
mkdir -p /var/www/html/cgi
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
chmod +x /var/www/html/cgi/index.cgi 因为CGI程序做执行任务,所以需要可执行权限。
cd /etc/httpd/conf.d/
vim a_default.conf
<Directory "/var/www/html/cgi">
    Options +ExecCGI      
    AddHandler cgi-script  .cgi     文件类型为cgi-script和.cgi
</Directory>
systemctl restart httpd

客户端测试:输入IP/cgi/index.cgi

九、https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是 SSL,因此加密的详细内容就需要SSL。

HTTPS和HTTP的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信 息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息, 因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

配置https服务器:

yum install mod_ssl -y                        安装ssl模块,因为https是在http的基础上加入了ssl协议
yum install crypto-utils -y                  安装加密工具,安装之后才可以使用genkey命令
genkey www.westos.com

进入图形界面

安装前的一些提示:密钥将被存储在/etc/pki/tls/private/www.westos.com.key

                                    认证被存储在/etc/pki/tls/certs/www.westos.com.crt 

这两个文件在后面配置ssl的时候会用到

这里需要选择钥匙的大小,钥匙越小,速度越快,但安全性更差,更容易破解,默认是2048位,这里为了节省时间,我选择了1024位。

这里需要取随机数,系统会提示输入随机变量或者移动鼠标,但是必须在服务器的主机下做这些操作,即使ssh连接服务器也是不可以的,速度依然会很慢。

系统询问要发送证书请求吗,这里千万不要选YES,这样会生成.0.csr文件而不是.crt文件,这样会导致配置ssl时找不到.csr文件而使系统无法重启http服务。如果不小心选择了YES,那么删掉/etc/pki/tls/certs/www.westos.com.crt和/etc/pki/tls/private/www.westos.com.key重新做就可以了

这里可以选择是否对密钥进行加密,这里我们对密钥不做处理,如果需要的话在给密钥加密的选项打钩

这个界面需要输入一些信息,国家名,省名,城市名,公司,部门等等

最后,系统会输出有关密钥的信息。
vim /etc/httpd/conf.d/ssl.conf

隐掉100和108行,并以这两行为模板,写101行和109行,如下:
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt                  认证文件
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key       密钥文件
systemctl restart httpd


测试:
客户端浏览器输入:https://192.168.1.120

设定https虚拟主机并设定网页重写
1.cd /var/www/ -->  mkdir login/html -p --> cd /login/html --> vim index.html
2.cd /etc/httpd/conf.d -->  cp music.conf login.conf
3.vim login.conf
<VirtualHost *:443>                   在上面的http和https的区别中已经提到,https用的端口是443
        SSLEngine on
        ServerName login.westos.com
        DocumentRoot /var/www/westos.com/login/html
        CustomLog logs/login.log combine
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt         认证文件所在位置
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key       密钥文件所在位置
</VirtualHost>                                                                              
<Directory "/var/www/westos.com/login/html/">
        Require all granted
</Directory>
<VirtualHost *:80>               虽然上面的端口是443,但是如果不使用https登陆,用http登陆,默认端口依然是80
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
^(/.*)$          客户在浏览器地址栏中输入的所有字符
https://         强制客户加密访问
%{HTTP_HOST}     客户请求主机
$1               “$1”表示 ^(/.*)$的值
[redirect=301]   林时重写  302永久转换
4.systemctl restart httpd


测试:
客户端:vim /etc/hosts
192.168.1.120 login.westos.com
在浏览器输入:login.westos.com会直接跳到https://login.westos.com

猜你喜欢

转载自blog.csdn.net/lm236236/article/details/84746044