UbuntuでApacheを設定するのに問題があります。私は このガイド に従っています。
# /usr/sbin/Apache2 -v
Server version: Apache/2.2.17 (Ubuntu)
Server built: Feb 22 2011 18:33:02
私の公開ディレクトリ/ var/wwwは、そこに配置されたPHPページを正常に処理および実行できます。ただし、ホームフォルダー内のディレクトリを指すシンボリックリンクを/ var/wwwに作成し、そこにページを提供したいと思います。
[root /var/www]# ll
total 36
drwxr-xr-x 3 root root 4096 2011-09-11 14:22 .
drwxr-xr-x 14 root root 4096 2011-06-04 22:49 ..
lrwxrwxrwx 1 root root 16 2011-09-11 13:21 about -> /root/site/about
ブラウザで/ aboutにアクセスしようとすると、
Forbidden
You don't have permission to access /about on this server.
私の知る限り、提供したいファイルに十分な特権を与えました。
[root ~/site/about]# ll
total 24
drwxr-xr-x 5 root root 4096 2011-09-11 13:20 .
drwxr--r-- 3 root root 4096 2011-09-11 13:19 ..
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 contact
-rwxr-xr-x 1 root root 1090 2011-09-11 13:19 index.php
drwxr-xr-x 2 root root 4096 2011-09-11 13:20 me
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 resume
私はFollowSymLinksオプションを認識しており、/ etc/Apache2/sites-enabled/000-defaultファイルに設定されていると思います。
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options FollowSymLinks Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
何が欠けているのでしょうか?
Apacheが/root
、/root/site
および/root/site/about
の実行権限を持っていることを確認してください。
実行:
chmod o+x /root /root/site /root/site/about
403エラーは、暗号化されたファイルシステムによって引き起こされる場合もあります。 暗号化されたホームフォルダへのシンボリックリンク。
シンボリックリンクが暗号化されたフォルダーを指している場合、Apacheおよびファイル/フォルダーのアクセス許可が正しく設定されていても、Apacheユーザー(たとえばwww-data)はコンテンツにアクセスできません。 www-dataユーザーのアクセスは、このような呼び出しでテストできます。
Sudo -u www-data ls -l /var/www/html/<your symlink>/
これには回避策/解決策があります。 www-dataユーザーをプライベートグループに追加する(暗号化されたデータをWebユーザーに公開する)か、暗号化されていないrsyncedフォルダーをセットアップする(おそらくかなり安全)。私自身は、おそらく開発中にrsyncソリューションに行きます。
https://askubuntu.com/questions/633625/public-folder-in-an-encrypted-home-directory
私の目的に便利なツールはlsyncdです。これにより、暗号化されたホームフォルダーで直接作業でき、Apache Webページでほとんど瞬時に変更を確認できます。同期は、ファイルシステムの変更によってトリガーされ、rsyncを呼び出します。私はかなり小さなWebページとスクリプトで作業しているだけなので、同期は非常に高速です。 0秒の遅延を設定することは可能ですが、rsyncを開始する前に1秒の短い遅延を使用することにしました。
Lsyncdのインストール(Ubuntuで):
Sudo apt-get install lsyncd
バックグラウンドサービスの開始:
lsyncd -delay 1 -rsync /home/<me>/<work folder>/ /var/www/html/<web folder>/
新しいサーバーでは長い間解決できなかった同様の問題がありました。 palacsintの答えに加えて、質問すべき良い質問は次のとおりです。Apache2.4を使用していますか? Apache 2.4には、上記の構成を使用すると機能しない許可を設定するための異なるメカニズムがあるため、 このブログ投稿で説明されている解決策 を使用しました。
基本的に、私がする必要があったのは、設定ファイルを以下から変換することでした:
Alias /demo /usr/demo/html
<Directory "/usr/demo/html">
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
に:
Alias /demo /usr/demo/html
<Directory "/usr/demo/html">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Orderおよびallow行がすべての付与が必要
この質問に関連して、私はなぜ私の仮想ホストが私にその403を与えているのかを見つけました。
私はこの質問と他の質問についてすべての可能性を運無しにテストしました。それはほとんど私を怒らせます。
シンボリックリンクを介したCapistranoの方法と同様のリリース展開を使用してサーバーをセットアップし、DocRootフォルダー(現在のリリースフォルダーへのシンボリックリンク)にアクセスしようとすると、403が提供されました。
私の仮想ホストは:
DocumentRoot /var/www/site.com/html
<Directory /var/www/site.com/html>
AllowOverride All
Options +FollowSymLinks
Require all granted
</Directory>
私のメインのhttpd.confファイルは(デフォルトのApache 2.4インストール)でした:
DocumentRoot "/var/www"
<Directory "/var/www">
Options -Indexes -FollowSymLinks -Includes
(...)
メインのオプション定義は、vhostsフィールドよりも優先されていたことがわかります(私にとっては直感に反します)。だから私はそれを次のように変更しました:
DocumentRoot "/var/www"
<Directory "/var/www">
Options -Indexes +FollowSymLinks -Includes
(...)
ユーレカ! (MAIN httpd.confファイルのFollowSymLinksの前のプラス記号に注意してください。これが他の失われた魂を助けることを願っています。
最初にselinuxを無効にします(vim/etc/selinux/config)
vim /etc/httpd/conf/httpd.confは、シンボリックリンクとディレクトリインデックスの次の行を編集します。
documentroot /var/www/html
<directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
</directory>
.htaccessファイルの場合、AllowOverride all
私の状況で発見したように、シンボリックリンクが失敗する別の方法があります。サーバーとしてSELinuxシステムがあり、シンボリックリンクがNFSマウントフォルダーを指している場合(他のファイルシステムが同様の症状を引き起こす可能性があります)、httpd
が間違ったコンテキストを参照し、ターゲットフォルダーのコンテンツの提供を拒否する可能性があります。
私の場合、/var/www/html
(ls -Z
で取得できる)のSELinuxコンテキストはunconfined_u:object_r:httpd_sys_content_t:s0
です。 /var/www/html
のシンボリックリンクは同じコンテキストを持ちますが、ターゲットのコンテキストはNFSマウントされたフォルダーであり、system_u:object_r:nfs_t:s0
です。
解決策は、fscontext=unconfined_u:object_r:httpd_sys_content_t:s0
をmount
オプションに追加することです(例:# mount -t nfs -o v3,fscontext=unconfined_u:object_r:httpd_sys_content_t:s0 <IP address>:/<server path> /<mount point>
)。 rootcontext
は無関係であり、defcontext
はNFSによって拒否されます。私はcontext
を単独では試しませんでした。
14.04へのアップグレード後に問題が発生した場合 https://askubuntu.com/questions/452042/why-is-my-Apache-not-working-after-upgrading-to-ubuntu-14-04 アップグレード前にrootが変更された=/var/wwwアップグレード後=/var/www/html