要在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
广告
将在 10 秒后关闭
bannerAds