Gunicorn не может получить доступ позволяет шифровать файлы

#django #gunicorn #certbot

Вопрос:

 (venv) ubuntu@ip-172-31-6-77:~/redrebelgames_python$ gunicorn redrebelgames_python.wsgi:application [2021-11-25 20:01:09  0000] [3758] [INFO] Starting gunicorn 20.1.0 Traceback (most recent call last):  File "/home/ubuntu/redrebelgames_python/venv/bin/gunicorn", line 8, in lt;modulegt;  sys.exit(run())  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 67, in run  WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/app/base.py", line 231, in run  super().run()  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run  Arbiter(self).run()  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 198, in run  self.start()  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 155, in start  self.LISTENERS = sock.create_sockets(self.cfg, self.log, fds)  File "/home/ubuntu/redrebelgames_python/venv/lib/python3.8/site-packages/gunicorn/sock.py", line 162, in create_sockets  raise ValueError('certfile "%s" does not exist' % conf.certfile) ValueError: certfile "/etc/letsencrypt/live/api.redrebelgames.com/cert.pem" does not exist  

Как я могу разрешить gunicorn доступ к этим файлам? По какой-то причине это не работает, и простое изменение разрешений chmod не сработает, потому что certbot в конечном итоге изменит их обратно.

Ответ №1:

Файлы certbot принадлежат одному идентификатору (обычно корневому). Вы управляете Gunicorn под другим именем. Ключ состоит в том, чтобы предоставить разрешение личности Gunicorn на чтение файлов Let’s Encrypt. Как правило, вы можете добавить имя пользователя Gunicorn в имя группы Let’s Encrypt identity и сделать файлы доступными для чтения группой.

Пример команды:

 sudo usermod -a -G groupname username  

Имя пользователя, удостоверяющее личность, должно повторно войти в систему после изменения членства в группе. Проще просто перезагрузить систему.

Другой метод (не рекомендуется) — запустить Gunicorn как привилегированный процесс. Это сопряжено с рисками для безопасности.