태그 보관물: docker

docker

nginx는 마운트 된 / usr / share / nginx / html을 읽지 않습니다. 파일 시스템을 / usr /

골:

나는 원격 SSHFS 파일 시스템을 마운트하는 NGINX 컨테이너를 사용하고있다. / usr / share / nginx / html , 목적은 매번 새로운 무국적 nginx 컨테이너를 사용하지만 동일한 지속적인 컨텐트를 사용하는 것입니다.

수행 된 단계 :

– SSHFS 서버가 작동하고 있는지 확인하십시오.
nginx 컨테이너 (sshfs 클라이언트)에서 원격 sshfs 파일 시스템을 / usr / share / nginx / html에 마운트했습니다.

/ # sshfs  root@X.X.106.181:/data /usr/share/nginx/html
root@X.X.106.181's password:  / #

– 마운트는 괜찮아 보인다.

/ # mount | grep sshfs

root@35.185.106.181:/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
root@X.X.106.181:/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

따라서 “www-data”사용자를 서버의 일반 사용자처럼 관리 할 수 ​​있었으며 sshfs 클라이언트는 “www-data”를 사용하여 “/ var / www”를 마운트하는 데 성공했습니다.

서버에서 “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. 다음과 같이 www-data로 sshfs를 마운트하십시오. 이리
  2. sshfs 외부에서 루트 디렉토리를 설정하고 사이트에 연결하십시오.
  3. 구성에 행이 있는지 확인하십시오.

    색인 index.html index.htm;

또는 전체 링크로 사이트에 연결하십시오 (예 : 192.168.0.20/index.html).

  1. 꼬리 -f nginx 액세스 및 오류 로그

답변

미래에 도움이 될 수있는 사람들을 위해, 나는이 문제를 가지고 있었고 조금 더 검색 한 후에 나는 -o allow_other 그것이 작동하도록 마운트 된 마운트 콜에

후드 아래에서 무엇이 수행되고 있는지 또는 왜 필요한지 (uid 또는 gid 설정은 아무 것도하지 않음) 생각할 필요가 없습니다.하지만 거기에 대해 알아 보겠습니다.

출처: https://stackoverflow.com/questions/29330382/how-to-enable-writing-to-sshfs-directory-in-php


답변