一、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
http://172.25.254.105/manual/
三、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
测试:
默认的80端口已经无法访问
8080端口可以进行访问
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
具体修改内容如图:
测试:http://172.25.254.105
3.默认发布目录的修改
默认发布目录为/var/www/html 将其修改为/linux/html
[root@localhost html]# mkdir -p /linux/html
[root@localhost html]# vim /etc/httpd/conf/httpd.conf
注释掉原有的默认目录,然后加入/linux/html
编辑发布页面内容
[root@localhost html]# vim /linux/html/index.html
<h1>This is /linux/html/index.html</h1>
因为新建的目录和默认发布目录的安全上下文不同所以selinux会阻止其显示
更改安全上下文:
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t '/linux(/.*)?'
[root@localhost ~]# restorecon -RvvF /linux/
[root@localhost html]# systemctl restart httpd.service
更改成功
测试:http://172.25.254.105/
四、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
设置用户黑名单,编辑文件内容如图:
测试:在62主机连接http://172.25.254.105/linux
设置用户白名单,编辑文件内容如图:
测试:在62主机连接http://172.25.254.105/linux
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用户登陆
测试:访问http://172.25.254.105/linux/
用admin用户登录:
用oldlee用户登录:
存在的用户都可登陆
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf
[root@localhost httpd]# systemctl restart httpd.service
五、建立虚拟主机
1.在测试主机做本地解析
[root@foundation62 Desktop]# vim /etc/hosts ##本地域名解析
172.25.254.105 www.westos.com news.westos.com music.westos.com
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/
在测试主机访问http://www.news.com/
在测试主机访问http://music.westos.com/
六、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
文件所写内容:
测试:http://172.25.254.105/index.php
2.CGI
[1].查看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 ##给其可执行权限
脚本内容如图:
[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>
内容如图所示:
在网页测试:http://172.25.254.105/cgi/
七、安全证书与网页重写
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,进入下一步
选择1024那行,快速
等待大约十秒
在这里需要不停地敲击键盘直到加载完成
不发送CSA,选择NO
选择Next
下图填写的信息,在下载证书的时候均可以查到
完成上述操作后会生成以下两个文件
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
文件内容如图:
测试:访问https://www.westos.com/
选择红框的选项
获取证书
访问成功
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>
编写内如图:
创建目录及测试页
[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