web-dev-qa-db-ja.com

nginxはマウントされた/ usr / share / nginx / htmlを読み取りません

目標:

リモートSSHFSファイルシステムを/ usr/share/nginx/htmlにマウントするNGINXコンテナーを使用しています。目的は、毎回使用することです。新しいステートレスnginxコンテナですが、永続的なコンテンツは同じです。

実行されたステップ:

-SSHFSサーバーが稼働していることを確認しました。
-nginxコンテナ(sshfsクライアント)で、リモートsshfsファイルシステムを/ usr/share/nginx/htmlにマウントしました

/ # sshfs  [email protected]:/data /usr/share/nginx/html
[email protected]'s password:  / #

-マウントは正常に見えます:

/ # mount | grep sshfs

[email protected]:/data on /usr/share/nginx/html type Fuse.sshfs
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)  

/ # df -h
Filesystem                 Size  Used Avail Use% Mounted on  
rootfs                     886G  681G  161G  81% /  
none                       886G  681G  161G  81% /  
tmpfs                      7.9G     0  7.9G   0% /dev  
tmpfs                      7.9G     0  7.9G   0% /sys/fs/cgroup  
/dev/sda1                  886G  681G  161G  81% /gns3  
shm                         64M     0   64M   0% /dev/shm  
[email protected]:/data  976M  2.6M  907M   1% /usr/share/nginx/html  

-そこにいくつかのファイルを置き、それらは誰でも読むことができます:

/ # ls -la /usr/share/nginx/html

total 36 drwxr-xr-x 1 root root  4096 Aug 20 11:48 . drwxr-xr-x 5 root
root  4096 Aug 20 11:36 ..
-rw-r--r-- 1 root root   537 Aug 20 11:48 50x.html
-rw-r--r-- 1 root root   612 Aug 20 11:48 index.html  
drwx------ 1 root root 16384 Aug 20 11:23 lost+found
-rw-r--r-- 1 root root   310 Aug 20 11:48 test.php

望ましい結果:

新しいnginxコンテナーが何であれ、リモートSSHFSをマウントすると、ユーザーが同じ情報を参照できます。

得られた結果:

Nginxは/ usr/share/nginx/htmlのコンテンツを読み取りません。インデックスファイルがないように機能します。
ブラウザに何も表示されません:

enter image description here


nginxログ:

/ # tail /var/log/nginx/error.log
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", Host: "192.168.122.100"  
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/404.html" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", Host: "192.168.122.100"  
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/404.html" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", Host: "192.168.122.100"  

「www-data」はディレクトリに書き込む必要があるようです。

####################### UPDATE

そのため、サーバー上の通常のユーザーであり、sshfsクライアントが「www-data」を使用して「/ var/www」をマウントすることに成功したため、なんとか「www-data」ユーザーを作成できました。

サーバーで、「www-data」ホームディレクトリ(/ var/www)の所有者をwww-data:www-dataに変更しました

/#chown -R www-data:www-data/var/www

/ # ls -la /var/www
total 36
drwxr-xr-x 1 www-data www-data  4096 Aug 20 11:48 .
drwxr-xr-x 5 root     root      4096 Aug 20 11:36 ..
-rw-r--r-- 1 www-data www-data   537 Aug 20 11:48 50x.html
-rw-r--r-- 1 www-data www-data   612 Aug 20 11:48 index.html
drwx------ 1 www-data www-data 16384 Aug 20 11:23 lost+found
-rw-r--r-- 1 www-data www-data   310 Aug 20 11:48 test.php

######################

問題を解決していないようです。


Nginxコンテナ(sshfsクライアント)とsshfsサーバーは同じOSを使用します:

/ # lsb_release -a

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty
1
AJN

将来役立つかもしれない人のために、私はこの問題を抱えていました、そしてもう少し検索した後、マウント呼び出しに-o allow_otherを追加することでそれを機能させることができたことがわかりました

内部で何をしているのか、なぜそれが必要なのか(uidまたはgidを設定しても何も起こりません)はわかりませんが、そこに行きます。

ソース: https://stackoverflow.com/questions/29330382/how-to-enable-writing-to-sshfs-directory-in-php

3
LordAro
  1. here のようなwww-dataでsshfsをマウントしてみてください
  2. Sshfsの外部にルートディレクトリを設定して、サイトに接続してみてください
  3. 構成に行があることを確認します

    index index.html index.htm;

または、フルリンクでサイトに接続します(例:192.168.0.20/index.html)。

  1. tail -fnginxアクセスとエラーログ
0
Quarind