Apache简介:
企业常用的web 服务器,用来对外提供http:// (超文本传输协议)。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
Apache的安装部署
1. 安装apache软件及手册
[root@apache-server ~]# yum install httpd -y
[root@apache-server ~]# yum install httpd-manual -y
2.开启apache
3.火墙策略(允许apache)
[root@apache-server ~]# firewall-config
4. 查看apache 服务的端口(80 端口)
5. 发布目录
/var/www/html apache的 / 目录,默认发布目录
/var/www/html/index.html apache的默认发布目录
测试:
apache的基础信息
1. 主配置目录:/etc/httpd/conf
2. 主配置文件:/etc/httpd/conf/http.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 //加载其它配置文件
DirectoryIndex index.html //默认主页(默认发布文件)名称
3. 子配置文件:/etc/httpd/conf.d
4. 默认端口 : 80
查看apache 的端口信息:
[root@apache-server html]# semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
修改默认端口:
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
42 Listen 8080
[root@apache-server html]# systemctl restart httpd.service
[root@apache-server html]# netstat -antlupe | grep httpd
tcp6 0 0 :::8080 :::* LISTEN 0 51233 3281/httpd
5. 默认安全上下文:httpd_sys_content_t
6. 程序开启默认用户:apache
7. apache 日志:/etc/httpd/logs/*
8. 默认发布文件:/var/www/html/index.html
更改默认发布文件:
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex westos.html index.html
[root@apache-server html]# vim westos.html
<h1>westos.html</h1>
[root@apache-server html]# systemctl restart httpd.service
测试:
9. 默认发布目录:/var/www/html
更改默认发布目录为 /westos/web/html :
[root@apache-server html]# mkdir -p /westos/web/html
[root@apache-server www]# cd /westos/web/html/
[root@apache-server html]# pwd
/westos/web/html
[root@apache-server html]# vim westos.html
<h1>westos.html</h1>
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/web/html/"
121 <Directory "/westos/web/html/">
122 Require all granted
123 </Directory>
[root@apache-server html]# setenforce 0
[root@apache-server html]# systemctl restart httpd.service
测试:
注意:在selinux 强制模式下,要更改apache的默认发布目录,还需对该目录的安全上下文进行更改。
[root@apache-server html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[root@apache-server html]# restorecon -RvvF /westos/[root@apache-server html]# getenforce
Enforcing
apache内部的访问控制
基于ip的访问控制
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/web/html/"
121 <Directory "/westos/web/html/">
122 Require all granted
123 Order Allow,Deny ##先读allow 的限制,再读deny 的指定
124 Allow from ALL
125 Deny from ALL ##允许所有人,又禁止所有人,即都禁止
126 </Directory>
[root@apache-server html]# systemctl restart httpd.service
测试:
测试:
基于用户的访问控制:
htpasswd 命令用于在 .htpasswd 文件中管理用户 :
htpasswd -cm authfile admin //第一次创建新的用户,需要加-c
htpasswd -m authfile admin1... //后面的都是额外添加的,不用-c,如果有-c就会重新创建用户,之前创建的就没了
修改配置文件,添加规则:
121 <Directory "/westos/web/html/">
122 # Require all granted //允许所有人登陆,密码访问要注释掉
123 AUthUserFile /etc/httpd/conf/http_userlist //认证文件
124 AuthName "Please input username and password !!" //提示信息
125 AuthType basic //认证方式
126 # Require user admin //允许用户admin
127 Require valid-user //允许所有有身份的用户
128 </Directory>
测试:
//重新打开网站,需要输入用户及认证密码
虚拟主机
虚拟主机允许您从一个 httpd 服务器同时为多个网站提供服务。
现在讲解基于名称的虚拟主机其中多个主机名都指向同一个 IP 地址 , 但是 Web 服务器根据用于到达站点的主机名提供具有不同内容的不同网站。
[root@apache-server conf.d]# vim a_default.conf
[root@apache-server conf.d]# vim music.conf
[root@apache-server conf.d]# vim news.conf
[root@apache-server conf.d]# cat a_default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
[root@apache-server conf.d]# cat music.conf
<VirtualHost *:80>
ServerName music.westos.com //指定站点名称
DocumentRoot /var/www/westos.com/music/html //站点默认发布目录
CustomLog logs/music.log combined //站点日志混合型
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
Require all granted
</Directory>
[root@apache-server conf.d]# systemctl restart httpd.service
测试:
在测试机里进行本地解析
172.25.254.102 www.westos.com music.westos.com news.westos.com
可以看到当我们访问不同的web的服务器时,显示不同的界面但是这些都指向同一个IP。