使用 Apache服务部署静态网站

Posted on 2020-09-07  303 Views


网站服务程序

目前能够提供 Web 网络服务的程序有 IIS、Nginx 和 Apache 等

替换源为阿里云源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum list updates
安装 Apache 服务程序
yum install httpd 
启用 httpd服务程序并将其加入到开机启动项
systemctl start httpd 
systemctl enable httpd

配置服务文件参数

配置文件的名称存放位置
服务目录/etc/httpd
主配置文件/etc/httpd/conf/httpd.conf
网站数据目录/var/www/html
访问日志/var/log/httpd/access_log
错误日志/var/log/httpd/error_log
httpd相关配置文件

在 httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息、全局配置、区域配置

SELinux 安全子系统

SELinux 服务有三种配置模式,具体如下:

  • enforcing:强制启用安全策略模式,将拦截服务的不合法请求
  • permissive:遇到服务越权访问时,只发出警告而不强制拦截
  • disabled:对于越权的行为不警告也不拦截
修改SELinux配置
vim /etc/selinux/config

semanage命令

semanage 命令用于管理 SELinux 的策略,格式为“semanage [选项] [文件]”

使用 semanage 命令时,经常用到的几个参数及其功能如下:

  • -l 参数用于查询
  • -a 参数用于添加
  • -m参数用于修改
  • -d 参数用于删除
查看目录 SELinux 安全上下文值
ls -Zd /var/www/html
ls -Zd /home/wwwroot 

semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

restorecon -Rv /home/wwwroot/ 

个人用户主页功能

开启个人用户主页功能
vim /etc/httpd/conf.d/userdir.conf
在第 17 行的UserDir disabled 参数前面加上#
把第 24 行的 UserDir public_html 参数前面的#去掉
使用 getsebool 命令查询并过滤出所有与 HTTP 协议相关的安全策略
getsebool -a | grep http

setsebool -P httpd_enable_homedirs=on

给网页加密

使用 htpasswd 命令生成密码数据库
htpasswd -c /etc/httpd/passwd yeyufan
编辑个人用户主页功能的配置文件
第31~35 行的参数信息修改成下列内容
AllowOverride all 
#刚刚生成出来的密码验证文件保存路径 
authuserfile "/etc/httpd/passwd" 
#当用户尝试访问个人用户网站时的提示信息 
authname "My privately website" 
authtype basic 
#用户进行账户密码登录时需要验证的用户名称 
require user yeyufan

虚拟主机功能

Apache 的访问控制

  • 什么是 Web 网络服务?
    • 一种允许用户通过浏览器访问到互联网中各种资源的服务
  • 相较于 Nginx 服务程序,Apache 服务程序最大的优势是什么?
    • Apache服务程序具备跨平台特性、安全性,而且拥有快速、可靠、简单的 API 扩展
  • httpd 服务程序没有检查到首页文件,会提示报错信息吗?
    • 不会,httpd 服务在未找到网站首页文件时,会向访客显示一个默认页面
  • 简述 Apache 服务主配置文件中全局配置参数、区域配置参数和注释信息的作用
    • 全局配置参数是一种全局性的配置参数,可作用于对所有的子站点
    • 区域配置参数则是单独针对于每个独立的子站点进行设置的
    • 注释信息一般是对服务程序的功能或某一行参数进行介绍
  • 简述 SELinux 服务的作用
    • 为了让各个服务进程都受到约束,使其仅获取到本应获取的资源
  • 使用 getenforce 命令查看 SELinux 服务模式时,发现其配置模式为 permissive,这代表强制开启模式吗?
    • 不是,强制开启模式是 enforcing,而 permissive是只发出警告而不强制拦截的模式
  • 使用 semanage 命令后执行什么命令立即生效?
    • restorecon