Использование внешнего диска как папки в nginx

Вопрос или проблема

Я пытаюсь подключить внешний диск к веб-папке, назовем ее flash:
введите описание изображения здесь

После монтирования внешнего диска, который находится в /dev/sdb1, права изменяются следующим образом:

sudo mount -o defaults /dev/sdb1 /var/www/html/TV/flash

введите описание изображения здесь

Когда я пытаюсь открыть файл из смонтированного местоположения, я получаю 404 Not Found, хотя файл существует.

введите описание изображения здесь

Когда я пытаюсь перечислить файлы внутри папки, появляется Доступ запрещен

введите описание изображения здесь

Также я пробовал изменить владельца папки, но это не сработало:

sudo chown -R “$USER”:www-data flash/

chown: изменение владельца ‘flash/System Volume Information’: Файловая система только для чтения

chown: изменение владельца ‘flash/’: Файловая система только для чтения

Существует разница между folder и folder\

folder\ означает содержимое папки, а не саму папку. folder указывает только на папку, а не на файлы и подкаталоги, находящиеся внутри нее. Но так как вы используете команду chown рекурсивно, владельцем всех подкаталогов и файлов внутри folder также будет изменен.

Поэтому напечатание следующей команды решит ситуацию

sudo chown -R "$USER":www-data /var/www/html/TV/flash

Также измените права на файлы. Вы делаете $USER владельцем и www-data группой владельца. А ваши текущие права показывают 500 для директории. Поэтому только владелец, а не группа владельца может искать в директории. И ваш веб-сервер работает под группой владельца www-data

Хорошей практикой является установка всех прав для директорий на 755 и для файлов на 644.

find /var/www/html/TV/flash -type d -exec chmod 755 {} \;
find /var/www/html/TV/flash -type f -exec chmod 644 {} \;

Оставьте комментарий в случае любой ошибки.

Ответ или решение

Для того чтобы использовать внешний диск в качестве папки в Nginx, необходимо выполнить несколько шагов, включая настройку монтирования, изменение прав доступа и назначение владельцев. Рассмотрим подробно, как это сделать:

  1. Монтирование внешнего диска: Вы уже выполнили команду для монтирования диска, однако после этого могут измениться права доступа. Команда, которая у вас уже есть:

    sudo mount -o defaults /dev/sdb1 /var/www/html/TV/flash

    Убедитесь, что диск правильно смонтирован.

  2. Проверка прав доступа: После монтирования, проверьте права доступа к папке flash. Если вы получаете ошибки 404 Not Found и Permission Denied, это значит, что у веб-сервера (Nginx), который обычно выполняется от пользователя www-data, нет прав для доступа к данной папке.

  3. Изменение владельца директории: Попробуйте изменить владельца директории и всех её содержимого, чтобы их владельцем стал ваш пользователь, а группой — www-data. Используйте следующую команду:

    sudo chown -R $USER:www-data /var/www/html/TV/flash

    Если вы видите ошибку о том, что файловая система только для чтения (Read-only file system), это может указывать на проблему с монтированием. Убедитесь, что диск не смонтирован в режиме только для чтения, или попробуйте смонтировать его с дополнительными опциями, позволяющими менять права доступа:

    sudo mount -o rw,defaults /dev/sdb1 /var/www/html/TV/flash
  4. Изменение прав доступа: После изменения владельца вам нужно будет установить правильные права доступа. Это поможет обеспечить возможность веб-серверу доступа к файлам и каталогам. Общая практика заключается в том, чтобы установить права для директорий на 755, а для файлов — на 644. Вы можете сделать это с помощью следующих команд:

    find /var/www/html/TV/flash -type d -exec chmod 755 {} \;
    find /var/www/html/TV/flash -type f -exec chmod 644 {} \;
  5. Перезапуск Nginx: После внесения всех изменений не забудьте перезапустить Nginx, чтобы изменения вступили в силу. Введите:

    sudo systemctl restart nginx
  6. Проверка конфигурации Nginx: Убедитесь, что в конфигурационном файле Nginx (обычно находится в etc/nginx/sites-available/default) правильно указаны пути к файлам и настройки доступа. Пример секции для вашего виртуального хоста может выглядеть так:

    server {
       listen 80;
       server_name your_domain.com;
    
       location /TV/flash/ {
           alias /var/www/html/TV/flash/;
           autoindex on; # включить просмотр файлов
           allow all;  # разрешить доступ всем
       }
    }
  7. Тестирование доступа: После перезапуска Nginx попробуйте открыть веб-страницу, которая ссылается на файлы из вашей папки flash. Убедитесь, что доступ успешен и файлы загружаются корректно.

Если после выполненных действий вы всё ещё испытываете проблемы, проверьте журналы ошибок Nginx (/var/log/nginx/error.log) для получения более детальной информации о проблемах, с которыми вы столкнулись.

Оцените материал
Добавить комментарий

Капча загружается...