远程文件的部署

1. Django web project deployment

1.1项目准备

准备打包好项目开发web项目,通过FTP上传到指定的linux/unix服务器
案例项目:mysite/

1.2生产环境的准备

Django生产环境服务器,常规情况下使用Linux/Unix平台作为服务器平台,需要准备
如下运行环境
环境:python2 x/python3.x
软件:mysql-server、mysql-client
模块:pymysql、pillow、django、uwsgi

1.3项目部署【UWSGI】

(1)生产环境打开mysql-client命令行,执行项目sql脚本语言,初始化数据库
(2)在项目根目录中,添加uwsgi.ini配置文件,添加如下内容:

[uwsgi]
#指定服务器部署IP地址和端口
http=192.168.10.120:8000
#配置项目在当前服务器中的绝对路径
chdir=/home/worker/django_pro/mysite
#相对路径指定当前项目中wsgi.py
wsgi-file=mysite/wsgi.py
#设置启动的进程数量
processes=4
#设置每个进程启动的线程数量
threads=2
#设置主进程
master=True
#指定保存主进程编号的文件
padfile=uwsgi.pid
#指定守护进程的日志存储
daemonize=uwsgi.log

(3) 项目运行
启动项目,当前路径中,直接运行命令启动项目

uwsgi --ini

停止项目,通过包含主进程编号的文件设置停止项目

uwsgi --stop uwsgi.pid

启动项目

uwsgi --reload uwsgi.pid

1.4项目部署【 UWSGI + NGINX】

通过UWSGI服务器部署Django项目,通过nginx进行反向代理
(1)项目根目录创建uwsgi.ini配置文件

[uwsgi]
#配置和nginx反向代理之间的连接地址

socket=localhost:8000
#配置项目根目录
chdir=/home/worker/django_pro/mysite
#相对路径指定当前项目中wsgi.py
wsgi-file=mysite/wsgi.py
#设置启动的进程数量
processes=4
#设置每个进程启动的线程数量
threads=2
#设置主进程
master=True
#指定保存主进程编号的文件
pidfile=uwsgi.pid
#指定守护进程的日志存储
daemonzie=uwsgi.log

(2) 编程nginx.conf配置文件,设置反向代理
nginx和uwsgi进行配合使用时,nginx主要有两个作用,使用nginx作为静态文件服务器和反向代理服务器

  • 设置静态文件
    打开django项目的配置文件,添加STATIC_ROOT配置
    编辑mysite/mysites/settings.py

STATIC_ROOT=/home/worker/django_pro/myweb/static_file/

进入Django项目根目录执行命令手机静态文件

>>>python manage.py collectstatic
  • 反向代理配置
    编辑/etc/nginx/nginx.conf配置文件,编辑sever配置选项
    核心配置反向代理server 服务器和静态文件别名
··
event {
    ···
}
··
http {
        ··
        server {
                listen 80;
                server_name 192.168.10.120;
                  
                #反向代理配置
               location / {
                      include uwsgi_parmas;
                      uwsgi_paas 127.0.0.1:8000;
                  }
                  #静态文件路径配置
                  location /static{
                        alias  /home/worker/django_pro/myweb/static_file/;
                  }
               }
                ··
      }

(3) 启动项目进行测试

  • 首先进入项目目录,启动Django项目
>>>uwsgi --in uwsgi.ini
  • 启动nginx服务器
>>>nginx
  • 检查进程启动情况
>>> ps -ef|grep wsgi
··
>>>ps -ef|grep nginx
  • 测试访问项目
    test

1.5项目分布式部署【UWSGU + NGINX】

使用UWSGI配置Django项目的多进程部署,使用nginx进行静态文件的部署和负载均衡的配置
(1) 在多态主机上部署多个相同的django项目【同一台主机上部署多个项目进行模拟】设置两个或者多个Django项目启动配置信息如下
mysite/uwsgi.ini

[uwsgi]
#配置项目访问地址
http=localhost:8000
#配置项目根路径
chdir=/home/worker/django_pro/mysite
#相对路径指定当前项目中wsgi.py
#设置启动的进程数量
 processes=4
#设置每个进程启动的线程数量
thread=2
#设置主进程
master=True
#指定保存主进程编号文件
pidfile=uwsgi.pid
#指定守护进程的日志存储
demonize=uwsgi.log

(2)配置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/;
            }
        .. ..

(3)测试访问项目
TEST

2. Tornado web project deployment

2.1项目准备

参考Django1.1部分

2.2项目常规部署【使用自带服务器直接操作】

直接通过配置文件命令或者命令行指定端口运行程序,就可以使用tornado自带的web服务器启动web项目并提供正常的web服务了

但是这样的操作方式并不是可取的,命令行需要处理让启动的程序后台运行,并且如果部署多进程项目的话,多个进程直接没有进行统一管理的操作,很不方便后期的维护操作

直接运行【阻塞方式】

>>>python demo.py --port=8000

后台运行【非阻塞方式】

>>>python demo.py --port=8000

2.3supervisor管理器

针对tornado多进程部署方式,第三方提供了各种进程管理模块用于进行tornado项目多个进程的维护管理,项目中常用的如supervisor、circus等等

(1)ubuntu中安装supervisor

$sudo apt-get install supervisor

备注:可以使用pip install supervisor进行安装
安装完成后,生成supervisor配置文件

$cd /etc/supervisor
$echo_supervisor_conf > supervisord.conf

修改配置文件/etc/supervisor/supervisor.conf

··
[include]
files./conf.d/*.conf

(2)添加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

(3)进程管理
启动进程管理器

$ supervisor -c supervisord.conf

进程管理器包含进程状态管理

supervisorctl status       #查看管理的所有进程的状态
supervisorctl update       #重新启动配置文件修改的程序
supervisorctl stop td:*    #停止所有进程【可以指定进程】
supervisorctl start td:*   #启动所以进程【可以指定进程】
supervisorctl restart td:* #重启所有进程进程【可以指定进程】

2.4supervisor + nginx 分布式部署

模仿Django和Tornado的项目部署方式
参考http://docs.jinkan.org/docs/flask/deploying/index.html#deployment

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容