골:
나는 원격 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의 내용을 읽지 않습니다.
인덱스 파일이 없으므로 작동합니다.
브라우저에 아무것도 나타나지 않습니다.
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
답변
- 다음과 같이 www-data로 sshfs를 마운트하십시오. 이리
- sshfs 외부에서 루트 디렉토리를 설정하고 사이트에 연결하십시오.
-
구성에 행이 있는지 확인하십시오.
색인 index.html index.htm;
또는 전체 링크로 사이트에 연결하십시오 (예 : 192.168.0.20/index.html).
- 꼬리 -f nginx 액세스 및 오류 로그
답변
미래에 도움이 될 수있는 사람들을 위해, 나는이 문제를 가지고 있었고 조금 더 검색 한 후에 나는 -o allow_other
그것이 작동하도록 마운트 된 마운트 콜에
후드 아래에서 무엇이 수행되고 있는지 또는 왜 필요한지 (uid 또는 gid 설정은 아무 것도하지 않음) 생각할 필요가 없습니다.하지만 거기에 대해 알아 보겠습니다.
출처: https://stackoverflow.com/questions/29330382/how-to-enable-writing-to-sshfs-directory-in-php