要在Apache中为每个用户公开目录,可以执行以下操作
环境
Ubuntu20.4 + vagrant
Apache2.4.41
Ubuntu20.4 + vagrant是一个软件配置组合,用于搭建和管理虚拟服务器。同时,Apache2.4.41是其中一个版本的虚拟服务器软件。
首先
当使用Apache来发布网站时,基本的方法是将index.html文件放置在Apache的根目录/var/www下。但是,公开网站的方法不仅限于此。您还可以按照每个用户的要求,在其主目录下放置index.html文件,并通过多个用户进行共享。
换句话说,在Apache的根目录下,用户A可以在/var/www/hoge/index.html的同时发布~user_a/index.html,用户B也可以发布~user_b/index.html。以下是配置方法。
用户目录设定的默认选项
在公开用户目录时设置的配置文件是 /etc/apahce2/mods-available/userdir.conf。
默认情况下,以下设置将被应用。
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
</IfModule>
用户目录的配置设置 (userdir.conf)
在用户目录下的主目录中,新建一个要公开的目录。在下面的示例中,我们创建了一个名为public_html的目录,位于vagrant用户的目录下。
#cd ~
#cd vagrant
#mkdir public_html
查看userdir.conf示例的时候,public_html被用作目录名称,但是目录名称不一定非得是public_html。您可以自行指定喜欢的名称。例如,如果您想使用hoge_html,配置文件也可以如下所示。
UserDir hoge_html : 公開するフォルダを指定します。
UserDir disabled root : ホーム配下を非公開にする設定?。(未確認)
<IfModule mod_userdir.c>
UserDir hoge_html
UserDir disabled root
<Directory /home/*/hoge_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
</IfModule>
如果要将公开的用户限制为vagrant和tan,您可以将其分开设置为每个用户,而不是使用通配符。从安全角度来看,这种设置更加牢固,但随着公开的用户增多,您将需要进行维护。
<Directory /home/vagrant/hoge_html>
# 省略
</Directory>
<Directory /home/tan/hoge_html>
# 省略
</Directory>
</IfModule>
当我公开/var/www目录时,我在apache2.conf文件的Directory指令中进行了启用该路径的设置,但当我要公开用户目录时,我需要在userdir.conf文件中进行设置。是否也需要在apache2.conf文件中进行相同的设置呢?答案是否定的。也就是说,只要在userdir.conf文件中进行了设置,就不需要执行下面的设置了。
<Directory /home/*/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
激活userdir.conf。
userdir.conf默认情况下不在/etc/apache2/mods-enabled中创建符号链接。因此,需要使用以下命令来启用所设置的内容。
#a2enmod userdir
重启Apache
修改配置文件后,重新启动Apache以使其生效。
#systemctl restart apache2
确认动作
打开浏览器并在URL中指定下面的地址,页面将会显示。此时,不需要加上路径”public_html”,示例路径为~vagrant/public_html/index.html。
http://192.168.33.1/~vagrant/index.html
如果想要访问 Tan 用户的目录,可以使用以下方式的 URL。
http://192.168.33.1/~tan/index.html