我正在设置一个 ec2 服务器来运行带有 ngnix 和 gunicorn 的 django 项目。该服务器正在运行 Amazon Linux。当我从命令行运行 start gunicorn 命令时,它会启动服务器,但当我尝试从主管运行它时,我收到以下错误:
supervisor: couldn't chdir to /home/ec2-user/virtualenvs/wakeup-site/django-site: EACCES
supervisor: child process was not spawned
当我以 sudo 或我自己的用户身份运行主管时,会发生这种情况。目录的权限:/home/ec2-user/virtualenvs/wakeup-site/django-site
drwxrwxrwx 15 ec2-user ec2-user 4096 Mar 6 08:21 django-site
相关的 Supervisor.conf 行:
[program:wakeup]
command=./start_gunicorn.bash
directory="/home/ec2-user/virtualenvs/wakeup-site/django-site"
user=ec2-user
autostart=true
autorestart=true
stdout_logfile=/home/ec2-user/virtualenvs/wakeup-site/django-site/logs/supervisorconf.log
stderr_logfile=/home/ec2-user/virtualenvs/wakeup-site/django-site/logs/gunicorn_stderr.log
启动_gunicorn.bash:
#!/bin/bash
# Starts the Gunicorn server
set -e
# Activate the virtualenv for this project
%(ACTIVATE)s
# Start gunicorn going
exec gunicorn wakeup.wsgi:application -c gunicorn.conf.py
我尝试从主管中删除目录行,并将命令设为完整路径,尝试以 sudo 身份运行,并以 root 身份 chown 整个目录,删除 ect2-user 行。当我运行
exec gunicorn wakeup.wsgi:application -c gunicorn.conf.py
从命令行它可以工作并且我可以浏览该站点。
有人可以帮忙吗?
答案1
这看起来像是权限问题。第一个问题是问自己“目录的所有者是否是 ec2-user”,否则将其适当地更改为实际用户
用户=ec2-用户