如果社区我能找到答案就在这里......提前谢谢大家。
这是我的配置文件:
我的django项目上的uwsgi.py:import os
import sys
import site
site.addsitedir(os.path.join(os.environ['WORKON_HOME'],'project/lib/python2.6/site-packages'))
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Nginx配置
# nginx configuration for project.maumercado.com
server {
server_name project.maumercado.com;
access_log /home/ubuntu/logs/project/nginx/access.log;
error_log /home/ubuntu/logs/project/nginx/error.log;
location / {
uwsgi_pass unix:/tmp/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
location /static {
root /home/ubuntu/django-projects/project/project/media;
}
location /media {
root /home/ubuntu/django-projects/project/project/media;
}
}
和我的uwsgi.conf
# file: /etc/init/uwsgi.conf
description "uWSGI starter"
start on (local-filesystems and runlevel [2345])
stop on runlevel [016]
respawn
# home - is the path to our virtualenv directory
# pythonpath - the path to our django application
# module - the wsgi handler python script
exec /home/ubuntu/ve/project/bin/uwsgi \
--uid www-data \
--pythonpath /home/ubuntu/django-projects/project/project/configs/staging/ \
--socket /tmp/uwsgi.sock \
--chmod-socket \
--module wsgi \
--logdate \
--optimize 2 \
--processes 2 \
--master \
--logto /home/ubuntu/logs/project/uwsgi.log
Nginx日志在access.log中除了500以外没有说明任何内容,所以继续使用uwsgi.log:
Mon Feb 6 13:58:23 2012 - *** Starting uWSGI 1.0.2.1 (32bit) on [Mon Feb 6 13:58:23 2012] ***
Mon Feb 6 13:58:23 2012 - compiled with version: 4.4.5 on 06 February 2012 12:32:36
Mon Feb 6 13:58:23 2012 - current working directory: /
Mon Feb 6 13:58:23 2012 - detected binary path: /home/ubuntu/ve/project/bin/uwsgi
Mon Feb 6 13:58:23 2012 - setuid() to 1000
Mon Feb 6 13:58:23 2012 - your memory page size is 4096 bytes
Mon Feb 6 13:58:23 2012 - chmod() socket to 666 for lazy and brave users
Mon Feb 6 13:58:23 2012 - uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Mon Feb 6 13:58:23 2012 - Python version: 2.6.6 (r266:84292, Sep 15 2010, 16:02:57) [GCC 4.4.5]
Mon Feb 6 13:58:23 2012 - Set PythonHome to /home/ubuntu/ve/project
Mon Feb 6 13:58:23 2012 - Python main interpreter initialized at 0x9a9d740
Mon Feb 6 13:58:23 2012 - your server socket listen backlog is limited to 100 connections
Mon Feb 6 13:58:23 2012 - *** Operational MODE: preforking ***
Mon Feb 6 13:58:23 2012 - added /home/ubuntu/django-projects/project/ to pythonpath.
ImportError: No module named wsgi
Mon Feb 6 13:58:23 2012 - unable to load app 0 (mountpoint='') (callable not found or import error)
Mon Feb 6 13:58:23 2012 - *** no app loaded. going in full dynamic mode ***
Mon Feb 6 13:58:23 2012 - *** uWSGI is running in multiple interpreter mode ***
Mon Feb 6 13:58:23 2012 - spawned uWSGI master process (pid: 551)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 1 (pid: 588, cores: 1)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 2 (pid: 589, cores: 1)
我不知道我设置项目的方式是否与它有关,但无论如何都是我用来重定向django实用程序的管理文件:
manage.sh
#!/bin/bash
python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $*
以防这是我设置django项目的方式:
project
|-manage.sh -> this fellow is redirected to settings.py (production, common or staging)
|-requirements.txt
|-README
|-dashbard.py
|-project.sqlite
|- project/
|- apps
|- accounts
|-other internal apps
|- configs
|- common -> for local development
|-settings.py
|-manage.py
|-urls
|-staging
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-production
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-media
|-templates
答案 0 :(得分:5)
我更新了wsgi.py看起来像这样:
import os
import sys
import site
site.addsitedir(os.path.join('/home/ubuntu/ve','project/lib/python2.6/site-packages'))
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我的uwsgi.conf文件现在看起来像这样:
# file: /etc/init/uwsgi.conf
description "uWSGI starter"
start on (local-filesystems and runlevel [2345])
stop on runlevel [016]
respawn
# home - is the path to our virtualenv directory
# pythonpath - the path to our django application
# module - the wsgi handler python script
exec /home/ubuntu/ve/project/bin/uwsgi \
--uid ubuntu \
--pythonpath /home/ubuntu/django-projects/project/project/configs/staging \
-H /home/ubuntu/ve/project \
--socket /tmp/uwsgi.sock \
--chmod-socket 644 \
--module wsgi \
--logdate \
--optimize 2 \
--processes 2 \
--master \
--logto /home/ubuntu/logs/project/uwsgi.log
我的nginx站点可用文件如下所示:
# file: /etc/nginx/sites-available/yourdomain.com
# nginx configuration for project.maumercado.com
server {
listen 80;
charset utf-8;
server_name project.maumercado.com;
access_log /home/ubuntu/logs/project/nginx/access.log;
error_log /home/ubuntu/logs/project/nginx/error.log;
location ^~ /cache/ {
root /home/ubuntu/django-projects/project/project/media;
expires max;
}
location / {
uwsgi_pass unix:/tmp/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
}
现在它的工作完美,我在样式方面遇到了一些问题,因为在css文件中使用了奇怪的字符。
现在我想知道当我需要在uwsgi的同一台服务器上运行更多项目时我该怎么办?
答案 1 :(得分:1)
确保将包含wsgi.py文件的目录添加到pythonpath(您可以指定一系列无限制的pythonpath指令)