1. Apache简介
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开源web服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python/PHP等解释器编译到服务器中
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
Apache本来只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
2. Apacheweb服务器特性:
1.支持最新的HTTP/1.1通信协议
2.拥有简单而强有力的基于文件的配置过程
3.支持通用网关接口
4.支持基于IP和基于域名的虚拟主机
5.支持多种方式的HTTP认证
6.集成Perl处理模块
7.集成代理服务器模块
8.支持实时监视服务器状态和定制服务器日志
9.支持服务器端包含指令(SSI)
10.支持安全Socket层(SSL)
11.提供用户会话过程的跟踪
12.支持FastCGI
3. Apache安装(rhel7.2下yum源安装)
1. 搜索Apache软件
2. yum安装
[root@localhost Desktop]# yum install httpd -y
3. 开启服务
[root@localhost Desktop]# systemctl start httpd
服务端口查看:
4. 本地测试
5.外部主机访问设置:
#首先配置防火墙策略,允许http外部访问
[root@localhost Desktop]# firewall-cmd --permanent --add-service=http
success
#然后重载防火墙配置
[root@localhost Desktop]# firewall-cmd --reload
success
#重启服务,即可在任意可达主机中进行访问
[root@localhost Desktop]# systemctl restart httpd.service
测试:在任意可达主机浏览器中输入服务所在主机的ip进行访问,页面效果和本地相同即为成功。
6.制作自己的默认访问页:
在默认网站发布目录下新建文件,并写入简单的语句:
[root@localhost Desktop]# vim /var/www/html/index.html
[root@localhost Desktop]## cat /var/www/html/index.html
<h1 style="font-size:6em;color:olive">Halo the World!</h1>
浏览器中访问测试:
4. Apache配置
Apache主配置文件:
/etc/httpd/conf/httpd.conf
常用配置解读:
ServerRoot "/etc/httpd" 用于指定Apache的运行目录
Listen 80 监听端口
User apache 运行apache程序的用户和组
Group apache
ServerAdmin root@localhost 管理员邮箱
DocumentRoot "/var/www/html" 网页文件的存放目录
<Directory "/var/www/html"> <Directory>语句块自定义目录权限
Require all granted
</Directory>
ErrorLog "logs/error_log" 错误日志存放位置
AddDefaultCharset UTF-8 默认支持的语言
IncludeOptional conf.d/*.conf 加载其它配置文件
DirectoryIndexindex.html 默认主页名称
1.更改服务端口:
vim /etc/httpd/conf/httpd.conf
#找到以下行,修改80为你喜欢的端口号(例如8080)
#Listen 12.34.56.78:80
Listen 80
执行端口查询:
2.更改网站的默认发布目录:
vim /etc/httpd/conf/httpd.conf
修改上图中圈出的部分为:
注意:/var/lockey/html为你要指定的网站根目录,要记得使用命令去创建:mkdir /var/lockey/html -p
#DocumentRoot "/var/www/html"
DocumentRoot "/var/lockey/html"
#
# Relax access to content within /var/www.
#
<Directory "/var/lockey/html">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
# Further relax access to the default document root:
重启服务你发现访问不了或者访问到的是默认页,那么学习的机会来了!!!
首先清空日志信息:
>/var/log/messages
再次访问,然后查看日志信息,一般会有以下提示:cat /var/log/messages
分析:SELinux强制访问控制的问题
查看一下标签,发现问题所在
[root@localhost lockey]#ls -lZd /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@localhost lockey]#ls -lZd /var/lockey/html/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /var/lockey/html/
根据日志里的提示
If you want to allow httpd to have getattr access on the index.html file
Then you need to change the label on /var/lockey/html/index.html
Do
# semanage fcontext -a -t FILE_TYPE '/var/lockey/html/index.html'
。。。
Then execute:
restorecon -v '/var/lockey/html/index.html'
依次执行以下命令:
#修改文件或者目录的安全上下文标签
[root@localhost lockey]# semanage fcontext -a -t httpd_sys_content_t '/var/lockey/html(/.*)?'
#刷新标签
[root@localhost lockey]# restorecon -RvvF '/var/lockey/html'
好了,重启服务再次访问
3.配置虚拟主机
虚拟主机允许您从一个httpd服务器同时为多个网站提供服务
1.建立各网站发布目录并设置SELinux标签
[root@lockey lockey]# mkdir -p /var/lockey/cheng/news.cheng.com
[root@lockey lockey]# mkdir -p /var/lockey/cheng/music.cheng.com
#设置selinux标签
[root@lockey lockey]# ls -lZd /var/lockey/cheng/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /var/lockey/cheng/
[root@lockey lockey]# semanage fcontext -a -t httpd_sys_content_t '/var/lockey/cheng(/.*)?'
[root@lockey lockey]# restorecon -RvvF '/var/lockey/cheng'
restorecon reset /var/lockey/cheng context unconfined_u:object_r:var_t:s0->system_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/lockey/cheng/news.cheng.com context unconfined_u:object_r:var_t:s0->system_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/lockey/cheng/music.cheng.com context unconfined_u:object_r:var_t:s0->system_u:object_r:httpd_sys_content_t:s0
[root@lockey lockey]# ls -lZd /var/lockey/cheng/drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/lockey/cheng/
2.创建虚拟主机默认配置文件:
vim /etc/httpd/conf.d/default.conf
[root@dns-server1 music.cheng.com]# cat /etc/httpd/conf.d/default.conf
<Virtualhost _default_:80>
DocumentRoot "/var/lockey/html"
CustomLog "logs/default.log" combined
</Virtualhost>
3.配置第一个网站
[root@lockey conf.d]# cat news.conf
<Virtualhost *:80>
ServerName news.cheng.com
DocumentRoot /var/lockey/cheng/news.cheng.com
CustomLog "logs/news.log" combined
</Virtualhost>
<Directory "/var/lockey/cheng/news.cheng.com">
Require all granted
</Directory>
[root@lockey conf.d]#
4.配置第二个网站
[root@lockey conf.d]# cat music.conf
<Virtualhost *:80>
ServerName music.cheng.com
DocumentRoot /var/lockey/cheng/music.cheng.com
CustomLog "logs/music.log" combined
</Virtualhost>
<Directory "/var/lockey/cheng/music.cheng.com">
Require all granted
</Directory>
[root@lockey conf.d]#
3.需要在访问此网站的主机里配置DNS
[root@lockey conf.d]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.199.130 www.cheng.com news.cheng.com music.cheng.com####新增行
[root@lockey conf.d]#
测试:在配置过DNS的主机里通过浏览器依次访问:www.cheng.com news.cheng.com music.cheng.com就会看到不同的内容也。
注意:SELinux标签一定要进行设置,否则会出错
4. 配置基于用户的身份验证
在此配置中,用户账户和密码存储在本地.htpasswd文件中。处于安全原因,该文件不能
保存在网站的DocumentRoot中,而应保存在Web服务器不提供服务的一些目录中。特殊
的htpasswd命令用于在.htpasswd文件中管理用户。
配置程序示例:
用两个账户创建Apache密码文件:
[root@localhost lockey]# htpasswd -cm /etc/httpd/lockey lockey
#首次创建密码文件需要加参数c,后面就不再需要了
[root@localhost lockey]# htpasswd -m /etc/httpd/lockey halo
假设之前定义VirtualHost块,请将诸如以下内容添加至VirtualHost块:
<Directory /var/www/html>
AuthName “Password Auth”
AuthType basic
AuthUserFile /etc/httpd/lockey
Require valid-user
</Directory>
重启apache服务,并使用Web浏览器测试访问,在弹出的对话框中输入上述用户名和密码才可正常访问网站