Ubuntu 18.04 EC2中gunicorn服务文件Group参数配置问题咨询
Gunicorn服务Group配置问题解答
你当前的Gunicorn配置存在问题,大概率会导致服务启动失败,原因如下:
- 你执行的
groups命令输出的是当前登录的ubuntu用户所属的所有用户组,结果中没有www-data,说明要么你的系统中不存在www-data这个用户组,要么ubuntu用户没有被加入该组。 - Gunicorn服务配置中指定了运行用户为
ubuntu、运行组为www-data,如果ubuntu用户不在www-data组内,或者www-data组本身不存在,服务启动时会抛出权限相关错误,无法正常运行。
场景1:无特殊权限隔离需求,快速部署使用
直接修改Gunicorn服务文件的Group参数值为ubuntu即可,修改后的对应配置段如下:
[Service] User=ubuntu Group=ubuntu WorkingDirectory=/home/ubuntu/djangoapp1 ExecStart=/home/ubuntu/env/bin/gunicorn \ --access-logfile - \ --workers 3 \ --bind unix:/run/gunicorn.sock \ djangoapp1.wsgi:application
修改完成后执行以下命令生效:
sudo systemctl daemon-reload sudo systemctl restart gunicorn
执行sudo systemctl status gunicorn确认服务状态为active (running)即可。
场景2:需要配合Nginx等Web服务做权限统一,要使用www-data组
按以下步骤操作即可:
- 首先确认系统是否存在www-data组,执行命令:
getent group www-data
如果没有任何输出,先创建该组:sudo groupadd www-data - 将ubuntu用户加入www-data组:
sudo usermod -aG www-data ubuntu - 调整项目目录的权限归属,保证组用户有访问权限:
sudo chown -R ubuntu:www-data /home/ubuntu/djangoapp1 sudo chmod -R 750 /home/ubuntu/djangoapp1
- 重载服务配置并重启Gunicorn:
sudo systemctl daemon-reload sudo systemctl restart gunicorn
同样通过status命令验证服务运行状态即可。
内容的提问来源于stack exchange,提问作者milo2810
相关产品推荐
相关产品推荐

