Centos7部署Apache服务
环境声明
服务器
- 系统: Centos7.4
- IP地址: 192.168.132.111
- 网卡模式: 桥接模式
- 软件版本: httpd-2.4.6-67 | openssl-1.0.2 | Bind9.9.4
环境部署
服务安装
1 | yum install httpd -y |
配置文件
文件路径 | 文件说明 |
---|---|
/etc/httpd/conf/httpd.conf | 主配置文件 |
/etc/httpd/conf.d/ | 子配置文件目录 |
/var/www/html/ | 默认Web根目录 |
/var/log/httpd/ | 日志存放目录 |
常用配置项
基本配置
1 | # 指定监听端口 |
访问控制
1 | # 允许所以人访问 |
Options选项
1 | # 允许目录浏览 (该目录下无主页文件(index.html或其他)时则返回该目录的文件列表) |
AllowOverride选项
1 | # 忽略所有 .htaccess文件 |
部署示例
项目需求
- 网站根目录: /www/wwwroot/
- 主页文件名: hello.html
- 主页内容: Hello World
- 服务运行用户: webuser
- 允许所有人访问
先创建网站的目录,再将主页内容写入到主页文件中
1 | mkdir -p /www/wwwroot/ |
再添加一个用户,并将服务运行用户设置为新添加的用户
1 | useradd webuser -s /sbin/nologin |
修改主配置文件,将User
与Group
值改为新添加的用户,保存退出后再将服务重启查看运行用户
1 | vim /etc/httpd/conf/httpd.conf |
再修改主配置文件,指定网站的根目录、主页文件等信息。
1 | DocumentRoot "/www/wwwroot/" |
修改完成后保存重启服务、关闭selinux、放行http后,进行访问测试
1 | systemctl restart httpd |
虚拟目录
虚拟目录配置
项目需求
- 网站根目录: /www/web1/
- 虚拟目录: /web1/
- 主页文件名: index.html
- 主页内容: Hello Web1
- 允许所有人访问
先创建网站的目录,再将主页内容写入到主页文件中
1 | mkdir /www/web1/ |
再配置主配置文件,因为默认的主页文件名为index.html
,所以不用做配置,其他的配置同上即可。配置完成后重启服务再访问即可
1 | # Alias 虚拟目录 网站根目录 |
需要认证的虚拟目录
项目需求
- 网站根目录: /www/web2/
- 虚拟目录: /web2/
- 主页文件名: index.html
- 主页内容: Hello Web2
- 只允许用户w1、w2登录后访问(密码与用户名相同)
注: 该方法不止用于虚拟目录
先创建网站的目录,再将主页内容写入到主页文件中
1 | mkdir /www/web2/ |
在主配置文件中添加下方配置信息,AuthUserFile
字段中的信息后续会用到
1 | Alias /web2/ /www/web2/ |
添加认证用户,命令格式为htpasswd -c 存储地址 用户名
,执行完成后会在指定目录下创建一个文件用于存储用户账号密码
1 | htpasswd -c /etc/httpd/.passwd w1 # 第一次创建要使用 -c 参数创建 |
创建完成后重启httpd服务器,再使用浏览器访问该页面
1 | # 使用curl访问 |
虚拟主机
基于端口
项目需求
- 网站根目录: /www/8080/
- 网站端口: 8080
- 主页文件名: index.html
- 主页内容: Hello 8080
- 网站根目录: /www/8081/
- 网站端口: 8081
- 主页文件名: index.html
- 主页内容: Hello 8081
可以将下方配置写在主配置文件中,但为了方便维护与规范,需创建子配置文件/etc/httpd/conf.d/vhost.conf
,并将下方内容复制到子配置文件中
1 | Listen 8080 # 监听的端口 |
配置完成后重启过httpd服务、放行8080
|8081
端口后访问测试
基于IP
项目需求
- 网站根目录: /www/111/
- 网站IP: 192.168.132.111
- 主页文件名: index.html
- 主页内容: Hello 111
- 网站根目录: /www/112/
- 网站IP: 192.168.132.112
- 主页文件名: index.html
- 主页内容: Hello 112
为服务器添加两个IP(单网卡双IP、双网卡双IP),实验中使用的是单网卡双IP,操作步骤如下:
编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33
,将IP地址设置为静态后下方配置,再重启网络服务
1 | IPADDR=192.168.132.111 |
基于IP的配置方法与基于端口一样,将Virtualhost 0.0.0.0
中的IP地址改成指定的IP,重启服务后访问测试
1 | <Virtualhost 192.168.132.111> |
基于域名
项目需求
- 网站根目录: /www/www1/
- 网站IP: 192.168.132.111
- 网站域名: www1.a.com
- 主页文件名: index.html
- 主页内容: Hello www1
- 网站根目录: /www/www2/
- 网站IP: 192.168.132.111
- 网站域名: www2.a.com
- 主页文件名: index.html
- 主页内容: Hello www2
需要先配置DNS服务,将www1与www2解析到192.168.132.111
再配置子配置文件/etc/httpd/conf.d/vhost.conf
,配置完成后重启服务测试
1 | <Virtualhost 192.168.132.111> |
个人主页配置
项目需求
- 网站IP: 192.168.132.111
- 主页用户: w1、w2
- 主页内容: Hello w1 | Hello w2
创建用户w1、w2,在用户的家目录下创建public_html
作为web根目录,将用户家目录权限设置为705
1 | useradd w1 |
修改子配置文件/etc/httpd/conf.d/userdir.conf
,注释掉UserDir disabled
,将UserDir public_html
取消注释
1 | # UserDir disabled |
配置完成后重启服务访问能测试,格式http://IP/~用户名/
Https配置
项目需求
- 网站IP: 192.168.132.111
- 网站根目录: /www/ssl/
- 主页内容: Hello SSL
- 备注: 要求使用https访问该网站
安装mod_ssl
模块,使用opensll申请ssl证书,并将证书与密钥移动到/etc/httpd/ssl
目录下(方便管理)
1 | yum install mod_ssl -y |
修改/etc/httpd/conf.d/vhost.conf
子配置文件,将证书与密钥路径改成刚才创建的路径,修改完成后重启测试
1 | Listen 443 |
Http重定向
项目需求
- 网站IP: 192.168.132.111
- 主页内容: Hello SSL
- 备注: 使用http访问网站时自动跳转为https
修改该虚拟主机的配置项,加入下方参数进行重定向,修改完成后保存重启服务,访问http://192.168.132.111
时会被自动重定向到https://192.168.132.111
1 | RewriteEngine on |