利用 Apache 为个人用户创建 web 站点及其报错处理
2016-12-10 16:15
471 查看
为了使在安装了 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
再次访问, 成功!
-- 使用 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
再次访问, 成功!
相关文章推荐
- Apache服务器架设(个人web站点)
- 利用ISA禁止某个用户访问外网的Web站点
- windows下利用apache配置WEB站点
- 利用adsutil.vbs脚本创建自定义web站点
- [转]利用adsutil.vbs脚本创建自定义web站点
- linux的web服务器配置与管理——创建用户个人主页
- windows下利用apache配置WEB站点
- 单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解
- windows下利用apache配置WEB站点(转)
- 个人收藏Lotuser进阶系列(转)——利用 DSAPI 为 Domino Web 用户定制用户名和口令认证
- 利用adsutil.vbs脚本创建自定义web站点
- windows下利用apache配置WEB站点 推荐
- eclipse创建maven web项目报错的处理方案
- 利用adsutil.vbs脚本创建自定义web站点
- 在ASP.NET中创建安全的web站点
- Asp.net中处理一个站点不同Web应用共享Session的问题
- 利用 ASP.NET 2.0 创建自定义 Web 控件
- 在利用XML文件保存用户输入多行信息时对回车的处理
- 用InstallShield Developer 8 创建WEB站点并且引用dll还原数据库
- 利用 ASP.NET 2.0 创建自定义 Web 控件