2012-07-30 44 views
7

这就是我想要实现的:创建从var/www/html到家中(~)文件夹中的目录的符号链接。我试图符号链接到家里的目录(~)是一个git仓库,如果这有什么不同。我在这个目录中有一个index.html文件。尝试使用var/www/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更改权限,但似乎没有帮助。你还有其他建议吗?

+1

'apache'用户(或等效)没有读取您的主目录的权限。 Chmod/chown目标目录以授予相关用户权限。顺便说一句,你可能会在'/ var/log/httpd/error_log'或httpd记录错误的地方找到一个稍微有点显示的消息。 – 2012-07-30 22:12:00

+0

@FrankFarmer当我尝试使用sudo su apache切换到apache用户时,我收到以下消息:此帐户当前不可用。你有没有经历过这个? – Apollo 2012-07-31 00:07:03

+1

是的。默认情况下,你不能su apache,因为apache用户通常将shell设置为'nologin'。您可以在'/ etc/passwd'中将用户的shell更改为sh,但这通常是一个糟糕的想法。一般来说,su-ing到apache应该不是必需的,特别是如果你只是想chown。''sudo chown apache:apache〜/ dirIWant /'就足够了,尽管将目录移出你的主目录会更明智一些。 – 2012-07-31 00:59:07

回答

7

这是因为apache运行为apache用户和/var/www/html由Amazon Linux AMI中的根拥有。您可以按照Frank的建议更改所有权/权限,也可以使用userdirs

在我看来,你想要从主目录(~)方便地访问网络服务器的文件夹。我想在我的EC2上这样做,并决定使用每个用户的网页目录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 

最后重新加载web服务器这样的:

sudo service httpd reload 
+0

感谢您的回答。正如我问FrankFarmer,当我尝试切换用户到Apache用户,以便我可以执行sudo chown/myDir时,我得到以下响应:此帐户当前不可用。任何想法为什么? – Apollo 2012-07-31 00:06:57

+1

嗯,你可以做一个'sudo chown -R ec2-user/var/www/html',但是从你的帖子中不太清楚你想要完成什么,所以我不确定它会做到想要 – Dreen 2012-07-31 00:49:35

+0

这就是我想要实现的:创建从var/www/html到home(〜)文件夹中的目录的符号链接。我在家中的目录(〜)中有一个index.html文件。目前,当我去我的网站www.blah.com时,它显示了这个403错误。我试图改变使用sudo chown -h apache:apache的权限,但它似乎没有帮助。你还有其他建议吗? – Apollo 2012-07-31 02:24:13