修改网站默认目录
要想将网站数据放在 /home/wwwroot目录下,该如何操作呢?
1、编辑Apache服务程序的主配置文件:
# vim /etc/httpd/conf/httpd.conf
将DocumentRoot "/var/www" 参数改为 /home/wwwroot
2、重启Apache服务:
# systemctl restart httpd
访问http://127.0.0.1
如果出现的是默认页面,接下来访问http://127.0.0.1/index.html,出现这样的情况
为什么访问行为会被禁止?这就要先了解下SElinux(强制访问控制安全子系统)
SElinux属于MAC强制访问控制——即让系统中的各个服务进程都受到约束,即仅能访问所需要的文件。有三种模式
模式一:enforcing - 安全策略强制启用模式,将会拦截服务的不合法请求
模式二:permissive - 遇到服务越权访问只会发出警告而不强制拦截
模式三:disabled - 对于越权的行为不警告,也不拦截
有时关闭SElinux后确实能减少报错几率,但极其不推荐这么做,确保你的SElinux服务是默认启用的
# vim /etc/selinux/config
如果发现SELINUX = permissive或者disabled 赶紧改成enforcing
查看当前的SElinux服务状态:
# getenforce
刚刚浏览器里报错说,“禁止,你没有访问index.html文件的权限” ,那怎么开启SElinux的允许策略呢
SElinux安全策略包括 域 和安全上下文
SElinux域:对进程资源进行限制(查看方式:ps - Z)
SElinux安全上下文:对系统资源进行限制(查看方式:ls - Z)
查看新旧网站目录的安全上下文
解决办法就是将 /home/wwwroot 安全上下文修改成system_u:object_r:httpd_sys_content_t:s0就可以啦!
semanage命令用于查询与修改SElinux的安全上下文,格式为:semanage 【选项】【文件】
参数 | 作用 |
-l | 查询 |
-a | 增加 |
-m | 修改 |
-d | 删除 |
restorecon命令用于恢复SElinux文件安全上下文,格式为:restorecon【选项】【文件】
参数 | 作用 |
-i | 忽略不存在的文件 |
-e | 排除目录 |
-R | 递归处理(针对目录使用) |
-v | 显示详细过程 |
-F | 强制恢复 |
修改网站数据目录的安全上下文:
# semenage fcontext -a -t httpd_sys_content_t /home/wwwroot
# semenage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
这样操作后查看SElinux安全上下文依然没有改变,不要着急,再执行restorecon命令:
# restorecon -Rv /home/wwwroot
最后刷新浏览器就可以看到正常页面了。。。。
如果提示semenage command not fund 那就是没安装这个包
首先使用yum查找命令或文件对应的包名
# yum provides /usr/sbin/semanage
可以看到semanage命令在policycoreutils-python包里面
安装:
# yum -y install policycoreutils-python