博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用 Apache 为个人用户创建 web 站点及其报错处理
阅读量:5158 次
发布时间:2019-06-13

本文共 1617 字,大约阅读时间需要 5 分钟。

为了使在安装了 Apache 的服务器上拥有本地账号的用户能够架设自己的 web 站点, Apache 提供了两种思路:

-- 使用  mod_userdir 模块:  通过使用 http://IP/~UserName 的 URL 形式访问系统用户 UserName 的站点

-- 使用 mod_rewrite 模块: 通过 http://username.example.com 的 URL 形式访问用户 username 的站点

这里介绍第一种方式:

1. 启用 UserDIr 模块的功能:

vi /etc/httpd/conf/httpd.conf

//注释掉其中的  UserIdr Disable 这一行

2. 创建编辑新的配置文件 userdir.conf

vi /etc/httpd/conf.d/userdir.conf

//添加如下配置:

<IfModule mod_userdir>

# 出于安全考虑, 禁用 root 用户使用个人 web 站点

UserDir disable root

# 配置对每个用户的 web 站点目录

UserDIr public_html

</IfModule>

//设置每个用户 web 站点目录的访问权限

<Directory "/home/*/public_html">

AllowOverride FIleInfo AuthConfig Limit

Options MutiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Order allow,deny

Allow from all

</Directory>

3. 重启 htttpd:

service httpd reload

4.开始创建个人 web 站点(以 user1 为例):

su - user1

mkdir public_html

// 给当前目录设置下权限

chmod 701 .

echo "This is User1's home page" > ./public_html/index.html

exit

然后用浏览器或使用 elinks 命令进行测试:

访问 http://localhost/~user1  #注意这里有个 `~`

我的测试结果为 403 Forbidden, 所以需进一步 troubleshooting:

查看系统日志:

tail /var/log/messages

发现有 SELinux 的报错,  显然是 SELinux 这边阻拦了我们的访问:

根据提示, 我们运行 sealert -l af683818-15c8-4e3d-a706-fb62da50b8ec

运行到此处, 我们有两种解决办法:

1. 把 user1 的 public_html 上下文设为 httpd 可访问的 context, httpd 默认只能访问 httpd_sys_content_t 的上下文,即:

semanage fcontext -a -t httpd_sys_content_t "/home/user1/public_html"

restorecon -Rv "/home/user1/public_html"

这样做的局限性是: 只针对了 user1 的配置, 如果有 user2, user3... 那就得一个一个改, 很麻烦! 我推介第二种办法:

2. 让 SELinux 允许 Apache 对用户主目录的访问策略:

setsebool httpd_enable_homedirs 1

如此执行只是当前生效, 想要永久生效则执行:

setsebool -P httpd_enable_homedirs 1

再次访问, 成功!

转载于:https://www.cnblogs.com/tresser/p/9160800.html

你可能感兴趣的文章
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>