django 项目部署——uwsgi
-
概念:
项目部署是指软件开发后,将开发机器上运行的软件实际安装到服务器上进行长期运行。- 在安装机器上安装和配置同版本的环境【python,数据库等】
- django项目迁移:sudo scp /home/tarena/django/mysite1 root@88.77.66.55:/home/root/xxx
- 用uWSGI替代python manage.py runserver方法启动服务器
- 配置nginx反向代理服务器
- 用nginx配置静态文件路径,解决静态路径问题。
-
WSGI(web server gateway interface):
web服务器网关接口,是python应用程序或框架和web服务器之间的一种接口,被广泛使用。
使用python manage.py runserver 通常只在开发和测试环境中使用。
当开发结束后,完善的项目代码需要在一个高效稳定的环境中运行,这时可以使用WSGI。 -
uWSGI:
是WSGI的一种网络接口的服务,它实现了http协议、WSGI协议以及uwsgi协议。主要以学习配置为主。像runserver一样,学会如何使用就行。-
安装uWSGI:
sudo pip install uwsgi
,可以使用国内的镜像sudo pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple
。使用sudo pip freeze|grep -i 'uwsgi'
检查是否安装成功; -
配置uWSGI:
-
添加配置文件:项目同名文件夹/uwsgi.ini】,例如mysite1/mysite1/uwsgi.ini :cd 到day08/mysite7/mysite7 (注意是在项目同名的目录下,不是直接在项目目录),
touch uwsgi.ini
-
文件以[uwsgi]开头,有如下配置项:
套接字方式的 IP地址:端口号,[此模式需要有nginx]:socket=127.0.0.1:8000 Http通信方式的 IP地址:端口号:http=127.0.0.1:8000 项目当前的工作目录:chdir=/home/tarena/.../my_project , 必须是个绝对路径,指明当前的项目在哪 项目中wsgi.py文件的目录,相当于当前的工作目录:wsgi-file=my_project/wsgi.py , 是个相对路径 进程个数:process=4 每个进程的线程个数:threads=2 服务的pid记录文件:pidfile=uwsgi.pid 服务的日志文件位置(后台启动):daemonize=uwsgi.log 开启主进程管理模式:master=true
-
买了公有云之后,Django的settings还需要做:(现在就不改了)
修改settings.py 将DEBUG=True 改为DEBUG=False 修改settings,py 将ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=['网站域名']或者['服务监听的ip地址']
-
-
启动uwsgi:cd 到uWSGI配置文件所在的目录(ls之后能看到uwsgi.ini这个文件),执行
uwsgi --ini uwsgi.ini
- 判断有没有启动起来:
ps aux|grep 'uwsgi'
, 结果中有uwsgi.ini之类的进程就说明ok了。 - 启动成功之后ls就会发现,多了uwsgi.pig和uwsgi.log两个文件,启动以及报的错等日志都在uwsgi.log中。
- 现在就可以访问之前runserver之后访问的地址了。
- 判断有没有启动起来:
-
停止uwsgi:cd 到uWSGI配置文件所在的目录,执行
uwsgi --stop uwsgi.pid
- 确认停没停也可以使用
ps aux|grep 'uwsgi'
查看一下。
- 确认停没停也可以使用
-
整个启动和停止的过程,都应该拿ps查看是否有相应的进程启动或者终止。Django中代码有任何修改,都需要重新启动uwsgi(先stop在ini)。
-