8

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

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

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

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

4

2 回答 2

7

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

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

此功能允许您将部分 HTTP 服务器空间保留在用户拥有的目录中。每个用户都有自己的目录,默认位于/home/username/public_html. 该目录中的页面、脚本和其他文件可以通过附加/~username到您的域来访问互联网。此外,您可以将 httpd.conf 中该文件夹的名称从更改为其他名称public_html,例如gitRepo. 在这种情况下,如果你有一个index.html文件/home/ec2-user/gitRepo/index.html,它可以通过 ec2-user 被公众访问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
于 2012-07-30T22:15:40.513 回答
0
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
于 2021-07-31T10:24:52.713 回答