您的位置:首页 > 编程语言 > Go语言

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]
# 指定服务器部署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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: