基于Linux系统下Apache服务器的安装部署

时间:2022-10-04 16:11:20

一、Web服务器软件Apache简介

企业中常用的web服务,用来提供http://(超文本传输协议)。
web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分。常用的服务器程序时Apache,常用的客户端程序是浏览器。www服从http协议,默认的TCP/IP端口是80,客户端和服务器的通信过程简述如下:

  • 客户端(浏览器)和web服务器建立TCP连接,然后向web服务器发出访问请求,根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息
  • web服务器受到请求后,将客户端要求的界面内容返回到客户端。如果出现错误,则返回错误代码
  • 断开与远端web服务器的连接

二、安装及配置Apache服务器

[root@localhost ~]# yum install httpd -y ##安装apache软件
[root@localhost ~]# yum install httpd-manual.noarch -y ##安装使用手册
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /var/www/html/##默认发布目录
[root@localhost html]# vim index.html##默认发布文件
<h1>Hello World!</h1> 

访问测试:
http://172.25.254.105
基于Linux系统下Apache服务器的安装部署
http://172.25.254.105/manual/
基于Linux系统下Apache服务器的安装部署

三、Apache的基础信息

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

1.默认监听端口的修改

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
 42 Listen 8080
[root@localhost ~]# systemctl restart httpd.service 

修改内容:将默认的80端口改为8080
基于Linux系统下Apache服务器的安装部署
测试:
默认的80端口已经无法访问
基于Linux系统下Apache服务器的安装部署
8080端口可以进行访问
基于Linux系统下Apache服务器的安装部署
2.默认发布文件的修改
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件
这个文件可以指定多个,有访问顺序

[root@localhost html]# vim /etc/httpd/conf/httpd.conf 
163 <IfModule dir_module>
164     DirectoryIndex test.html index.html  
165 </IfModule>
[root@localhost html]# vim test.html
<h1>This is test page !</h1>
[root@localhost html]# systemctl restart httpd.service 

具体修改内容如图:
基于Linux系统下Apache服务器的安装部署
测试:http://172.25.254.105
基于Linux系统下Apache服务器的安装部署
3.默认发布目录的修改
默认发布目录为/var/www/html 将其修改为/linux/html

[root@localhost html]# mkdir -p /linux/html
[root@localhost html]# vim /etc/httpd/conf/httpd.conf 

注释掉原有的默认目录,然后加入/linux/html
基于Linux系统下Apache服务器的安装部署
编辑发布页面内容

[root@localhost html]# vim /linux/html/index.html
<h1>This is /linux/html/index.html</h1> 

因为新建的目录和默认发布目录的安全上下文不同所以selinux会阻止其显示
基于Linux系统下Apache服务器的安装部署
更改安全上下文:

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t '/linux(/.*)?'
[root@localhost ~]# restorecon -RvvF /linux/
[root@localhost html]# systemctl restart httpd.service 

更改成功
基于Linux系统下Apache服务器的安装部署
测试:http://172.25.254.105/
基于Linux系统下Apache服务器的安装部署

四、Apache内部主机的访问控制

1.基于ip的访问设置

[root@localhost html]# mkdir linux
[root@localhost html]# cd linux/
[root@localhost linux]# vim index.html
<h1>This is linux/index.htm</h1>
[root@localhost linux]# vim /etc/httpd/conf/httpd.conf 

设置用户黑名单,编辑文件内容如图:
基于Linux系统下Apache服务器的安装部署
测试:在62主机连接http://172.25.254.105/linux
基于Linux系统下Apache服务器的安装部署
设置用户白名单,编辑文件内容如图:
基于Linux系统下Apache服务器的安装部署
测试:在62主机连接http://172.25.254.105/linux
基于Linux系统下Apache服务器的安装部署
2.基于用户的访问设置

[root@localhost linux]# cd /etc/httpd/
[root@localhost httpd]# htpasswd -cm apacheuser admin##新建用户,-c会覆盖之前的内容,常用在第一次新建
[root@localhost httpd]# htpasswd -m apacheuser oldlee
[root@localhost httpd]#cat apacheuser ##查看用户
admin:$apr1$.G.eCumT$USvjvoduZHhU1ACy3Lszz1
oldlee:$apr1$ApxUCfvC$2WGdWcbF1Te4eBRNChP3C0
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf ##设置用户登录权限
[root@localhost httpd]# systemctl restart httpd.service 

允许admin用户登陆

基于Linux系统下Apache服务器的安装部署
测试:访问http://172.25.254.105/linux/
基于Linux系统下Apache服务器的安装部署
用admin用户登录:
基于Linux系统下Apache服务器的安装部署
用oldlee用户登录:
基于Linux系统下Apache服务器的安装部署
存在的用户都可登陆

[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf 
[root@localhost httpd]# systemctl restart httpd.service 

基于Linux系统下Apache服务器的安装部署

五、建立虚拟主机

1.在测试主机做本地解析

[root@foundation62 Desktop]# vim /etc/hosts ##本地域名解析
172.25.254.105  www.westos.com  news.westos.com music.westos.com

基于Linux系统下Apache服务器的安装部署
2.给虚拟主机建立发布目录和页面

[root@localhost conf.d]# mkdir -p /var/www/virtual/westos.com/news ##建立发布目录
[root@localhost conf.d]# mkdir -p /var/www/virtual/westos.com/music
[root@localhost ~]# vim /var/www/virtual/westos.com/music/index.html##建立测试页
<h1>music.westos.com</h1>
[root@localhost ~]# vim /var/www/virtual/westos.com/news/index.html
<h1>news.westos.com</h1>

3.配置对应的文件

[root@localhost ~]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# vim default.conf
<VirtualHost _default_:80>    ##虚拟主机开启的端口
        DocumentRoot /var/www/html  ##虚拟主机默认发布目录 
        CustomLog "logs/default.log" combined  ##虚拟主机日志,/etc/httpd/logs/news.log,combined:4种混合类型日志
</VirtualHost>
[root@localhost conf.d]# vim news.conf ##指定域名news.westos.com的访问到指定默认发布目录中
<VirtualHost *:80>
        ServerName news.westos.com  ##指定站点名称
        DocumentRoot "/var/www/virtual/westos.com/news/" ##站点默认发布目录
        CustomLog "logs/news.log" combined ##站点日志,combined表示四种日志的集合
</VirtualHost>
<Directory "/var/www/virtual/westos.com/news/"> ##给默认发布目录授权访问
        Require all granted                     ##所有用户均可访问
</Directory>
[root@localhost conf.d]# vim music.conf
<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot "/var/www/virtual/westos.com/music/"
        CustomLog "logs/music.log" combined
</VirtualHost>
<Directory "/var/www/virtual/westos.com/music/">
        Require all granted
</Directory> 
[root@localhost ~]# systemctl restart httpd.service 

测试验证:
在测试主机访问http://www.westos.com/
基于Linux系统下Apache服务器的安装部署
在测试主机访问http://www.news.com/
基于Linux系统下Apache服务器的安装部署
在测试主机访问http://music.westos.com/
基于Linux系统下Apache服务器的安装部署

六、Apache支持语言

1.PHP语言

[root@localhost conf.d]# yum install php -y
[root@localhost conf.d]# cd /var/www/html/
[root@localhost html]# vim index.php
<?php
        phpinfo();
?>
[root@localhost html]# systemctl restart httpd.service 

文件所写内容:
基于Linux系统下Apache服务器的安装部署
测试:http://172.25.254.105/index.php
基于Linux系统下Apache服务器的安装部署
2.CGI
[1].查看apache手册
基于Linux系统下Apache服务器的安装部署
[2].创建cgi脚本

[root@localhost html]# mkdir cgi
[root@localhost html]# vim cgi/index.cgi##创建脚本
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
[root@apache html]#chmod +x cgi/index.cgi ##给其可执行权限

脚本内容如图:
基于Linux系统下Apache服务器的安装部署
[3].创建转译文件

[root@localhost cgi]# vim /etc/httpd/conf.d/default.conf
<Directory "/var/www/html/cgi">
        Options +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex index.cgi
</Directory>

内容如图所示:
基于Linux系统下Apache服务器的安装部署
在网页测试:http://172.25.254.105/cgi/
基于Linux系统下Apache服务器的安装部署

七、安全证书与网页重写

1.安装相关软件

[root@localhost conf.d]# yum install mod_ssl.x86_64 -y
[root@localhost conf.d]# yum install crypto-utils.x86_64 -y

2.进行配置

[root@localhost conf.d]# genkey www.westos.com

按照如下图示内容一步一步操作:
选择next,进入下一步
基于Linux系统下Apache服务器的安装部署
选择1024那行,快速
基于Linux系统下Apache服务器的安装部署
等待大约十秒
基于Linux系统下Apache服务器的安装部署
基于Linux系统下Apache服务器的安装部署
在这里需要不停地敲击键盘直到加载完成
基于Linux系统下Apache服务器的安装部署
不发送CSA,选择NO
基于Linux系统下Apache服务器的安装部署
选择Next
基于Linux系统下Apache服务器的安装部署
下图填写的信息,在下载证书的时候均可以查到
基于Linux系统下Apache服务器的安装部署
完成上述操作后会生成以下两个文件

基于Linux系统下Apache服务器的安装部署
3.修改配置文件

[root@localhost conf.d]# ls
autoindex.conf  manual.conf  news.conf  README    tmprequest    welcome.conf
default.conf    music.conf   php.conf   ssl.conf  userdir.conf
[root@localhost conf.d]# vim ssl.conf 
100 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
107 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
[root@localhost conf.d]# systemctl restart httpd.service 

文件内容如图:
基于Linux系统下Apache服务器的安装部署
测试:访问https://www.westos.com/
选择红框的选项
基于Linux系统下Apache服务器的安装部署
获取证书
基于Linux系统下Apache服务器的安装部署
访问成功
基于Linux系统下Apache服务器的安装部署
4.网页重写

强制转换 http:// —–>https:// ,http默认端口80,https默认端口443

[root@localhost conf.d]# pwd
/etc/httpd/conf.d
[root@localhost conf.d]# vim login.conf
<VirtualHost *:443>
        ServerName login.westos.com
        DocumentRoot "/var/www/virtual/westos.com/login/"
        CustomLog "logs/login.log" combined
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/virtual/westos.com/login/">
        Require all granted
</Directory>

<VirtualHost *:80>
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>              

编写内如图:
基于Linux系统下Apache服务器的安装部署
创建目录及测试页

[root@localhost conf.d]# mkdir /var/www/virtual/westos.com/login -p
[root@localhost conf.d]# vim /var/www/virtual/westos.com/login/index.html
<h1>welcome to login's page!</h1>
[root@localhost conf.d]# systemctl restart httpd.service 

在测试主机:

[root@foundation62 Desktop]# vim /etc/hosts ##加入login.westos.com
172.25.254.105 www.westos.com  login.westos.com

访问 http://login.westos.com 或者 login.westos.com 自动跳转 https://login.westos.com
基于Linux系统下Apache服务器的安装部署