简介
假设你正在管理一台大学服务器。你希望每名学生都拥有自己的个人网站,并可以通过类似 university.com/~student1 的 URL 访问。
Apache 提供了名为用户目录的功能,不必将所有文件放入同一个中央目录。借助此功能,每个用户都可以直接从自己的主目录提供网站内容,通常使用其中名为 public_html 的子目录。
在大型现代生产平台中,这项功能已经不太常见,但它仍然有助于学习 URL 映射、权限以及每个用户的 Web 内容如何协同工作。
在本实验中,你将完成以下任务:
- 启用模块:在 Apache 中启用
userdir功能。 - 创建目录:在主目录中创建
public_html文件夹。 - 配置权限:确保 Apache 拥有访问文件所需的权限。
- 测试:通过浏览器请求访问个人网页。
启用 Userdir 模块
Apache 是模块化服务器,你可以根据需要启用或停用特定功能。userdir 模块负责将 ~username 形式的 URL 映射到对应用户的主目录。
这种模块化设计是 Apache 的主要特征之一。许多功能默认并不会始终启用,而是由管理员根据服务器承担的具体角色启用所需模块。
检查 Apache 的状态,确认服务正在运行:
sudo service apache2 status
使用 a2enmod(Apache 2 Enable Module)命令启用 userdir 模块:
a2enmod 辅助工具属于 Ubuntu 的 Apache 打包规范。它会创建正确的符号链接,从而简化模块管理,不需要手动编辑所有配置。
sudo a2enmod userdir
你应该会看到一条表示正在启用该模块的消息。
列出已启用的模块,确认模块状态:
ls /etc/apache2/mods-enabled/ | grep userdir
你应该会看到 userdir.conf 和 userdir.load,这表示模块已处于启用状态。
设置 Web 目录
userdir 模块会在用户主目录中查找名为 public_html 的文件夹。在本实验中,你的用户名是 labex。
进入主目录:
cd ~
创建 public_html 目录:
mkdir ~/public_html
在该目录中创建一个简单的 index.html 文件,用于测试网站:
echo "<h1>My Personal Page</h1><p>Welcome to the labex user directory.</p>" > ~/public_html/index.html
接下来需要处理权限问题。默认情况下,用户主目录通常是私有的,因此 Apache 用户(www-data)无法进入这些目录。Apache 需要对你的主目录拥有执行(x)权限,才能访问其中的 public_html 文件夹。
这个例子很好地说明了 Web 服务如何依赖 Linux 文件系统的常规权限。Apache 只能提供它有权遍历和读取的文件。
修改主目录的权限:
chmod 711 /home/labex
711(rwx--x--x)赋予你完整控制权限,同时允许其他用户(例如 Apache)遍历该目录(执行),但不能列出其中的内容(读取)。
目录的读取权限和执行权限之间的区别比较细微,但很重要。目录的执行权限表示「你可以进入或遍历该目录」,而读取权限表示「你可以列出该目录的内容」。
验证权限:
ls -ld /home/labex
你应该会看到权限字符串以 x 结尾,这表示允许遍历该目录。
重启服务
启用模块或修改配置后,必须重启 Apache,修改才能生效。
重启 Apache 服务:
sudo service apache2 restart
确认 Apache 已成功重启:
sudo service apache2 status
状态应显示为 active (running)。
验证配置
现在所有设置都已完成,测试个人网页。
URL 格式为 http://server_address/~username/。由于当前操作是在服务器本机上进行,因此使用 localhost。
使用 curl 获取网页:
curl http://localhost/~labex/
你应该会看到刚才创建的 HTML 内容:
<h1>My Personal Page</h1>
<p>Welcome to the labex user directory.</p>
如果看到 403 Forbidden 错误,请再次检查主目录(/home/labex)和 public_html 目录的权限。
总结
在本实验中,你成功配置了个人 Web 目录,并学习了以下内容:
- 启用 Apache 的
userdir模块。 - 创建并填充
public_html目录。 - 配置目录权限,在保持安全性的同时允许 Apache 访问。
- 通过访问用户专属 URL 验证设置。
教育环境和共享主机环境广泛使用此功能,为用户提供独立的 Web 空间。



