這是因爲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
'apache'用戶(或等效)沒有讀取您的主目錄的權限。 Chmod/chown目標目錄以授予相關用戶權限。順便說一句,你可能會在'/ var/log/httpd/error_log'或httpd記錄錯誤的地方找到一個稍微有點顯示的消息。 – 2012-07-30 22:12:00
@FrankFarmer當我嘗試使用sudo su apache切換到apache用戶時,我收到以下消息:此帳戶當前不可用。你有沒有經歷過這個? – Apollo 2012-07-31 00:07:03
是的。默認情況下,你不能su apache,因爲apache用戶通常將shell設置爲'nologin'。您可以在'/ etc/passwd'中將用戶的shell更改爲sh,但這通常是一個糟糕的想法。一般來說,su-ing到apache應該不是必需的,特別是如果你只是想chown。''sudo chown apache:apache〜/ dirIWant /'就足夠了,儘管將目錄移出你的主目錄會更明智一些。 – 2012-07-31 00:59:07