Kubuntu 13.04ノートブックにApacheサーバーを設定しようとしています。 apache2 パッケージをインストールしましたが、sudo a2enmod userdir; sudo service apache2 restart
アクセスした場合は、http://localhost/~user
次の内容が表示されます。
Forbidden
You don't have permission to access /~user on this server.
Apache/2.2.22 (Ubuntu) Server at localhost Port 80
結果tail /var/log/apache2/access.log
127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
結果tail /var/log/apache2/error.log
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
答え1
これらのpublic_html
ディレクトリには、Apache を実行しているユーザーがアクセスできるように、次の権限が必要です。
$ chmod -R 755 ~/public_html
それとも?
Apacheエラーログを見ると、次の行が表示されます。
[2013年8月2日金曜日21:06:59] [エラー] [クライアント127.0.0.1] (13) 権限が拒否されました: /~kaiyinへのアクセスが拒否されました。
これは、この例では、Apacheにユーザーディレクトリ(〜kaiyin)に移動する権限がないことを示しています。
この問題をどのように解決しますか?
public_html
Apacheが属するグループに読み取り+実行ビットが設定されていることを確認するか、Apacheが下のフォルダにアクセスできるように、ユーザーディレクトリに別の読み取り+実行ビットが設定されていることを確認する必要があります。
はい
/home
|-- [drwxr-x---] /home/sam
/home/sam
|-- [drwxr-xr-x] /home/sam/public_html
引用する
答え2
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
<Limit GET POST OPTIONS>
# Apache <= 2.2:
#Order allow,deny
#Allow from all
# Apache >= 2.4:
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
# Apache <= 2.2:
#Order deny,allow
#Deny from all
# Apache >= 2.4:
Require all denied
</LimitExcept>
</Directory>
</IfModule>
の設定が正しいことを確認してください/etc/apache2/mods-enabled/userdir.conf
。 public_htmlをchmoddingした後、権限が拒否された後に確認することにしましたuserdir.conf
。以前のApacheバージョンと最新バージョンの設定があることを確認しました。最新バージョンを実行していることがわかっているので、最新の設定を有効にしており、すべてがうまく機能します。
答え3
/etc/hosts
ファイルを使用すると、一時的なURLが不要になる可能性があります。テーマまたはプラグイン(ある場合)にURL全体への参照がある場合、Webサイトはコンテンツを正しい形式で表示しません。
答え4
フォルダに検索()権限がないか、ファイルに読み取り()権限がx
ない可能性があります。r
namei -ml /home/joe/public_html/index.html
f: /home/joe/public_html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- joe joe joe
drwxrwxr-x joe joe public_html
-rwxr-xr-x joe joe index.html
Apacheはルートから/
始めてすべてのフォルダを検索して読み取る必要があります(つまり、権限がindex.html
必要です)。上記のように、ユーザーは読み取り()または検索()を実行できません。r
x
/home/joe
other
r
x
解決策1:
www-data
ログインしたユーザーグループにapache2ユーザー(私の場合)を追加します。これにより、www-data
ユーザーのすべてのコンテンツにアクセスできます/home/joe
。
私の場合、apache2はというユーザーとして実行されていますwww-data
。したがって、www-data
ユーザーをグループに追加する必要があります。joe
adduser www-data joe
また、以下のすべてのファイルにはこのグループに対する権限がpublic_html
必要です。rx
chmod -R g+rw /home/joe/public_html
/home/joe
Apacheサーバーは下のすべてのファイルにアクセスできるため、安全性が低くなります。 apache2管理者が誤って代わりsome_private_folder
にアクセスするように設定を変更した場合は、public_html
他の人が簡単にアクセスできます。
解決策2:
ランダムother
検索を許可(x
)/home/joe
chmod o+x /home/joe
また、以下のすべてのファイルにアクセス権がpublic_html
必要です。others
rx
chmod -R o+rw /home/joe/public_html