这是因为 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