项目部署
1 基本概念
项目部署是指在软件开发完毕后,将开发机器上运行的软件实际安装到服务器上进行长期运行。
在安装机器上安装和配置同版本的环境[python,数据库等]
django项目迁移
scp /home/euansu/Code/Python/website euansu@xx.xx.xx.xx:/home/euansu/xxx
用uWSGI替代python3 manage.py runserver方法启动服务器。
配置nginx反向代理服务器。
用nginx配置静态文件路径,解决静态路径问题。
2 WSGI定义
WSGI(Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和web服务器之间的一种接口,被广泛使用。
使用Python manage.py runserver通常只在开发和测试环境中使用,当开发结束后,完善的项目代码需要在一个搞笑稳定的环境中运行,这是可以使用WSGI。
开发环境中,runserver将http协议的内容规范成WSGI规范给Django处理,将WSGI的规范转换成http规范进行返回。
3 uWSGI
3.1 uWSGI定义
uWSGI是WSGI的一种,它实现了http协议WSGI协议以及uwsgi协议。uWSGI功能完善,支持协议众多,在Python web热度极高。
uWSGI主要以学习配置为主。
3.2 uWSGI安装
pip install uwsgi==2.0.18 -i https://pypi.tuna.tsinghua.edu.cn/simple/# 检查是否安装成功,如果成功安装则会输出uWSGI==2.0.18pip freeze | grep -i 'uwsgi'
3.3 uWSGI配置
添加配置文件 项目同名文件夹/uwsgi.ini,如:website/website/uwsgi.ini
文件以[uwsgi]开头,有如下配置项:
套接字方式的 IP地址:端口号 【此模式需要有nginx】
socket=127.0.0.1:8000
http通信方式的 IP地址:端口号
http=127.0.0.1:8000
项目当前工作目录
chdir=/home/euansu/website
项目中wsgi.py文件的目录,相对于当前工作目录
wsgi-file=website/wsgi.py
进程个数
process=4
每个进程的线程个数
threads=2
服务的pid记录文件
pidfile=uwsgi.pid
服务的日志文件,配置该选项后,说明项目后台启动,且日志输出到该文件中
daemonize=uwsgi.log
开启主进程管理模式
master=true
特殊说明,Django的setting.py需要做如下配置:
修改settings.py,将DEBUG=True改为DEBUG=False
修改settings.py,将ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=[‘网站域名/服务器监听的ip地址’]
实际项目的配置文件如下:
# 项目名/uwsgi.ini[uwsgi]# http通信方式的 IP地址:端口号http=127.0.0.1:8000# 项目当前工作目录chdir=/home/euansu/Code/Python/website# 项目中wsgi.py文件的位置wsgi-file=website/wsgi.py# 进程个数process=4# 线程个数threads=2# 服务的pid记录文件pidfile=uwsgi.pid# 服务的日志文件,是不是由后台启动以及日志输出到哪里daemonize=uwsgi.log# 开启主进程管理模式master=true
3.4 uWSGI的运行管理
启动uwsgi
# cd到uWSGI配置文件所在目录uwsgi --ini uwsgi.ini
启动以及检测进程是否成功。
网页访问。
停止uwsgi
# cd到uWSGI配置文件所在目录uwsgi --stop uwsgi.pid