Цель:

Я использую контейнер NGINX, в котором я монтирую удаленную файловую систему SSHFS в /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" нужно записать в каталог.

####################### ОБНОВИТЬ

Итак, удалось сделать пользователя «www-data» обычным пользователем на сервере, и клиенту sshfs удалось смонтировать «/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 используют одну и ту же ОС:

/ # lsb_release -a

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

2 ответа2

0
  1. Попробуйте смонтировать sshfs по www-данным как здесь
  2. Попробуйте установить корневой каталог вне sshfs и подключиться к сайту.
  3. Проверьте, что у вас есть строка в конфигурации

    index index.html index.htm;

или подключитесь к сайту по полной ссылке, например 192.168.0.20/index.html

  1. tail -f вы nginx доступ и журналы ошибок
0

Для тех, кому это может помочь в будущем, у меня возникла эта проблема, и после небольшого поиска я обнаружил, что добавление -o allow_other к вызову монтирования сумело заставить его работать

Понятия не имею, что он делает под капотом или почему это необходимо (установка uid или gid ничего не делает), но мы идем.

Источник: https://stackoverflow.com/questions/29330382/how-to-enable-writing-to-sshfs-directory-in-php

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .