一、引入
当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目。之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的,下面介绍今天的新方法。
二、uwsgi
1.什么是uwsgi
项目的文件中有一个wsgi的文件,其实这就是生产环境中会用到的wsgi。
WSGI:Web服务器网关接口,英文为Python Web Server Gateway Interface,缩写为WSGI,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。
uWSGI:实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器(用C语言编写)。
2.安装uwsgi
pip install uwsgi
3.配置uwsgi.ini,在项目中新建文件uwsgi.ini,与manage.py文件同级,编写如下配置:
[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
本人项目中的代码:
1 [uwsgi]
2 socket=127.0.0.1:8001
3 #http=外网ip:端口(直接做web服务器,使用http)
4 chdir=/data/project/DjangoAdmin
5 wsgi-file=DjangoAdmin/wsgi.py
6 processes=4
7 threads=2
8 master=True
9 pidfile=uwsgi.pid
10 daemonize=uswgi.log
uwsgi的使用方法如下:
- 启动:uwsgi --ini uwsgi.ini
- 停止:uwsgi --stop uwsgi.pid
- 重启:uwsgi --reload uwsgi.pid
4.静态文件的部署
在我们的djang代码上线之后,是需要修改配置文件setting.py的,其中
1 DEBUG = False
2 ALLOW_HOSTS=['*',]表示可以访问服务器的ip
但是这种情况下,我们的静态文件将不再显示出来,此时需要将我们的静态文件拷贝到一个新的文件夹中以供访问,
首先,在服务器上新建文件夹:/data/www/djangoadmin/,根据自己的情况可以设置不同的文件夹路径
然后,修改文件夹的权限为777,chmod 777 /data/www/djangoadmin/
其次,创建static文件夹,mkdir static
之后,修改项目中setting.py文件,保证文件中有如下两行:
1 STATIC_ROOT='/data/www/djangoadmin/static' #新增的配置,用来将静态文件收集到此文件夹
2 STATIC_URL='/static/' #这一行代码在项目开发时已经存在
最后,在项目中运行收集静态文件的指令:python manage.py collectstatic。
如上图所示,则表示静态文件收集成功。
5.nginx配置
1 server {
2 listen 80;
3 server_name djangoadmin.zhangtao1994.com;
4 access_log /var/log/nginx/access_djangoadmin.log main;
5 location / {
6 include uwsgi_params;
7 uwsgi_pass 127.0.0.1:8001;
8 }
9 location /static {
10 alias /data/www/djangoadmin/static;
11 }
12
13 }
其中,location / 是uwsgi的项目部署,location /static 是静态文件的部署。
项目成功部署上之后,就可以正常访问了,截图如下:
三、总结
这应该是比较正确的部署方法了。
来源:oschina
链接:https://my.oschina.net/u/4337559/blog/3715647