vue+django_restframework+uwsgi+nginx+supervisor部署项目

一、前端 VUE

【1】,在打包之前,检查需要改动的地方。
  • config\index.js里面的 assetsPublicPath: '/',改为assetsPublicPath: './',
  • 一定要【将url写正确】,尤其注意api反向代理的 ip/域名
    比如:
          前端 --》 url:"http://10.0.0.11/api/login/",
          后端 --》 url(r"^api/login/$", LoginView.as_view()),
【2】,执行打包👇

D:\py文件\MyProject>npm run build

> myproject@1.0.0 build D:\py文件\MyProject
> node build/build.js

Hash: 88dfe31557c79dd523bf
Version: webpack 3.12.0
Time: 34771ms
                                                  Asset       Size  Chunks                    Chunk Names
                     static/img/img6.d6973c6.png      37 kB          [emitted]
                    static/img/img12.66b0836.png    33.2 kB          [emitted]
                     static/img/img9.6bfc22b.png    30.2 kB          [emitted]
                    .......
                    static/img/home-banner3.d79a00d.png    97.3 kB          [emitted]
               static/js/vendor.6cc76b6429383b900273.js     753 kB       0  [emitted]  [big]  vendor
                  static/js/app.5353e9637d2157973819.js    25.3 kB       1  [emitted]         app
    static/css/app.53a3604eb4eb76032df4880b50e7b68f.css     191 kB       1  [emitted]         app
           static/js/vendor.6cc76b6429383b900273.js.map     2.9 MB       0  [emitted]         vendor
         static/js/manifest.2ae2e69a05c33dfc65f8.js.map    4.97 kB       2  [emitted]         manifest
                                             index.html  607 bytes          [emitted]

  Build complete.

  Tip: built files are meant to be served over an HTTP server.
  Opening index.html over file:// won't work.
【3】,注意:

如果执行打包命令没反应,将build/check-versions.js中的
// if (shell.which('npm')) {
// versionRequirements.push({
// name: 'npm',
// currentVersion: exec('npm --version'),
// versionRequirement: packageConfig.engines.npm
// })
// }
注释掉

【4】,npm run devnpm run build区别
  • npm run dev是开发环境, npm run build是生产环境, 在开发环境完成代码和测试, build生成的代码用于线上部署。
  • build之后会生成一个dist文件夹,所有的东西都将会打包进里面,部署时只需将dist文件夹部署线上。配置nginx时可指定路径。
【5】,迁移vue项目
  • 从github上拉下来,或者↓
  • 压缩dist,拖拽dist至Linux机,解压dist,所有静态资源都在dist下,包括图片,js,css,字体

二、后端django_restframework

【6】,搭建python环境 (之前的简书有写)
【7】,虚拟环境(之前的简书有写)
【8】,查看django项目,有什么需要修改的
  • DEBUG = False
    ALLOWED_HOSTS = ["10.0.0.11"]

☝上面配置,指定了只允许本ip可访问,根据自己的业务自定义。

  • 一定要【将日志加上】,后面出错时方便排查。
    (error.log位置:/project/django_server/log/error.log)
【9】,迁移django项目(推到github,从git上拉 / 压缩,拖拽,解压)
【10】,解决依赖包
pip freeze >requirements.txt
pip download -rrequirements.txt(不知为何不可行,执行后pip list查看没有,所以用了笨方法,挨个儿pip),
django==1.11.14
django-redis==4.9.0
django-redis-sessions==0.5.6
djangorestframework==3.8.2
redis==2.10.6
uwsgi

三、uwsgi配置

【11】,配置uwsgi(先新建一个project项目总目录,然后再创建ini文件,移进去)

【配置文件一定要写对,否则报错】
vim /project/django_server/uwsgi.ini

[uwsgi]
#使用nginx连接时使用
socket=0.0.0.0:9000
#不用nginx直接当做web服务器使用
#http=0.0.0.0:9000
#项目目录绝对路径
chdir=/project/django_server
#wsgi文件路径,在项目底下
wsgi-file=django_server/wsgi.py
#指定解释器目录
home=/root/Envs/vue
processes=4
threads=2
master=True
pidfile=uwsgi.pid

四、supervisor进程管理工具

【12】,下载、配置 进程管理工具(之前的简书有写)
  • 查看所需配置路径
    /root/Envs/vue/bin/uwsgi
    /project/django_server/uwsgi.ini
  • 配置vim /etc/supervisord.conf
    [program:vue]
    command=/root/Envs/vue/bin/uwsgi --ini /project/django_server/uwsgi.ini

五、配置nginx

【13】,配置nginx,location信息

vi /etc/nginx/nginx.conf

server {
        listen 80;
        server_name 10.0.0.11;
        root /project/dist;     # 打包后的dist目录
location / {
        try_files $uri $uri/ @router;    # 指向下面的 @router否则会出现 404
        index index.html;
        }
# 对应上面的 @router,主要Vue请求并不是真实路径,无法找到文件,需要重定向到 index.html 中,然后交给路由处理
location @router {
        rewrite ^.*$ /index.html last;
        }
location /api {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass 10.0.0.11:9000;
        }
}

六、启动服务

【14】,启动 nginx ,supervisord
  • /usr/sbin/nginx -s reload(如果没有启动就启动,启动了就重启)

  • supervisord -c /etc/supervisord.conf

  • 确保 supervisoruwsgi 正常管理。

  • 确保 nginx 配置正常,且正常开启。

  • netstat -tunlp查看 80端口 和 9000端口 是否运行,如果9000没有运行,输入supervisorctl进入交互模式,查看为何没打开。

七、访问

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