目录
一、什么是Apache?
二、虚拟目录是什么?
三、Apcahe相关配置文件
四、httpd.conf主配置文件的常用配置参数
五、Web网站配置案例
5.1搭建基于用户的个人主页网站
5.2、配置虚拟目录
5.3、配置虚拟主机
5.3.1搭建两个基于IP地址的虚拟主机
5.3.2搭建两个基于域名的站点
5.3.3搭建两个基于端口号的站点
5.4、账号认证访问网站
https%E5%AE%89%E5%85%A8%E7%BD%91%E7%AB%99-toc" style="margin-left:120px;">5.5、搭建https安全网站
一、什么是Apache?
Apache是开放源代码的Web服务器软件,通俗将就是一个用于搭建网站的服务软件。类似的还有微软的IIS、IBM webSphere、Tomcat。
有两个版本:
- http:超文本传输协议,通过线路以明文形式发送,默认使用80端口/TCP。
- https:经TLS/SSL安全加密的超文本传输协议,默认使用443端口/TCP。
二、虚拟目录是什么?
虚拟目录是一个位于Apache服务器网页文件主目录之外的目录。每个虚拟目录对应一个真实的存放网页文件的物理路径目录,用户通过访问虚拟目录的名字就可以访问到真实目录下的网页文件,而无需在输入真实的网页文件路径。可以针对虚拟目录设置不同的访问权限。
三、Apcahe相关配置文件
/etc/httpd ----------Apache服务主要数据文件存放的根目录
/etc/httpd/conf/httpd.conf -------主配置文件
/etc/httpd/conf.d --------虚拟主机的配置文件所在目录
/etc/httpd/conf.d/userdir.conf----------个人web站点的配置文件
/etc/httpd/logs--------日志文件目录
/var/www/html--------用户浏览网站时网页文件默认所在目录
四、httpd.conf主配置文件的常用配置参数
1、ServerName -----网站服务器的域名和端口号,服务器根据用户提供的此值来确定是否访问的是自己。
2、ServerRoot-------设置服务器的根目录,用于存储web服务器的匹配数据文件。
3、Listen-------监听的端口号
4、DocumentRoot-------默认网站提供html文档的根目录。
5、Directory-------用于设置web服务器文件目录的访问权限和访问方式
6、DirectoryIndex------指定网站首页的默认文件
7、VirtualHost-------搭建基于虚拟主机多个站点时所用的配置参数设置
8、ServerAdmin-------设置web服务器管理员邮箱地址,当用户访问网站出错时将显示管理员邮箱地址
9、Time out--------设置web网站接收或发送数据时的超时时间。
10、Error Log-------指定Apcahe服务器错误日志存放的文件路径
11、Custom Log-----指定Apache服务器访问日志文件路径
12、Include-------指定所要包含的其它配置文件所在路径
五、Web网站配置案例
5.1搭建基于用户的个人主页网站
*服务端和客户端需保持网络互通,客户端正确解析服务器的域名所对应IP地址
Server端:
1、安装httpd服务软件
https://img-blog.csdnimg.cn/8a6b6c7b398445ddb9c104b0b7a2f2dc.png" width="997" />
2、创建用于个人主页的账户
https://img-blog.csdnimg.cn/e41ad96c52dd4abaa12bae01c5250a23.png" width="745" />
3、进入用户家目录创建一个用于存储个人网页文件的主目录public_html,并允许其它人有执行访问权限
https://img-blog.csdnimg.cn/4c4069eb1f5b4bf19348a77babb642da.png" width="743" />
https://img-blog.csdnimg.cn/332917a21b084befa8a830a976e29b9d.png" width="758" />
https://img-blog.csdnimg.cn/3a9dd6f0d5dc4aff95cd07bf1e12449e.png" width="713" />
4、在用户个人主目录内创建一个用于用户访问的网页文件
https://img-blog.csdnimg.cn/14f3f05f19cb421fb53e36c6bb92c217.png" width="892" />
5、修改httpd个人站点配置文件
https://img-blog.csdnimg.cn/4c2666cc36a444ef93fea52d15e3ba11.png" width="922" />
6、防火墙放行httpd服务,设置selinux布尔值的相应参数来允许网络用户访问个人用户的家目录。
https://img-blog.csdnimg.cn/6ea4b16431644a0ab91d249accee9c38.png" width="991" />
https://img-blog.csdnimg.cn/b0b8925557cf4f0ba21c2c10d49153f8.png" width="984" />
7、开启httpd服务,并设置开机自启
https://img-blog.csdnimg.cn/2dd5c7aaa5cd4e8fb4528dd452d020e8.png" width="992" />
Client端:
8、访问服务器个人主页进行测试
https://img-blog.csdnimg.cn/76cddb20eb0f4557b5f1d72197480d24.png" width="1171" />
5.2、配置虚拟目录
描述:创建一个名为/myweb的虚拟目录其对应的真实目录物理路径为/usr/web。
Server端:
1、创建/usr/web真实目录和其用户访问所需的网页文件。
https://img-blog.csdnimg.cn/00a8f348f1784e3993fa506ef169dfeb.png" width="906" />
2、修改/etc/httpd/conf/httpd.conf主配置文件相关参数。
https://img-blog.csdnimg.cn/3a67a97319e74507a44c5163c5c7677b.png" width="866" />
https://img-blog.csdnimg.cn/49d8006b1cf1456cbc6e29d6a5d94ae7.png" width="813" />
3、防火墙放行http服务,并修改虚拟目录所对应的物理目录的安全上下文。
https://img-blog.csdnimg.cn/980532e131994289bccfb2dcd7eb0e7a.png" width="922" />
https://img-blog.csdnimg.cn/908d31292be641bcb52ff25e98c88fd4.png" width="995" />
4、重启httpd服务使其配置立即生效
https://img-blog.csdnimg.cn/1f643206208843b99e63ccbe7c05f2c9.png" width="797" />
Client端:
5、使用客户端访问虚拟目录进行测试
https://img-blog.csdnimg.cn/b49bfded0cf2447e9a14c4c3b2de2055.png" width="1200" />
5.3、配置虚拟主机
概述:虚拟主机允许在一台web服务器上搭建多个web站点,用户访问时各web站点可以通过IP地址、域名或端口号来进行区分访问不同站点。
5.3.1搭建两个基于IP地址的虚拟主机
Server端:
1、给网卡添加两个IPv4的地址,用于后面分别绑定两个站点做区分。
https://img-blog.csdnimg.cn/3ab79cd2febb48eab3b4ace3e3f7652b.png" width="995" />
2、分别创建两个站点的网页文件主目录和其要访问的网页文件。
https://img-blog.csdnimg.cn/cc5f28c954084b66a5cabc17fc8e0fe6.png" width="994" />
3、在httpd的主配置文件/etc/httpd/conf/httpd.conf中添加虚拟主机相关参数并赋值。
https://img-blog.csdnimg.cn/be4aa22d74bd40bc81a8789bc290f49a.png" width="843" />
4、防火墙放行http服务,保证创建的网页文件主目录selinux的安全上下文正确。
https://img-blog.csdnimg.cn/d97996339ae241ce93a816d07485e80d.png" width="916" />
5、重启httpd服务使其配置文件立即生效。
https://img-blog.csdnimg.cn/430ef0b674fb48cfbc3c9ec3c7c9f1ea.png" width="721" />
6、客户端通过基于不同的IP地址访问网站进行测试。
https://img-blog.csdnimg.cn/7e6b9d7fe7a4495092fcf11ce63d6b78.png" width="1150" />
https://img-blog.csdnimg.cn/9aec31b34a73464999de91e300a19b58.png" width="1160" />
5.3.2搭建两个基于域名的站点
Server端:
1、创建两个站点所需的网页文件和其主目录。
https://img-blog.csdnimg.cn/de38f650821049e99e79bce87eae78d6.png" width="898" />
2、在主配置文件/etc/httpd/conf/httpd.conf 中添加虚拟主机一下相关参数。
https://img-blog.csdnimg.cn/64c13206d7a84c859d8d987fa5ad9d15.png" width="928" />
3、防护墙放行http服务,保证所创建的两个站点目录文件的安全上下文正确。
https://img-blog.csdnimg.cn/dbc62a6ad2814291bd0fdc90e806aa09.png" width="978" />
4、重启httpd服务使配置文件立即生效。
https://img-blog.csdnimg.cn/4e0ac172a30e4f869aca8b20f66f0c3d.png" width="846" />
Client端:
6、保证客户端正确配置DNS所对应网站使用的IP地址解析,此处客户端使用本地解析。
https://img-blog.csdnimg.cn/41d12d7894984bacb72151e1290ed58e.png" width="967" />
7、客户端分别访问web1.shanyue.com和web2.shanyue.com进行站点测试。
https://img-blog.csdnimg.cn/c25bf18a3509499e97587d1879b4a298.png" width="1001" />
https://img-blog.csdnimg.cn/66b44f43daa04361ab7694ab5fcc10de.png" width="994" />
5.3.3搭建两个基于端口号的站点
Server端:
1、创建两个用于测试的站点所使用的网页文件和其所在的主目录
https://img-blog.csdnimg.cn/62439c67499840fa9d90e806b984445a.png" width="991" />
2、修改/etc/httpd/conf/httpd.conf 主配置文件中的虚拟主机所使用的相关参数,并设置其http服务监听的端口号。
https://img-blog.csdnimg.cn/30a65e446f4c4c0f8642c2ce8c0dea3d.png" width="884" />
https://img-blog.csdnimg.cn/637cd76dc6fd40c5b08121f6e98550d1.png" width="902" />
3、防火墙放行两个网站绑定的8080和8081端口。
https://img-blog.csdnimg.cn/ae22010fc88d4179bde49f86c15b1ba1.png" width="984" />
4、由于修改了http服务默认监听的端口号,此时selinux会认为新修改的端口号不是http服务规定所使用的端口号。因此需要修改新设置的端口号标签类型,使http服务认为此新设置的端口号是合法的。否则修改配置文件重启http服务时会报配置文件语法错误。
https://img-blog.csdnimg.cn/12dcafd05615469eaf54439bded8e8a0.png" width="1000" />
https://img-blog.csdnimg.cn/5e6a3381fdd74276b0be12c9a461bad5.png" width="992" />
*注意:此处由于8081和8082端已被占用定义无法对其进行删除重新添加,但此过程是对的,可以换用其它监听端口测试。此处实验就临时把selinux安全策略设置为允许宽松模式,来跳过http的站点监听端口检测语法检测。
https://img-blog.csdnimg.cn/e8937a9cda47488fa14f8eb14e98ea19.png" width="802" />
5、重启http服务使其重读http的配置文件,让配置立即生效。
https://img-blog.csdnimg.cn/9ae4f7ba0fd248dda36a0a2a9f166e08.png" width="905" />
Client端:
6、在客户端分别使用不同的端口号访问刚搭建的站点看其是否搭建成功。
https://img-blog.csdnimg.cn/a0dda901ff0c4473a5c279ac23f6820b.png" width="1162" />
https://img-blog.csdnimg.cn/ee630e15735846869be4e7a98571e823.png" width="1155" />
5.4、账号认证访问网站
Server端:
1、创建客户端访问网站时,所需输入的账户和其密码。
https://img-blog.csdnimg.cn/3e9f557e8d2949969d8f8f711a1ecf85.png" width="778" />
2、修改账户密码文件的selinux标签属性。
https://img-blog.csdnimg.cn/8e7b20ad8d614f9b9d2759d08b52e3db.png" width="1062" />
说明:用户访问网站默认使用web服务器账户是apache账户、因此需保证apache用户有访问此密码文件路径目录的r读和x访问权限,依此来验证客户端访问网站输入的密码是否正确(密码文件可以保存到非站点物理目录下)。
3、开启网站的用户访问密码认证。
https://img-blog.csdnimg.cn/e396b0e01c9747b3b91d390ba645219e.png" width="738" />
4、重启httpd服务使其配置立即生效
https://img-blog.csdnimg.cn/e2d30893c9d04332ade58731b10af1d6.png" width="690" />
Client端:
1、访问web服务器开启用户账户认证的站点,进行测试。
https://img-blog.csdnimg.cn/606975bd321942149f5a3dc542655017.png" width="1200" />
https%E5%AE%89%E5%85%A8%E7%BD%91%E7%AB%99" style="background-color:transparent;margin-left:0px;">5.5、搭建https安全网站
注意:经TLS/SSL安全加密的超文本传输协议,默认情况下使用端口443/TCP
Server端:
1、安装httpd服务软件、和用于https加密的mod_ssl软件。
https://img-blog.csdnimg.cn/85f1325b66e843b092eab3d8c61a68f6.png" width="998" />
2、搭建CA服务器,用于为web站点签发证书。首先创建CA服务所需的目录结构。
https://img-blog.csdnimg.cn/918f97ce86044b10860abeee51eb673f.png" width="822" />
https://img-blog.csdnimg.cn/e7b8ea9f481e434987fcabd97da7eea1.png" width="1001" />
https://img-blog.csdnimg.cn/a2329c3b77c04d018be5b44b997eff5a.png" width="834" />
4、修改CA服务配置文件/etc/pki/tls/openssl.cnf参数,允许向CA服务器申请证书的客户可以任意定义申请证书的相关参数。
https://img-blog.csdnimg.cn/0402c2ecd44d47caad24b159d4c7ddf4.png" width="764" />
6、为CA服务机构创建自签的根证书。以后访问此机构颁发的证书网站的客户端可以通过在本地导入CA根证书来信任网站证书。
https://img-blog.csdnimg.cn/57e0549bb89649e59a5643bc83355a7a.png" width="928" />
7、为要搭建的web站点向CA申请数字证书。首先在web服务器上创建证书申请模板文件。然后在发送给CA服务器,由于本实验CA和web服务在一台服务器上,因此模板无需发送给CA服务器。
https://img-blog.csdnimg.cn/61c04654564d4f2e881d1f2a3e03e05e.png" width="970" />
8、创建CA服务器颁发证书所需文件
https://img-blog.csdnimg.cn/3eeff409a72640c695c21e1e3c29d828.png" width="988" />
9、CA签发web站点提交的证书申请
https://img-blog.csdnimg.cn/d0771878269941c8831849f9781e1126.png" width="987" />
10、修改https的/etc/httpd/conf.d/ssl.conf 主配置文件相关参数来使将搭建的网站绑定从CA哪里获得的证书,并指定web站点用于解密的私钥文件。
https://img-blog.csdnimg.cn/664986c84f3e4c83a87f972967c533cc.png" width="600" />
11、把证书文件、秘钥文件和根CA文件分别拷贝到ssl.conf配置文件里的对应路径下面。
https://img-blog.csdnimg.cn/0e74de7acdf74a52b4b15261213e2e9f.png" width="604" />
12、防火墙放行https服务
https://img-blog.csdnimg.cn/ba405173cb9d444e9d265e9e0aa6bc1d.png" width="858" />
13、在httpd服务默认的网页主目录下创建个用于客户端https访问的网页文件。
https://img-blog.csdnimg.cn/75d3b62e6daf4e46bf4322591956a316.png" width="979" />
14、重启httpd服务使其配置文件立即生效
https://img-blog.csdnimg.cn/6e23f1e944b74673b7158cd3742fcc5d.png" width="983" />
Client端:
1、正确配置web网站域名的DNS解析,此实验采用DNS本地解析。域名最好使用CA颁发给Web服务器证书中的通用域名,以此来让客户端正确解析网站的证书。
https://img-blog.csdnimg.cn/e92b283d2989479abb9d83c98284070d.png" width="787" />
2、将网站证书颁发机构CA的根证书内容导入到linux受信任的根证书颁发机构区域文件内来信任站点证书(说明:Linux系统中大部分浏览工具的信任根CA都在此文件内指定。但对于firefox浏览器需要另外导入根CA证书)。
https://img-blog.csdnimg.cn/0e8dc02710d6484d99114cc41d0e626d.png" width="1031" />
3、客户端以https的方式访问web网站进行测试。通过curl命令可以正常访问站点)。
https://img-blog.csdnimg.cn/3a772ffa891e456a8b1614e71dc8d8d8.png" width="914" />
4、客户端通过firefox图形化浏览器访问https站点进行测试。
https://img-blog.csdnimg.cn/a07349346a94446f81fbed15bfbba952.png" width="1080" />
5、firefox浏览器导入证书颁发机构的根CA,以此来信任访问的网站出示的证书。
https://img-blog.csdnimg.cn/0c9dfd3d8346486db4a901c0e99d3c0e.png" width="1078" />
https://img-blog.csdnimg.cn/1d9371f34e2844af927ffd5c51b07ee4.png" width="1080" />
https://img-blog.csdnimg.cn/e3f6ec54c4fb4a91a4effd6ee1d1bc2f.png" width="1080" />
https://img-blog.csdnimg.cn/6f16b6dde8e8468a9589dcfec34e97d1.png" width="1080" />
https://img-blog.csdnimg.cn/d87e59f6b18f4bd2a0f74e25e5ab6f17.png" width="1080" />
https://img-blog.csdnimg.cn/39b28b78b0f0401f88859e2378dca9bc.png" width="1065" />
firefox导入根CA证书成功,在次访问https站点不在报错。
https://img-blog.csdnimg.cn/31ce14f4ce8a4d5dacc7dcd0fa465dd9.png" width="1084" />
@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!