uwsgi+ nginx + django采坑经验

博客介绍了在已有正常工作的Django项目基础上,配置uWSGI + Nginx的详细步骤。包括安装配置uWSGI时遇到的问题及解决办法、启动和停止命令,还介绍了Nginx的安装、配置文件创建、静态文件处理,以及uWSGI和Nginx的启动、重启、停止命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:已经有了正常的工作的django项目,现在需要配置uwsgi + nginx。

一  安装配置uwsgi

    直接安装pip install uwsgi会报错如下:

Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_aa/uwsgi/setup.py';
exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))
" install --record /tmp/pip-mjkYEB-record/install-record.txt --single-version-externally-managed --comp
ile failed with error code 1 in /tmp/pip_build_aa/uwsgi
Storing debug log for failure in /home/aa/.pip/pip.log

  需要安装python-dev。

  1. sudo apt-get install python-dev

  2. sudo pip install uwsgi

  在django项目根目录下创建uwsgi.ini

[uwsgi]

socket = :8000

#django 目录
chdir           = /home/user/www/django项目

#Django 项目下 wsgi.py 文件路径
module          = myweb.wsgi

master          = true

#进程数
processes       = 4
vacuum          = true
#输出日志
daemonize = /srv/script/uwsgi.log
#主进程pid
pidfile = /srv/script/uwsgi.pid
#配置python安装路径
pythonpath = /srv/JMS/src/venv/local/lib/python2.7/site-packages

       启动uwsgi : uwsgi --ini uwsgi.ini (在django项目根目录 ,不然需要给出uwsgi完全路径。)

      停止可以采用uwsgi --stop /srv/script/uwsgi.pid,如果不好使直接杀掉uwsgi:pkill -f uwsgi -9

在这一步可以做个测试,看uwsgi是否正常工作,把上面socket换成http,测试是否能够正常访问django网站(127.0.0.1:8000此时网站只能加载不出如js,css等静态文件,但是链接是可以跳转的。)

二  安装配置nginx

       sudo apt-get install nginx(另外通过编译安装也可以,我没有研究)

      (如果出现404的错误需要更新一下 sudo apt-get update)

      这种把nginx安装在/etc/nginx这个位置。

      在/etc/nginx/conf.d下创建文件  你项目名.conf 的配置文件,配置如下:

server {                                                                    
  2     listen 8099;   #监听端口
  3     server_name xxx.xxx.xx.xxx;    #本机ip,这是个坑,我就在这儿浪费了半天,想死
  4     charset UTF-8;    #编码
  5     access_log /var/log/nginx/myweb_access.log;    #输出日志
  6     error_log /var/log/nginx/myweb_error.log;   
  7 
  8     client_max_body_size 75M;
  9 
 10     location / {
 11         include uwsgi_params;
 12         uwsgi_read_timeout 30;
 13         uwsgi_pass 127.0.0.1:8000;    #这儿要跟你uwsgi配置的一直,坑!!
 14     }
 15 
 16     location /static {                #静态文件位置
 17         alias /项目位置根/static/;
 18         
 19     }
 20 
 21     location /media {
 22         alias /项目位置根/media/;
 23     }
 24     location /admin/{                #只需这个ip可以访问admin后台
 25         allow 192.168.10.100;
 26         deny all;
 27     }
 28 }

      配置项目setting文件

   

from django.conf.urls import url
from django.views.static import serve

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
urlpatterns={
    url(r'^media/(?P<path>.*)', serve, {'document_root': MEDIA_ROOT}),
    url(r'^static/(?P<path>.*)$', serve, {'document_root': STATIC_ROOT}),
}
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

     把之前配置的静态文件存放设置去掉。

     到这一步还是不能加载静态文件,需要将项目中的静态文件统一复制以到在conf配置的静态文件位置,只需使用这个命令即可:python manage.py collectstatic

     此时配置完成,需要启动uwsgi和nginx:

      uwsgi --ini /srv/SEAP/uwsgi.ini &
      sudo nginx

      此时可以查看进程情况: ps -ef |grep uwsgi            ps -ef |grep nginx

      我的配合的是4进程的,所以应该看到

     如果只有最下面一条,说明没有启动成功,查看一下是哪里出错了。

下面贴一些用的着的命令

启动uwsgi:   uwsgi --ini uwsgi.ini
强制杀死uwsgi:   pkill -f uwsgi -9

nginx启动: sudo nginx
nginx停止:sudo nginx -s stop

更新static  :python manage.py collectstatic

 

启动
uwsgi --ini /srv/SEAP/uwsgi.ini &
sudo nginx

 

重启

uwsgi --reload /srv/script/uwsgi.pid

nginx -s reload

 

停止

uwsgi --stop /srv/script/uwsgi.pid

nginx -s stop

 

 

前车之鉴,后车之师。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值