私は非常に多くのリソースでこの主題について読んだことがありますが、私はまだこれを正しくするのに苦労しています。 背景:LAMPセットアップでAmazon EC2インスタンスを使用しています
_fixtures
、oldfiles
、psds
、webfiles
のいくつかのディレクトリがあるbitbucketにこのリポジトリがあります。 webfiles
ディレクトリをWebルートの/var/www/html/
の上に配置したいだけです。リポジトリをホームフォルダに複製し、シンボリックリンクを試みました
ln -s /home/myuser/myrepo/webfiles /var/www/html/webfiles
これにより、403 Forbiddenaccessエラーが発生します。 chmod
webfilesフォルダーをApacheグループが所有しようとしましたが(読み取り権限が必要です)、これは役に立ちません。
私も持っています
<VirtualHost *:80>
<Directory "/var/www/html">
allow from all
Options -Indexes FollowSymlinks
AllowOverride All
</Directory>
私のhttpd.conf
でシンボリックリンクを有効にしますが、それでも何もしません。私がこのリンクを達成する方法についての助けをいただければ幸いです。
[〜#〜]編集[〜#〜]
this SO thread + answer に基づいて、webfiles
ディレクトリをチェックアウトするという戦略を取ります。
編集2
しばらく経ちましたが、これを試すことができる別の解決策は、リポジトリを/var/www/repos/myrepo
のような場所に複製してから、webfiles
ディレクトリをシンボリックリンクすることだというメモをここにドロップすると思いました。そこから。 /var/www
の権限がすでに設定されている可能性が高いため、より簡単になります。
Amazon LinuxでSElinuxが有効になっている場合は、問題が発生している可能性があり、httpdがユーザーのホームディレクトリを読み取れるようにする必要があります。
setsebool httpd_enable_homedirs 1
私は似たようなことをしています-laravel ec2-userのホームディレクトリにインストールして、サイトを更新したいときにroot権限なしで更新できるようにします。
crucialビット、または私が行き詰まった部分は、ec2-userのホームディレクトリへのディレクトリ実行アクセスを許可する必要があるということでした。
これを行わないと、なぜそれが機能しなかったのか疑問に思うことがかなりありました。
パーミッションを完全に開く必要がないように、「Apache」ユーザーを「ec2-user」グループに追加しました。
ルートとして:
usermod -aG ec2-user Apache
これが重要ビットです.。
chmod g+x /home/ec2-user
ダイレクトロイで「読み取り」アクセスを行う必要はありません。実行するだけで、ディレクトリを開いて、その下にある目的のディレクトリにアクセスできます。ホームディレクトリの下のディレクトリには、グループアクセス用に「r」と「x」がすでに含まれている必要があります。キャッシュまたはログディレクトリへの書き込みアクセスを追加する必要がある場合があります。
その後、必要に応じて設定できます。私の場合は、次のようになります。
cd /var/www
ln -s /home/ec2-user/my_laravel_repo/public my_laravel
次に、シンボリックリンクやオーバーライドなどを許可するとともに、DocumentRootを/var/www/my_laravel
に調整します。
/ home/myuser/myrepo/webfilesのディレクトリステートメントも必要です。
<Directory "/home/myuser/myrepo/webfiles">
allow from all
Options -Indexes
AllowOverride None
</Directory>
以下の構文を試してください
<Directory "/var/www/html">
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Allow from all
</Directory>
<Directory "/home/myuser/myrepo/webfiles">
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Allow from all
</Directory>
Directory/var/www/html /の「AllowOverride」が「None」に設定されている場合は、デフォルトのhttpd.confまたはApache.confをチェックインしてください。
また、シンボリックリンクが機能しない場合は、以下のように1つのフォルダーを別のフォルダーにマウントできます。
mkdir /var/www/html/webfiles
mount -o bind /home/myuser/myrepo/webfiles /var/www/html/webfiles
Tigranが前にコメントしたように、Apacheが実際に宛先ディレクトリを読み取れることを確認する必要があります。
この場合、/ home/myuser/myrepo/webfilesは、Webファイルにアクセスできることに加えて、すべてのパス(/ home;/home/myuser;/home/myuser/myrepo)に対する実行権限が必要です。
家の外のディレクトリを使用した方がよいでしょうが、必要に応じて権限を開くことができます。