远程Ubuntu服务器Gunicorn找不到工作目录的解决求助(Django+Nginx)
修复Gunicorn工作目录找不到的问题
以下是针对性的排查和修复步骤:
1. 确认工作目录真实存在
首先用命令彻底验证路径是否正确,避免复制时的隐藏字符或拼写错误:
ls -ld /home/ubuntu/project
如果输出提示No such file or directory,说明目录不存在,需创建该目录或修正配置中的路径。
2. 验证root用户对目录的访问权限
虽然root是超级用户,但仍可能因父目录权限或ACLs限制无法访问:
sudo -u root cd /home/ubuntu/project && echo "目录访问正常"
如果报错,调整目录及父目录的权限:
sudo chmod 755 /home/ubuntu sudo chmod 755 /home/ubuntu/project
若存在ACL限制,可查看并清除异常规则:
getfacl /home/ubuntu/project sudo setfacl -b /home/ubuntu/project
3. 排查配置文件中的隐藏字符
复制粘贴的配置可能包含不可见的特殊字符(如Windows换行符^M),导致路径识别错误:
cat -A /etc/systemd/system/gunicorn.service
检查WorkingDirectory行末尾,若有^M或其他异常字符,手动编辑配置文件删除这些字符,重新输入路径。
4. 修正Gunicorn启动命令(可选)
若工作目录问题仍无法解决,可在ExecStart中直接指定工作目录和WSGI文件的绝对路径,绕过WorkingDirectory配置:
修改gunicorn.service的[Service]段:
[Service] User=root Group=www-data ExecStart=/home/ubuntu/project/env/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.sock --chdir /home/ubuntu/project project.wsgi:application
或者直接使用WSGI文件的绝对路径:
ExecStart=/home/ubuntu/project/env/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.sock /home/ubuntu/project/project/wsgi.py:application
5. 重新加载配置并重启服务
每次修改配置后必须重新加载systemd配置,再重启服务:
sudo systemctl daemon-reload sudo systemctl restart gunicorn.service
随后用实时日志验证是否修复:
sudo journalctl -u gunicorn.service -f
内容的提问来源于stack exchange,提问作者Khqy Op
相关产品推荐
相关产品推荐

