文章目录
Linux云计算架构-使用apache搭建简单的web网站服务器
1. web服务器介绍
一般网站服务是指Web网络服务。是指允许用户通过浏览器访问到互联网中各种资源的服务。Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求才会响应,最终用于提供服务程序的Web服务器会通过HTTP或者HTTPS把请求的内容传送给用户。(有请求才有回应)
提供web网络服务的程序有IIS
、Nginx
、Apache
①IIS(Internet Information Services,互联网信息服务)
:windows系统中默认的web服务程序,图形化的网站管理工具,不仅可以提供web网站服务
,还可以提供FTP\NMTP\SMTP
等服务。
②Nginx
:后起之秀,非常好用。
③Apache
:RHEL5、6、7系统的默认web服务程序,老牌web服务程序。
④tomcat
apache官网:http://www.apache.org/
apache官网:http://httpd.apache.org/
2. 使用apache部署web网站服务器
web服务的工作模式:B/S模式
端口号:80/http(默认端口) 443/https(SSL安全端口)
Apache服务程序的服务名为httpd
# 安装httpd服务
[root@client ~]# yum install -y httpd
# 安装字符界面的浏览器客户端
[root@client ~]# yum install -y elinks
# 写点测试内容
[root@client ~]# cd /var/www/html/
[root@client html]# echo hahah > index.html
# 启动httpd服务
[root@client ~]# systemctl start httpd.service
[root@client ~]# systemctl enable httpd.service
# 开放80端口号
[root@client ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@client ~]# firewall-cmd --reload
success
# 看下能否正常访问,如果不行,估计是配置文件的问题
# 一般是这行要改:
95 ServerName localhost:80
[root@client ~]# elinks 192.168.8.181
# 直接访问网址:
http://192.168.8.181/
3. 配置httpd服务程序
-
httpd服务程序的主要配置文件
①服务目录【路径:/etc/httpd
】
②主配置文件【路径:/etc/httpd/conf/httpd.conf
】
③网站数据目录【路径:/var/www/html
】
④访问日志【路径:/var/log/httpd/access_log
】
⑤错误日志【路径:/var/log/httpd/error_log
】 -
主配置文件【路径:
/etc/httpd/conf/httpd.conf
】
存在3种类型的信息:注释信息、全局配置(对所有子站点都有效)、区域配置(对指定子站点有效)
31 ServerRoot "/etc/httpd" # httpd服务目录
42 Listen 80 # 监听端口号,可以指定
57 Include conf.modules.d/*.conf
67 User apache # 运行httpd服务的用户
68 Group apache # 运行httpd服务的用户组
87 ServerAdmin root@localhost # 管理员邮箱
96 ServerName localhost:80 # web服务器名,一般为IP:80
103 <Directory /> # 设置网站数据目录的权限
104 AllowOverride none # 设置为none,忽略.htaccess
105 Require all denied # 拒绝所有,允许所有为allow
106 </Directory>
120 DocumentRoot "/var/www/html" # 默认的网站数据目录
183 ErrorLog "logs/error_log" # 错误日志存放位置
190 LogLevel warn # 日志级别
218 CustomLog "logs/access_log" combined # 访问日志存放位置
317 AddDefaultCharset UTF-8 # 支持的语言,默认编码
354 IncludeOptional conf.d/*.conf # conf.d目录下conf文件也是有效配置文件
# 定义首页文件
164 <IfModule dir_module>
165 DirectoryIndex index.html # 首页为index.html
166 </IfModule>
# Timeout 60 # 访问超时时间
# 获取状态信息的界面,配置文件本身没有这个内容
356 ExtendedStatus On
357 <location /server-status>
358 SetHandler server-status
359 Order allow,deny
360 Allow from 127.0.0.1 192.168.8.0/24
361 </location>
4. 修改web网站数据目录
# 查看下apache版本,可以看到版本是Apache/2.4.6 (CentOS)
[root@client ~]# curl -I 192.168.8.181
HTTP/1.1 200 OK
Date: Wed, 19 Aug 2020 13:04:25 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Wed, 19 Aug 2020 12:16:27 GMT
ETag: "6-5ad39f9178694"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html; charset=UTF-8
# 修改网站数据目录为/data/www/html
# 创建目录并创建测试数据
[root@client ~]# mkdir -p /data/www/html
# 查看selinux安全上下文并修改为httpd_sys_content_t
[root@client ~]# ll -Zd /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@client ~]# ll -Zd /data/www/html/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /data/www/html/
[root@client ~]# chcon -R -t httpd_sys_content_t /data/www/html/
[root@client ~]# cp /var/www/html/index.html /data/www/html/
# 备份httpd配置文件
[root@client ~]# cd /etc/httpd/conf
[root@client conf]# cp httpd.conf httpd.conf.bak
# apache2.2和apache2.4访问控制写法:
===================================================
# apache2.4写法:
Require host 主机地址
Require ip ip地址
Require not ip 10.1.1.1
Require not host www.com
require all granted 允许所有访问
require all denied 拒绝所有访问
Require expr expression 若expression计算为true则允许访问
Require user userid 只有指定的用户才可以访问
Require group group-name 指定的用户组可以访问
Require valid-user 所有有效用户可以访问
# 修改网站数据目录
[root@client ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/data/www/html"
<Directory "/data/www/html">
AllowOverride None
Require all denied
Require ip 192.168.8.0/24
</Directory>
===================================================
# apache2.2写法:
# 修改网站数据目录
[root@client ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/data/www/html"
<Directory "/data/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny # 有冲突时的优先级。越往后优先级越高。这里默认是拒绝的。
Allow from 192.168.8.0/24 # 允许网段
Deny from 192.168.9.0/24 # 拒绝网段
Allow from .baidu.com # 允许百度访问
</Directory>
===============================================
[root@client ~]# systemctl restart httpd
5. 配置别名(虚拟目录)
[root@client ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/data/www/html"
alias /data/ /data/www/html/ # 取别名,即虚拟目录
<Directory "/data/www/html">
AllowOverride None
Require all denied
Require ip 192.168.8.0/24
</Directory>
[root@client ~]# systemctl restart httpd
# 当网站数据目录下不存在首页文件(index.html),则显示该目录下文件夹。
# 生成一些目录
[root@client ~]# cp -a /boot/grub/ /data/www/html/
# 编辑httpd配置文件
[root@client ~]# vim /etc/httpd/conf/httpd.conf
Alias /data "/data/www/html"
<Directory "/data/www/html">
AllowOverride None
Options Indexes FollowSymLinks # 无index.html则显示目录
Require all denied
Require ip 192.168.8.0/24
</Directory>
===========================================================================
Options Indexes FollowSymLinks # 显示目录
Options +Indexes FollowSymLinks # 显示目录
Options -Indexes FollowSymLinks # 禁止显示目录
Options FollowSymLinks # 禁止显示目录
[root@client ~]# systemctl restart httpd
6. 用户验证登录
[root@client ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/data/www/html"
Alias /data "/data/www/html"
<Directory "/data/www/html">
AllowOverride None
Options Indexes FollowSymLinks
# Require all denied
# Require ip 192.168.8.0/24 # 使用用户验证不可与指定IP同时使用
authtype basic # 认证类型
authname "my web site" # 认证区域名称
authuserfile /etc/httpd/conf/passwd.secret # 用户认证文件
Require valid-user # 是否将用户认证文件中的用户作为有效用户,加这句表示是
# require user abong test # 把abong和test作为有效用户,允许访问。
</Directory>
# -c 创建一个用户认证文件。【每一行为 用户名:密码】
# -m 对密码进行md5加密
# -h 查看帮助信息
[root@client ~]# htpasswd -cm /etc/httpd/conf/passwd.secret test # 首次要加-c参数
New password:
Re-type new password:
Adding password for user test
[root@client ~]# htpasswd -m /etc/httpd/conf/passwd.secret abong # 追加只需-m
New password:
Re-type new password:
Adding password for user abong
[root@client ~]# cat /etc/httpd/conf/passwd.secret
test:$apr1$IHwwQSBP$S8uq/HHX4avbjYbK557U91
abong:$apr1$EUpr6yfG$tMcuMf/bWoYezLByROhlI0
[root@client ~]# systemctl restart httpd