【发布时间】:2014-09-18 09:09:19
【问题描述】:
我正在自学如何设置 Ubuntu 服务器来运行我的 Django 应用程序。我想使用 Nginx + uwsgi。我知道这个问题对于专家来说可能很容易,但我花了 6 天时间在互联网上寻找它而没有得到它(无论如何,如果有答案的链接,请原谅我)。我关注了很多教程和帖子,但没有找到解决方案。
我在下面描述我的文件结构:
我的 django 项目位于 /usr/local/projects/myproject
我的 virtualenv 在 /root/.virtualenvs/myproject
我的 uwsgi 配置文件 myproject.ini 位于 /etc/uwsgi/apps-available/ 并正确符号链接在 /etc/uwsgi/apps-enabled/ 中
[uwsgi]
plugins = python
socket = /tmp/myproject.sock
chmod-socket = 644
uid = www-data
gid = www-data
master = true
enable-threads = true
processes = 2
no-site=true
virtualenv = /root/.virtualenvs/myproject
chdir = /usr/local/projects/myproject
module = myproject.wsgi:application
pidfile = /usr/local/projects/myproject/myproject.pid
logto = /var/log/uwsgi/myproject_uwsgi.log
vacuum = true
我的 nginx 配置文件 myproject.conf 在 /etc/nginx/sites-available/ 中,并且在 /etc/nginx/sites-enabled/ 中正确符号链接
# the upstream component nginx needs to connect to
upstream django {
server unix:///tmp/myproject.sock; # for a file socket
}
server {
listen 80;
server_name dev.myproject.com www.dev.myproject.com;
access_log /var/log/nginx/myproject_access.log;
error_log /var/log/nginx/myproject_error.log;
location / {
uwsgi_pass unix:///tmp/myproject.sock;
include /etc/nginx/uwsgi_params;
uwsgi_param UWSGI_SCRIPT myproject.wsgi;
}
location /media/ {
alias /usr/local/projects/myproject/media/;
}
location /static/ {
alias /usr/local/projects/myproject/static/;
}
}
当我尝试访问 dev.myproject.com 时,出现内部服务器错误。然后我看看我的 uwsgi 日志:
Traceback (most recent call last):
File "./myproject/wsgi.py", line 9, in <module>
import os
ImportError: No module named os
Sat Jul 26 17:39:16 2014 - unable to load app 0 (mountpoint='') (callable not found or import error)
Sat Jul 26 17:39:16 2014 - --- no python application found, check your startup logs for errors ---
[pid: 8559|app: -1|req: -1/8] 79.148.138.10 () {40 vars in 685 bytes} [Sat Jul 26 17:39:16 2014] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0)
我需要您的帮助,因为尽管可能非常简单,但我无法找到解决方案。
如果您需要了解其他信息,请告诉我,我会尽快更新我的问题。
【问题讨论】:
-
你有没有使用virtaulenv创建虚拟环境/usr/local/projects/myproject?我看到你在 /root 中有一些东西——我的建议是你不要使用 /root 进行开发,因为进程无法访问内容,除非它们以 root 身份运行。通常你会想在你的服务器上为一个开发项目创建一个用户,并将你的源文件放在里面,比如 /home/myproject/... 等。
标签: django nginx uwsgi ubuntu-server