Django|Tornado项目部署
2017-11-10 19:42
274 查看
WEB PROJECT DEPLOYMENT
WEB项目开发的最后一个步骤,通过项目的打包和生产环境上的项目部署,使得项目能在线正常提供web服务器给客户端进行使用
python web项目主要通过web.py、flask、django、flask等类似框架进行开发,部署方式也是大同小异,有项目单独部署方式,有项目多台主机分布式部署方式等等,本章节针对Django、Tornado、Flask框架开发的web项目部署方式进行一一介绍。
目录
WEB PROJECT DEPLOYMENT 1
1. Django web project deployment 1
1.1. 项目准备 1
1.2. 生产环境准备 1
1.3. 项目部署【UWSGI部署】 2
1.4. 项目部署【UWSGI + NGINX】 2
1.5. 项目分布式部署【UWSGI + NGINX】 4
2. Tornado web project deployment 6
2.1. 项目准备 6
2.2. 项目常规部署【使用自带服务器直接操作】 6
2.3. supervisor管理进程 6
2.4. supervisor+nginx分布式部署 8
3. Flask web project deployment 8
Django web project deployment
项目准备
准备打包好项目组开发的web项目,通过FTP上传到指定的linux/unix服务器
案例项目:mysite/
生产环境准备
Django生产环境服务器,常规情况下使用Linux/Unix平台作为服务器平台,需要准备如下运行环境
环境:python2.x / python3.x
软件:mysql-server、mysql-client
模块:pymysql、pillow、django、uwsgi
项目部署【UWSGI部署】
在生产环境打开mysql-client命令行,执行项目sql脚本语句,初始化数据库
在项目根目录中,添加uwsgi.ini配置文件,添加如下内容
项目运行
启动项目,当前路径中,直接运行命令启动项目
停止项目,通过包含主进程编号的文件设置停止项目
重启项目
项目部署【UWSGI + NGINX】
通过UWSGI服务器部署Django项目,通过nginx进行反向代理
项目根目录创建uwsgi.ini配置文件
编辑nginx.conf配置文件,设置反向代理
nginx和uwsgi进行配合使用时,nginx主要有两个作用,使用nginx作为静态文件服务器和反向代理服务器
设置静态文件
打开django项目的配置文件,添加STATIC_ROOT配置
编辑mysite/mysite/settings.py
..
..
进入Django项目根目录执行命令收集静态文件
反向代理配置
编辑/etc/nginx/nginx.conf配置文件,编辑server配置选项
核心配置反向代理server服务器和静态文件别名
启动项目进行测试
首先进入项目目录,启动Django项目
启动nginx>>> nginx程启动情况
测试访问项目
TEST
项目分布式部署【UWSGI + NGINX】
使用UWSGI配置Django项目的多进程部署,使用nginx进行静态文件的部署和负载均衡的配置
在多台主机上部署多个相同的django项目【同一台主机上部署多个项目进行模拟】
设置两个或者多个Django项目的启动配置信息如下
mysite/uwsgi.ini
mysite2/uwsgi.ini
配置nginx静态服务器映射和负载均衡
测试访问项目
TEST
Tornado web project deployment
项目准备
参考Django 1.1部分
项目常规部署【使用自带服务器直接操作】
直接通过配置文件或者命令行指定端口运行程序,就可以使用torando自带的web服务器启动web项目并提供正常的web服务了
但是这样的操作方式并不是可取的,命令行需要处理让启动的程序后台运行,并且如果部署多进程项目的话,多个进程之间没有进行统一管理的操作,很不方便后期的维护操作
直接运行【阻塞方式】
后台运行【非阻塞方式】
supervisor管理进程
针对tornado多进程部署方式,第三方提供了各种进程管理模块用于进行tornado项目多个进程的维护管理,项目中常用的如supervisor、circus等等
ubuntu中安装supervisor
备注:可以使用pip install supervisor安装
安装完成后,生成supervisor配置文件
修改配置文件/etc/supervisor/supervisord.conf
..
添加tornado管理配置文件/etc/supervisor/conf.d/tornadoes.conf
进程管理
启动进程管理器
进程管理器包含进程状态管理
supervisor+nginx分布式部署
参考Django项目部署1.5章节nginx部署部分
Flask web project deployment
模仿Django和Tornado的项目部署方式
参考
http://docs.jinkan.org/docs/flask/deploying/index.html#deployment
WEB项目开发的最后一个步骤,通过项目的打包和生产环境上的项目部署,使得项目能在线正常提供web服务器给客户端进行使用
python web项目主要通过web.py、flask、django、flask等类似框架进行开发,部署方式也是大同小异,有项目单独部署方式,有项目多台主机分布式部署方式等等,本章节针对Django、Tornado、Flask框架开发的web项目部署方式进行一一介绍。
目录
WEB PROJECT DEPLOYMENT 1
1. Django web project deployment 1
1.1. 项目准备 1
1.2. 生产环境准备 1
1.3. 项目部署【UWSGI部署】 2
1.4. 项目部署【UWSGI + NGINX】 2
1.5. 项目分布式部署【UWSGI + NGINX】 4
2. Tornado web project deployment 6
2.1. 项目准备 6
2.2. 项目常规部署【使用自带服务器直接操作】 6
2.3. supervisor管理进程 6
2.4. supervisor+nginx分布式部署 8
3. Flask web project deployment 8
Django web project deployment
项目准备
准备打包好项目组开发的web项目,通过FTP上传到指定的linux/unix服务器
案例项目:mysite/
生产环境准备
Django生产环境服务器,常规情况下使用Linux/Unix平台作为服务器平台,需要准备如下运行环境
环境:python2.x / python3.x
软件:mysql-server、mysql-client
模块:pymysql、pillow、django、uwsgi
项目部署【UWSGI部署】
在生产环境打开mysql-client命令行,执行项目sql脚本语句,初始化数据库
在项目根目录中,添加uwsgi.ini配置文件,添加如下内容
[uwsgi] # 指定服务器部署IP地址和端口 http=192.168.10.120:8000 # 配置项目在当前服务器中的绝对路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log
项目运行
启动项目,当前路径中,直接运行命令启动项目
uwsgi --ini uwsgi.ini
停止项目,通过包含主进程编号的文件设置停止项目
uwsgi --stop uwsgi.pid
重启项目
uwsgi --reload uwsgi.pid
项目部署【UWSGI + NGINX】
通过UWSGI服务器部署Django项目,通过nginx进行反向代理
项目根目录创建uwsgi.ini配置文件
[uwsgi] # 配置和nginx反向代理之间的连接地址 socket=localhost:8000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log
编辑nginx.conf配置文件,设置反向代理
nginx和uwsgi进行配合使用时,nginx主要有两个作用,使用nginx作为静态文件服务器和反向代理服务器
设置静态文件
打开django项目的配置文件,添加STATIC_ROOT配置
编辑mysite/mysite/settings.py
..
STATIC_ROOT=/home/worker/django_pro_1_11/myweb/static_file/
..
进入Django项目根目录执行命令收集静态文件
>>> python manage.py collectstatic
反向代理配置
编辑/etc/nginx/nginx.conf配置文件,编辑server配置选项
核心配置反向代理server服务器和静态文件别名
.. events { ... } .. http { .. server { listen 80; server_name 192.168.10.120; # 反向代理配置 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } # 静态文件路径配置 location /static { alias /home/worker/django_pro_1_11/myweb/static_file/; } } .. }
启动项目进行测试
首先进入项目目录,启动Django项目
>>> uwsgi --ini uwsgi.ini
启动nginx>>> nginx程启动情况
>>> ps -ef|grep wsgi .. >>> ps -ef|grep nginx ..
测试访问项目
TEST
项目分布式部署【UWSGI + NGINX】
使用UWSGI配置Django项目的多进程部署,使用nginx进行静态文件的部署和负载均衡的配置
在多台主机上部署多个相同的django项目【同一台主机上部署多个项目进行模拟】
设置两个或者多个Django项目的启动配置信息如下
mysite/uwsgi.ini
[uwsgi] # 配置项目访问地址 http=localhost:8000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 p 4000 idfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log
mysite2/uwsgi.ini
[uwsgi] # 配置项目访问地址 http=localhost:9000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite2 # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log
配置nginx静态服务器映射和负载均衡
.. .. # 使用默认的轮询分发配置多个分布的服务主机 upstream myweb { server 127.0.0.1:8000; server 127.0.0.1:9000; } server { listen 80; server_name 192.168.10.120; # 配置分布式负载转发 location / { proxy_pass http://myweb; } # 配置静态文件服务器 location /static { alias /home/worker/django_pro_1_11/myweb/static_file/; } .. ..
测试访问项目
TEST
Tornado web project deployment
项目准备
参考Django 1.1部分
项目常规部署【使用自带服务器直接操作】
直接通过配置文件或者命令行指定端口运行程序,就可以使用torando自带的web服务器启动web项目并提供正常的web服务了
但是这样的操作方式并不是可取的,命令行需要处理让启动的程序后台运行,并且如果部署多进程项目的话,多个进程之间没有进行统一管理的操作,很不方便后期的维护操作
直接运行【阻塞方式】
>>> python demo.py --port=8000
后台运行【非阻塞方式】
>>> python demo.py --port=8000 &
supervisor管理进程
针对tornado多进程部署方式,第三方提供了各种进程管理模块用于进行tornado项目多个进程的维护管理,项目中常用的如supervisor、circus等等
ubuntu中安装supervisor
$ sudo apt-get install supervisor
备注:可以使用pip install supervisor安装
安装完成后,生成supervisor配置文件
$ cd /etc/supervisor $ echo_supervisord_conf > supervisord.conf
修改配置文件/etc/supervisor/supervisord.conf
..
[include] files=./conf.d/*.conf
添加tornado管理配置文件/etc/supervisor/conf.d/tornadoes.conf
[group:td] programs=tornado-8000, tornado-8001 [program:tornado-8000] command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8000 directory=/home/worker/tornado_web/web1 user=www-data autorestart=true redirect_stderr=true stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log loglevel=debug
[program:tornado-8001] command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8001 directory=/home/worker/tornado_web/web1 user=www-data autorestart=true redirect_stderr=true stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log loglevel=info
进程管理
启动进程管理器
$ supervisord -c supervisord.conf
进程管理器包含进程状态管理
supervisorctl status # 查看管理的所有进程的状态 supervisorctl update # 重新启动配置文件修改的程序 supervisorctl stop td:* # 停止所有进程[可以指定进程] supervisorctl start td:* # 启用所有进程[可以指定进程] supervisorctl restart td:* # 重启所有进程进程[可以指定进程]
supervisor+nginx分布式部署
参考Django项目部署1.5章节nginx部署部分
Flask web project deployment
模仿Django和Tornado的项目部署方式
参考
http://docs.jinkan.org/docs/flask/deploying/index.html#deployment
相关文章推荐
- Django|Tornado项目部署
- Ubuntu + Nginx + uwsgi部署Django Web项目
- docker中部署django项目-静态文件访问
- 使用apache部署多个django项目,django项目和php项目混合部署
- CentOS 7 + Apache + mod_wsgi 部署Django项目
- django+gunicorn+nginx部署项目 入门经验
- Django项目在linux系统中虚拟环境部署
- Linux-web项目部署,django1.9跑django1.11的项目,报错
- windows+Apache部署django项目
- Apache部署Django项目
- Django项目在nginx上面的部署(django+flup+nginx)
- 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
- 阿里云部署Django项目(超详细图文教程)——Part1. 服务器购买和远程连接
- 关于Nginx部署Django项目的资料收集
- Windows环境下在Apache24上部署多个django项目(多端口)
- 学习VirtualEnv和Nginx+uwsgi用于django项目部署
- windows下Nginx+tornado部署Django
- django在nginx uwsgi和tornado异步方案在项目中的体验 推荐
- 最新版windows 2012R2、Apache24、mod_wsgi、Django1.9、python3.4项目部署(生产环境)
- windows下apache部署django项目个人总结(备查)