Разрешение Errno 13 отказано в использовании Gunicorn
Я запускаю django на цифровом океане с gunicorn и nginx и. Gunicorn для обслуживания django и nginx для статических файлов.
после загрузки файла через веб-сайт я не могу сохранить в папку в / home directory. Я получаю [Errno 13] Permission denied.
пожалуйста, как сделать веб-сервер, чтобы иметь доступ для чтения записи в любую произвольную папку в любом месте под /home?
2 ответов
все зависит от пользователя, от которого работает ваше приложение.
если вы проверяете ps aux | grep gunicorn
какой пользователь сервер Gunicorn запускает ваше приложение, как тогда вы можете изменить chmod
или chown
соответственно разрешения.
ls -lash
покажет вам, какой текущий пользователь владеет только папкой и какие разрешения находятся в папке, в которую вы пытаетесь написать:
4.0K drwxrwx--- 4 username username 4.0K Dec 9 14:11 uploads
вы можете использовать это, чтобы проверить наличие каких-либо проблем.
некоторые документы об изменении владельца и разрешений
http://linux.die.net/man/1/chmod
http://linux.die.net/man/1/chown
Я бы посоветовал быть очень осторожны к каким местоположениям на вашем диске вы предоставляете доступ для веб-сервера для чтения / записи. Это может иметь серьезные последствия для безопасности.
Ну, я работал над этим вопросом более недели и, наконец, смог ВЫЯСНИТЬ ЭТО. Пожалуйста, следуйте ссылкам из цифровой океан, но они не указали на важные вопросы, которые включают в себя
- нет живых потоков при подключении к upstream
- *4 подключение () к unix:/myproject.ошибка носка (13: отказано в разрешении) при подключении к upstream
- gunicorn OSError: [Errno 1] операция не разрешено
-
*1 подключение() к unix:/tmp / myproject.sock failed (2: нет такого файла или каталога)
etc.
эти вопросы в основном проблема разрешения для соединения между Nginx и Gunicorn. Чтобы сделать вещи простыми, я рекомендую дать же разрешение nginx для каждого файла/проекта / программы python, которую вы создаете.
чтобы решить все проблемы, выполните следующее подход: Во-первых:
- войдите в систему как пользователь root
- создать каталог/home / nginx.
- после этого следуйте в соответствии с сайт до создайте сценарий выскочки.
- выполнить команду chown -р с nginx:nginx в /дома/nginx и
- для сценария upstart выполните следующие изменения в последней строке : exec gunicorn --workers 3 --bind unix:myproject.носок-u nginx-g nginx wsgi Не добавляйте-m разрешение, как это испортит сокет. Из документации Gunicorn, когда -m по умолчанию, python выяснит лучшее разрешение
- запустите сценарий выскочки
-
теперь просто перейдите в /etc/nginx / nginx.файл conf. Перейдите в серверный модуль и добавьте:
расположение / { включить proxy_params; директива proxy_pass HTTP в://Юникса/дома/nginx в/myproject будет.носок; } удалить Не следуйте digitalocean aricle отсюда
- теперь перезапустите сервер nginx и вы хорошо идти.