web-dev-qa-db-ja.com

ディレクトリを/ var / www / htmlにシンボリックリンクできません

私は非常に多くのリソースでこの主題について読んだことがありますが、私はまだこれを正しくするのに苦労しています。 背景:LAMPセットアップでAmazon EC2インスタンスを使用しています

_fixturesoldfilespsdswebfilesのいくつかのディレクトリがある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の権限がすでに設定されている可能性が高いため、より簡単になります。

2
juuga

Amazon LinuxでSElinuxが有効になっている場合は、問題が発生している可能性があり、httpdがユーザーのホームディレクトリを読み取れるようにする必要があります。

 setsebool httpd_enable_homedirs 1
3
user9517

私は似たようなことをしています-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に調整します。

2
Nigel Atkinson

/ home/myuser/myrepo/webfilesのディレクトリステートメントも必要です。

<Directory "/home/myuser/myrepo/webfiles">
     allow from all
     Options -Indexes
     AllowOverride None
</Directory>
2
Halfgaar

以下の構文を試してください

<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
1
Vaibhav Panmand

Tigranが前にコメントしたように、Apacheが実際に宛先ディレクトリを読み取れることを確認する必要があります。

この場合、/ home/myuser/myrepo/webfilesは、Webファイルにアクセスできることに加えて、すべてのパス(/ home;/home/myuser;/home/myuser/myrepo)に対する実行権限が必要です。

家の外のディレクトリを使用した方がよいでしょうが、必要に応じて権限を開くことができます。

0
Manuel Sousa