一、apache简介
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
企业中常用的web服务,用来提供http://(超文本传输协议)
二、apache的安装部署
yum install httpd -y ##安装apache软件
yum install httpd-manual -y ##安装apache手册
systemctl start httpd ##开启服务
systemctl enable httpd
firewall-cmd --list-all ##列出火墙信息,查看火墙允许的服务
firewall-cmd --permanent --add-service=http ##火墙永久允许http服务
firewall-cmd --reload ##火墙重新加载策勒
/var/www/html ##apache的/目录,默认发布目录
/var/www/html/index ##apache的默认发布文件
vim /var/www/html/index ##编辑默认发布文件
<h1> hello westos </h1>
测试:
http://172.25.254.116 ##访问apache发布文件
http://172.25.254.116/manual ##访问apache手册
示图:apache发布文件
示图:apache手册
三、apache的基础信息
/etc/httpd/conf/ ##主配置目录
/etc/httpd/conf/httpd.conf ##主配置文件
/etc/httpd/conf.d/ ##子配置目录
/etc/httpd/conf.d/*.conf ##子配置文件
/var/www/html ##默认发布目录
index.html ##默认发布文件
80 ##默认端口
httpd_sys_content_t ##默认安全上下文
apache ##程序开启默认用户
/etc/httpd/logs/* ##apache日志
(1)修改默认端口:
vim /etc/httpd/conf/httpd.conf
43 Listen 8080
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
(2)修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.html test.html ##当index.html不存在时,访问test.html
(3)修改默认发布目录:
120 DocumentRoot "/www/html"
121<Directory "/www">
122 Require all granted
123<Directory>
实例1:更改apache默认发布文件为test.html
[root@apache html]# vim /etc/httpd/conf/httpd.conf
[root@apache html]# systemctl restart httpd.service
示图:更改后的默认发布文件test.html
测试:
实例2:更改apache默认发布目录为/westos/html
[root@apache html]# mkdir -p /westos/html ##创建目录
[root@apache html]# vim /westos/html/index.html ##随意编辑内容
[root@apache html]# vim /etc/httpd/conf/httpd.conf ##更改配置文件中的默认发布目录
119 #DocumentRoot "/var/www/html" ##注释原默认发布目录
120 DocumentRoot "/westos/html" ##添加新默认发布目录
121 <Directory "/westos/html"> ##目录/westos/html授权
122 Require all granted ##任何人都可访问此目录
123 </Directory>
[root@apache html]# systemctl restart httpd.service ##重启服务
[root@localhost html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?' ##更改安全上下文
[root@localhost html]# restorecon -RvvF /westos/ ##刷新
示图:
<1>配置文件的更改
<2>index.html测试页
<3>更改安全上下文
测试:
实例3:修改默认端口
[root@apache html]# getenforce ##查看内核状态
Disabled ##内核状态必须为disabled
[root@apache html]# cd /var/log
[root@apache log]# ss -antlupe | grep httpd ##查看端口号80
tcp LISTEN 0 128 :::80 :::* users:(("httpd",4192,4),("httpd",4191,4),("httpd",4190,4),("httpd",4189,4),("httpd",4188,4),("httpd",4187,4),("httpd",4186,4)) ino:160093 sk:ffff88000c622800 <->
[root@apache log]# vim /etc/httpd/conf/httpd.conf ##更改端口号8080
42 Listen 8080
[root@apache log]# systemctl restart httpd.service ##重启服务
[root@apache log]# ss -antlupe | grep httpd ##查看端口号8080
tcp LISTEN 0 128 :::8080 :::* users:(("httpd",4234,4),("httpd",4233,4),("httpd",4232,4),("httpd",4231,4),("httpd",4230,4),("httpd",4229,4)) ino:161614 sk:ffff880001ff2000 <->
[root@apache log]# firewall-cmd --permanent --add-port=8080 ##
bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol
[root@apache log]# firewall-cmd --permanent --add-port=8080/tcp ##防火墙允许8080端口,默认80端口
success
[root@apache log]# firewall-cmd --reload ##重新加载火墙
success
[root@apache log]# systemctl restart httpd.service
[root@apache log]# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports: 8080/tcp ##8080端口已加载
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
测试:
http://172.25.254.116:8080/index.html
示图:测试结果
四、apache内部主机的访问控制
1、针对主机的访问控制
vim /etc/httpd/conf/httpd.conf
5<Directory "/var/www/html">
6 Order deny,allow ##列表读取顺序,后读取的列表会覆盖先读取的内容
7 Allow from 172.25.254.44 ##allow覆盖deny
8 Deny from all
9</Directory>
2、用户方式的访问控制
(1)创建用户认证信息
htpasswd -cm /etc/httpd/webuser admin ##创建用户认证admin,首次创建用户,用参数c(create)
htpasswd -m /etc/httpd/webuser admin1 ##其余用户建立时,只需要参数m,不加c,若加c,则覆盖admin认证密码
示图:用户认证信息
(2)主配置文件
vim /etc/httpd/conf/httpd.conf
121 <Directory "/var/www/html"> ##授权
122 #Require all granted ##允许所有用户访问
123 AuthUserfile /etc/httpd/webuser ##用户认证文件来源
124 AuthName "Please input username and passwd" ##请输入用户名、密码
125 Authtype basic ##认证类型:基本类型
126 #Require user admin ##只允许admin用户访问
127 Require valid-user ##允许认证用户通过帐号密码访问
128 </Directory>
测试:
五、建立虚拟主机
1、在测试主机中做好本地解析
vim /etc/hosts ##dns域名解析(测试主机)
172.25.254.116 www.westos.com news.westos.com music.westos.com
[root@apache ~]# ping www.westos.com
PING www.westos.com (172.25.254.116) 56(84) bytes of data.
64 bytes from www.westos.com (172.25.254.116): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from www.westos.com (172.25.254.116): icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from www.westos.com (172.25.254.116): icmp_seq=3 ttl=64 time=0.045 ms
2、为虚拟主机建立发布目录及测试页
[root@apache conf.d]# mkdir /var/www/virtual/news.westos.com/html -p ##建立发布目录
[root@apache conf.d]# echo "<h1>news.westos.com</h1>" > /var/www/virtual/news.westos.com/html/index.html ##建立测试页,内容news.westos.com
[root@apache conf.d]# mkdir /var/www/virtual/music.westos.com/html -p ##建立发布目录
[root@apache conf.d]# echo "<h1>music.westos.com</h1>" > /var/www/virtual/music.westos.com/html/index.html ##建立测试页,内容music.westos.com
3、配置
[root@apache ~]# cd /etc/httpd/conf.d
[root@apache conf.d]# vim a_default.conf ##指定域名的访问都访问a_default
<VirtualHost _default_:80> ##虚拟主机开启的端口
DocumentRoot /var/www/html ##虚拟主机默认发布目录
CustomLog logs/default.log combined ##虚拟主机日志,相对路径,绝对路径/etc/httpd/logs/news.log,combined:4种混合类型日志
</VirtualHost>
[root@apache conf.d]# vim news.conf ##指定域名news.westos.com的访问到指定默认发布目录中
<VirtualHost *:80>
ServerName news.westos.com ##域名
DocumentRoot /var/www/virtual/news.westos.com/html ##指定默认发布目录
CustomLog logs/news.log combined ##虚拟主机日志
</VirtualHost>
<Directory "/var/www/virtual/news.westos.com/html"> ##给默认发布目录授权访问
Require all granted ##所有用户允许访问
</Directory>
[root@apache conf.d]# vim music.conf ##指定域名music.westos.com的访问到指定默认发布目录中
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot /var/www/virtual/music.westos.com/html ##访问文件目录
CustomLog logs/news.log combined ##日志
</VirtualHost>
<Directory "/var/www/virtual/music.westos.com/html"> ##授权
Require all granted ##所有用户允许访问
</Directory>
[root@apache conf.d]# systemctl restart httpd
注意:music.conf与music.conf文件类似,可直接copy,修改关键字即可,如下.
[root@localhost conf.d]# cp news.conf music.conf
:%s/news/music/g ##将news全文替换为music
测试:
示图:www.westos.com
示图:news.westos.com
示图:music.westos.com
六、语言
支持三种语言:php,html,cgi
1、php
[root@apache html]# yum install php -y
[root@apache html]# vim /var/www/html/index.php
<?php
phpinfo();
?>
[root@apache conf.d]# systemctl restart httpd
示图:文件内容
测试:
172.25.254.116/index.php
2、cgi
<1>安装apache手册
yum install httpd-manual -y ##安装apache手册
示图:
1>manual安装手册
2>CGI脚本
<2>创建cgi脚本(脚本:添加可执行权限)
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mkdir cgi
[root@localhost html]# cd cgi
[root@localhost cgi]# vim index.cgi
[root@localhost cgi]# chmod +x index.cgi ##脚本,添加可执行权限
示图:cgi文件内容
示图:cgi脚本运行
<3>转译文件
[root@apache cgi]# vim /etc/httpd/conf.d/a_default.conf ##虚拟主机
106 <Directory /var/www/html/cgi>
107 Options +ExecCGI
108 AddHandler cgi-script .cgi
109 </Directory>
[root@apache cgi]# systemctl restart httpd
示图:/etc/httpd/conf.d/a_default.conf文件内容(转译文件)
<4>更改安全上下文
[root@localhost cgi]# getenforce ##Enforcing需修改安全上下文,Disabled不需修改
Enforcing
[root@localhost cgi]# ls /var/www/html/cgi/ -Z -d ##查看安全上下文
[root@localhost cgi]# semanage fcontext -l | grep httpd
[root@localhost cgi]# semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
[root@localhost cgi]# restorecon -RvvF /var/www/html/cgi/
测试:
http://172.25.254.116/cgi/index.cgi
示图:刷新时间更新
七、 配置httpd证书验证及网页重写##
**实验环境:**www.westos.com页面搭建成功
1.配置httpd证书
<1>安装
[root@localhost html]# cd /etc/httpd/conf.d
[root@localhost conf.d]# yum install mod_ssl.x86_64 -y
[root@apache conf.d]# yum install crypto-utils-2.4.1-42.el7.x86_64
<2>配置
[root@apache conf.d]# genkey www.westos.com
示图:操作过程
/etc/pki/tls/certs/www.westos.com.crt ##生成的安全证书
/etc/pki/tls/private/www.westos.com.key ##生成的钥匙
<3>配置文件
[root@apache conf.d]# ls ##配置文件ssl.conf
a_default.conf music.conf README userdir.conf
autoindex.conf news.conf ssl.conf welcome.conf
manual.conf php.conf tmprequest
[root@apache 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@apache conf.d]# systemctl restart httpd
<4>查看安全证书
访问:https://172.25.254.116/ 或者 https://www.westos.com/
2.网页重写
<1>配置文件
注意:
<1>http默认端口80,https默认端口443
<2> 301临时转换 302永久转换
[root@localhost conf.d]# vim login.conf
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/virtual/login/html
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>
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
<2>创建目录及测试页
[root@localhost conf.d]# mkdir -p /var/www/virtual/login/html
[root@localhost conf.d]# cd /var/www/virtual/login/html
[root@localhost html]# vim index.html
<3>重启服务
[root@localhost conf.d]# systemctl restart httpd
<4>测试机(虚拟机)地址解析
[root@localhost ~]# vim /etc/hosts
测试:
访问 http://login.westos.com 或者 login.westos.com 自动跳转 https://login.westos.com