【问题标题】:Attempting to use symbolic link for var/www/html尝试对 var/www/html 使用符号链接
【发布时间】:2012-07-28 15:12:36
【问题描述】:

这就是我想要完成的:创建从var/www/html 到主 (~) 文件夹中的目录的符号链接。我试图符号链接到的目录(~)是一个 git 存储库,如果这有什么不同的话。我在这个目录中有一个 index.html 文件。

我使用此命令在 Amazon EC2 实例上创建了指向 var/www/html 的符号链接:ln -s ~/dirIWant/ html,但是当我尝试访问我的网页时,这会导致以下错误:403 Forbidden "You don't have permission to access / on this server." I' m 使用 apache。

有没有其他人尝试做类似的事情并让它发挥作用?

目前,当我访问我的网站 www.blah.com 时,它会显示此 403 错误。我尝试使用sudo chown -h apache:apache 更改权限,但似乎没有帮助。您还有其他想法吗?

【问题讨论】:

  • apache 用户(或同等用户)没有读取您的主目录的权限。 chmod/chown 目标目录以向相关用户授予权限。顺便说一句,您可能会在 /var/log/httpd/error_log 或您的 httpd 记录其错误的任何地方找到一条更有说服力的消息。
  • @FrankFarmer 当我尝试使用 sudo su apache 切换到 apache 用户时,我收到此消息:此帐户当前不可用。你以前有过这样的经历吗?
  • 是的。默认情况下,您不能 su apache,因为 apache 用户通常将其 shell 设置为 nologin。您可以在/etc/passwd 中将用户的shell 更改为sh,但这通常可能是个坏主意。通常,不需要 su-ing 到 apache,特别是如果您只想 chown。 sudo chown apache:apache ~/dirIWant/ 在您的情况下就足够了,尽管将目录移出您的主目录会更明智。
  • @FrankFarmer 我将您的命令修改为 sudo chown -h apache:apache ~mydir 并且它可以工作。但是,当我访问我的网站时,它仍然显示 403 错误。你知道这是为什么吗?再次感谢!
  • @FrankFarmer 就像我在下面告诉 Dreen 一样,我试图在 home (~) 中符号链接到的目录是一个 git 存储库,如果这对您对这个问题的回答有任何影响...

标签: apache amazon-ec2


【解决方案1】:

这是因为 apache 以 apache 用户身份运行,并且 /var/www/html 在 Amazon Linux AMI 中归 root 所有。您可以按照 Frank 的建议更改所有权/权限,或使用 userdirs

在我看来,您希望可以从您的主目录 (~) 方便地访问网络服务器的文件夹。我想在我的 EC2 上使用类似的东西,并决定使用 Per-user Web 目录 (mod_userdir)。

此功能允许您将部分 HTTP 服务器空间保留在用户拥有的目录中。每个用户都有自己的目录,默认位于/home/username/public_html。通过将/~username 附加到您的域,可以访问该目录中的页面、脚本和其他文件。此外,您可以将 httpd.conf 中该文件夹的名称从 public_html 更改为其他名称,例如 gitRepo。在这种情况下,如果您在/home/ec2-user/gitRepo/index.html 中有一个index.html 文件,则公众可以通过http://ec2-hostname.aws.amazon.com/~ec2-user/index.html 访问该文件,并归ec2-user 所有,便于从用户级别编辑文件。

要在 EC2 上进行设置(假设您要使用的文件夹名称为“gitRepo”),请使用 nano /etc/httpd/conf/httpd.conf 打开 Apache 配置文件并向下滚动直到看到 <IfModule mod_userdir.c>。然后将此部分更改为如下所示:

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir enabled all

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    UserDir gitRepo

</IfModule>

之后您应该一切顺利,但请确保权限设置正确:

chmod 711 /home/ec2-user
chmod 755 /home/ec2-user/gitRepo
chown -R ec2-user /home/ec2-user/gitRepo

最后像这样重新加载网络服务器:

sudo service httpd reload

【讨论】:

  • 感谢您的回答。当我问 FrankFarmer 时,当我尝试将用户切换到 apache 用户以便我可以执行 sudo chown /myDir 时,我得到以下响应:此帐户当前不可用。任何想法为什么?
  • 好吧,你可以做一个sudo chown -R ec2-user /var/www/html,但从你的帖子来看,你并不清楚你想要完成什么,所以我不确定它会完全符合你的要求
  • 这就是我想要完成的:创建从 var/www/html 到主 (~) 文件夹中的目录的符号链接。我在 home (~) 的目录中有一个 index.html 文件。目前,当我访问我的网站 www.blah.com 时,它会显示此 403 错误。我尝试使用 sudo chown -h apache:apache 更改权限,但似乎没有帮助。您还有其他想法吗?
  • 我试图在 home (~) 中符号链接的目录是一个 git 存储库,如果这有什么不同的话......
  • 你试过设置 mod_userdir 吗?您可以从 public_html 更改为其他内容,因此如果您的 git repo 在 ~/gitRepo/ 中,您可以在配置中使用 UserDir gitRepo
【解决方案2】:
here how to link file into other directory example with apache2 config file 

**user of symbolic**
## if file available then first remove it 
$ sudo rm -rf /etc/apache2/sites-enabled/000-default.conf 
## sudo lm -s  /path of source /path of destination 
$ sudo ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
$ sudo systemctl restart apache2
$ sudo systemctl status apache2

[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/pRSoq.png

【讨论】:

    猜你喜欢
    • 2014-03-16
    • 2015-03-06
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多