为了使在安装了 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

利用 Apache 为个人用户创建 web 站点及其报错处理相关推荐

  1. PHP动态创建Web站点

    在这一篇中我写了一些动态创建Web站点的一些内容,例如黏性表单.发送电子邮件.日期函数等.希望能对大家有所帮助,别忘了好评哦. PHP有4个用于使用外部函数的函数:include().include_ ...

  2. web服务器创建站点,Dreamweaver创建Web站点的六个步骤流程

    对于一个SEO优化人员来说,虽然不要求对于网站建站有多么精通,但是还是必须要懂得一些使用建站工具的基本操作.在Dreamweaver中,Web站点可视为网站中所有文件的集合.我们可以在本地计算机上创建 ...

  3. ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制

    ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制 在本教程中,我们将向您展示如何构建一个web服务器,以提供存储在ESP32文件系统中的HTML和CSS文件.我们将创建分离的H ...

  4. Eclipse创建的Maven项目报错Could not calculate build plan: Plugin

    Eclipse创建的Maven项目报错Could not calculate build plan: Plugin 2018年05月10日 21:59:25 TIMI-Nian 阅读数:5040 标签 ...

  5. 若依框架客户管理按照创建时间字段排序报错解决方法

    问题分析 使用若依自带生成代码客户管理查询,按照创建时间开启排序报错 但是用户管理下排序字段可以正常排序 后来找到原因若依封装了分页和排序,调用startPage()方法会开启分页排序,仔细发现 若依 ...

  6. Eclipse导入Web项目代码报错解决方案

    Eclipse导入Web项目代码报错解决方案 我相信很多人在开发中导入别人的项目时,Web项目导入Eclipse中项目出现报错(左上角有红叉).开发环境:J2EE5+JDK8,IDE使用Eclipse ...

  7. 【VirtualBox】VirtualBox使用现有的虚拟盘文件(如VHD)创建虚拟机时,报错:打开虚拟硬盘失败,“UUID already exist”的解决方法

    ###0.问题描述 使用现有的虚拟盘文件(如VHD)创建虚拟机时,报错:打开虚拟硬盘失败,"UUID already exists"的错误. ###1.参考博客 https://w ...

  8. SAP WM LT42创建TO单据,报错-No entry in Table 329S (NM1 L)-

    SAP WM LT42创建TO单据,报错-No entry in Table 329S (NM1 L)- 执行事务代码LT42为group number 4创建TO单据,报错如下: 报错信息:No e ...

  9. SAP PP CS01使用ECR去创建BOM主数据,报错:System status: ECR is not yet approved.

    SAP PP CS01使用ECR去创建BOM主数据,报错:System status: ECR is not yet approved. 1,使用CC31创建好了ECR #500000012717,用 ...

最新文章

  1. [Design] Flyweight Pattern
  2. 档案中级职称计算机需要考几个模块,2020年职称申报需要准备哪些档案资料?这些细节必须知道!...
  3. 正则东西类,简化正则匹配
  4. 基础三:控制执行流程
  5. 3d需要学linux_我的脑子—从核磁共振图像到3D打印
  6. win10安装net3.5不成功出现 0x8024402c_在移动硬盘中安装win10和macos双系统
  7. Spring事务管理详解_基本原理_事务管理方式
  8. dsPIC33EP 高速PWM模块初始化设置及应用
  9. 20165332第六周学习总结
  10. poj3280 Cheapest Palindrome(回文串区间dp)
  11. python编程从入门到实战抛出异常_文件和异常——python从编程入门到实践
  12. word绿豆沙颜色设置_Win7系统下将txt和word背景颜色设置为豆沙绿的方法
  13. numpy抽样函数 np.random.choice用法详解
  14. Vicdas实时历史库数据库 v2.3.0.201206
  15. 数组的降维与升维方法
  16. 400错误可能的原因
  17. VS2017MFC发布打包
  18. 叮咚买菜涨势,撑起生鲜电商门面
  19. Python的线程12 简易限流器
  20. 数字图像处理与Python实现

热门文章

  1. web前端好入门吗?
  2. 前端、后端、全栈都要学什么?薪资前景如何?
  3. lua 给userdata设置元表_提高Lua语言开发效率的简单方法
  4. C++中STL-queue使用方法
  5. Faster RCNN 学习笔记
  6. 【带着canvas去流浪(5)】绘制K线图
  7. sql order by 结合case when then
  8. 笔记:AIX系统/var/adm/wtmp大文件处理
  9. glm编译错误问题解决 formal parameter with __declspec(align(#39;16#39;)) won#39;t be aligned...
  10. Linux 在不重启的情况下识别新挂载的磁盘