小さなWebサーバーをセットアップしています。 Apacheがエイリアスを見つけられないという問題があります。私のDocumentRootは/ var/www/htdocsですが、ウェブサイトで表示できるようにしたい/ home/user/Documents/a_directory/CurrentCapturesの下の別の(より大きな)パーティションにいくつかのファイルがあります。
私の/var/www/conf/httpd.confには、次の2つのエイリアスがあります。
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons/">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# Added by me
Alias /CurrentCaptures "/home/user/Documents/a_directory/CurrentCaptures"
<Directory "/home/user/Documents/a_directory/CurrentCaptures">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
そこに/icons/
エイリアスを残してテストしましたが、ブラウザでhttp://localhost/icons/
に移動すると、機能します。しかし、http://localhost/CurrentCaptures/
に行こうとすると、404 NotFoundエラーが発生します。
/ var/www/logs/error_logで、次のエラーが発生します。
[2014年8月4日月曜日11:02:30] [エラー] [クライアント192.168.10.100]ファイルが存在しません:/ home/user/Documents/a_directory/CurrentCaptures /
何か案は?
Apacheプロセスには/ home/userにアクセスする権限がない可能性があります。
Apacheは通常、非特権ユーザーとして実行されます(通常、「http」、「httpd」、または「www-data」という名前ですが、バリエーションがあります)。そのユーザーには、別のユーザーのホームディレクトリに移動する権限がありません。
セキュリティを気にしない場合これを回避する最も簡単な方法は、ディレクトリにワールド実行権限(モード0711など)を追加し、ファイルにワールド読み取り権限(0644)を追加することです。 Webサーバーで利用できるようにしたい。ディレクトリでは、「実行」は下に移動することを意味し、「読み取り」はディレクトリ内のファイルを一覧表示することを意味します。したがって、実行権限を付与することで、Webサーバーが既知のファイルを読み取ることを許可します(ファイルの権限に従います)が、その内容を列挙することはできません。ディレクトリ。
より「正しい」解決策ファイルをユーザー固有ではないディレクトリ階層に移動することです。これは、たとえば、ファイルを別の場所(特定のユーザーのホームディレクトリの外)に移動するか、バインドマウントを使用して行うことができます。ファイルのアクセス許可は引き続き有効であるため、ファイルはWebサーバーで読み取り可能である必要がありますが、Webサーバーにホームディレクトリへのアクセスを許可する必要はありません。