一、Web服务器软件Apache的了解
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
二、安装配置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.110
三、 Apache的配置文件的认识和修改
配置文件 | 含义 |
/etc/httpd/conf | 主配置目录 |
/etc/httpd/conf/httpd.conf | 主配置文件 |
/etc/http/conf.d | 子配置目录 |
/etc/httpd/conf.d/*.conf | 子配置文件 |
/var/www/html | 默认发布目录 |
ndex.html | 默认发布文件 |
80 | 默认监听端口 |
httpd_sys_content_t | 默认安全上下文 |
apache | 程序开启默认用户 |
/etc/httpd/logs/* | apache日志 |
1.默认监听端口的修改
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf ##打开主配置文件
42 Listen 8080 ##将端口修改为8080
[root@localhost ~]# systemctl restart httpd.service ##重启服务
测试:
访问80端口
访问8080端口
2.默认发布目录的修改
[root@localhost html]# vim /etc/httpd/conf/httpd.conf
163 <IfModule dir_module>
164 DirectoryIndex test.html index.html //该文件可以指定多个,有访问顺序,(此处的test.html不存在)
165 </IfModule>
[root@localhost html]# vim test.html
<h1>moren's page</h1>
[root@localhost html]# systemctl restart httpd.service
测试:
3.默认发布目录的修改
默认发布目录为/var/www/html 将其修改为/westos/html
[root@localhost html]# mkdir -p /westos/html
[root@localhost html]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/westos/html"
<Directory "/westos">
Require all granted
</Directory>
[root@localhost html]# cd /westos/html
[root@localhost html]# vim index.html
<h1>/westos/html's page</h1>
测试:
无法访问,因为默认安全上下文不一样,selinux会阻止。
修改安全上下文
[root@localhost html]# ls -Zd /westos/html/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /westos/html/
[root@localhost html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[root@localhost html]# restorecon -RvvF /westos/
[root@localhost html]# systemctl restart httpd.service
四、Apache内部主机的访问控制
1.基于ip的黑白名单设置
黑名单设置:
[root@localhost html]# mkdir linux
[root@localhost html]# cd linux/
[root@localhost linux]# vim index.html
<h1>linux's page!</h1>
[root@localhost linux]# vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html"
120 <Directory "/var/www">
121 Order Allow,Deny
122 Allow from All
123 Deny from 172.25.254.77 //拉黑ip为77的主机,其他ip都可以登陆看到
124 </Directory>
[root@localhost linux]# systemctl restart httpd.service
测试:
白名单设置:
[root@localhost linux]# vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html"
120 <Directory "/var/www">
121 Order Deny,Allow
122 Deny from All
123 Allow from 172.25.254.77 //除ip为77的主机以外,其他都不能看
124 </Directory>
[root@localhost linux]# systemctl restart httpd.service
测试:
2.基于用户的访问设置
[root@localhost linux]# cd /etc/httpd/
[root@localhost httpd]# htpasswd -cm apacheuser admin ##新建用户,-c会覆盖之前的内容,常用在第一次新建
[root@localhost httpd]# htpasswd -m apacheuser admin1 ##新建用户admin1
[root@localhost httpd]#cat apacheuser ##查看用户 admin:$apr1$9T003JNg$Or4Uxty472pFINzO5C7E6/
admin1:$apr1$WCbuYBFo$yPGRtzFGUufqhQ9KniXuw1
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf ##设置用户登录权限
119 DocumentRoot "/var/www/html"
120 <Directory "/var/www/html/linux">
121 AuthUserFile /etc/httpd/apacheuser
122 AuthName "Please input user and password !"
123 AuthType basic
124 Require user admin //只有admin能够访问
125 </Directory>
[root@localhost httpd]# systemctl restart httpd.service
测试:
存在的用户都可以登陆
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html"
120 <Directory "/var/www/html/linux">
121 AuthUserFile /etc/httpd/apacheuser
122 AuthName "Please input user and password !"
123 AuthType basic
124 # Require user admin
125 Require valid-user //存在的所有用户都可以登陆
126 </Directory>
[root@localhost httpd]# systemctl restart httpd.service
五、建立虚拟主机
1.先在本地做本地解析 (在真机上做)
vim /etc/hosts
172.25.254.110 www.westos.com news.westos.com music.westos.com
2.将8080端口恢复为80端口,并且恢复之前的操作
vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80 //恢复80端口
DocumentRoot "/var/www/html" //打开访问的配置文件
3.给虚拟主机建立发布目录和页面
[root@localhost ~]# cd /etc/httpd/conf.d/
vim 1_default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
[root@localhost ~]# mkdir -p /var/www/virtual/westos.com/news ##建立发布目录
[root@localhost ~]# 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>
4.配置相对应的文件
[root@localhost ~]# vim music.conf
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot /var/www/virtual/westos.com/music/html
CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/virtual/westos.com/music">
Require all granted
</Directory>
[root@localhost ~]# vim news.conf
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot /var/www/virtual/westos.com/news/html
CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/virtual/westos.com/news">
Require all granted
</Directory>
5.重启服务
systemctl restart httpd
六、Apache支持的语言
1.html语言
2.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
测试:
172.25.254.120/index.html
3.cgi语言
[root@localhost html]# mkdir cgi
[root@localhost html]# semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
#//将安全上下文该为一致”httpd_sys_script_exec_t“
[root@localhost html]# restorecon -RvvF /var/www/html/cgi/
[root@localhost html]# 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 #//给该命令执行权限
[root@localhost html]# /var/www/html/cgi/index.cgi #//执行该脚本确保脚本正常运行
[root@localhost html]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim 1_default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
Options +ExecCGI #//该目录下的文件cgi都要执行
AddHandler cgi-script .cgi #//以cgi-script和 .cgi结尾的都要执行
</Directory>
[root@localhost conf.d]# systemctl restart httpd
测试:
七、Apache安全证书的添加
[root@localhost conf.d]# yum install mod_ssl.x86_64 -y
[root@localhost conf.d]# yum install crypto-utils -y
[root@localhost conf.d]# firewall-cmd --permanent --add-service=https
[root@localhost conf.d]# firewall-cmd --reload
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]# genkey www.westos.com
[root@localhost conf.d]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
[root@localhost conf.d]# systemctl restart httpd
1.安装软件crypto-utils 和 mod_ssl
2.配置相关文件
genkey www.westos.com
不停的敲击键盘,可以快速的完成
CSR 不发送
在认证书上填写信息
完成之后生成安全证书和钥匙
/etc/pki/tls/certs/www.westos.com.crt
/etc/pki/tls/private/www.westos.com.key
3.修改配置文件
vim /etc/httpd/conf.d/ssl.conf
100 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
107 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
4.重启服务
systemctl restart httpd
5.测试:
获取证书
八、网页重写
[root@localhost conf.d]# cd /etc/httpd/conf.d
[root@localhost conf.d]# cp -p news.conf login.conf //重命名
[root@localhost conf.d]# mkdir -p /var/www/html/virtual/westos.com/login/html
[root@localhost conf.d]# vim /var/www/html/virtual/westos.com/login/html/index.html
login'page
[root@localhost conf.d]# vim login.conf
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/html/virtual/westos.com/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>
<Directory "/var/www/html/virtual/westos.com/login/html/"> #//复制建立的目录
Require all granted
</Directory>
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
[root@localhost conf.d]# systemctl restart httpd
测试:
输入login.westos.com 自动调转至http://login.westos.com 并显示网页内容。