博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Travis CI 部署遇到的问题
阅读量:6239 次
发布时间:2019-06-22

本文共 2895 字,大约阅读时间需要 9 分钟。

最近研究nuxt服务端渲染的时候,看到nuxt的几种部署方式,因为nuxt打包的静态文件可以直接放在GitHub上面,然后 TravisCI跟GitHub又很亲切,就选择了TravisCI部署。然后就走上了研究TravisCI的不归路。

Travis CI 部署到GitHub项目gh-pages分支上,打开页面发现引用资源404?

在研究nuxt的这一篇文章 的时候,所有操作都按照文章提示来,发现怎么部署都失败,然后仔细看自己页面资源引用的路径,并没有实现文章中的router base 的路径配置。

router: {    base: '/
/'}

然后自己反复上传验证,终于发现问题。在官网给出的TravisCI配置中:

language: node_jsnode_js:  - "8"cache:  directories:    - "node_modules"branches:  only:  - masterinstall:  - npm install  - npm run generate # 这个需要改为npm run generate:gh-pagesscript:  - echo "Skipping tests"deploy:  provider: pages  skip-cleanup: true  github-token: $GITHUB_ACCESS_TOKEN  # Set in travis-ci.org dashboard, marked secure https://docs.travis-ci.com/user/deployment/pages/#Setting-the-GitHub-token  target-branch: gh-pages  local-dir: dist  on:    branch: master

需要把install中的 npm run generate 改为npm run generate:gh-pages,这样就可以走gh-page分支的打包了。不知道是不是还有别的解决方法,刚接触也不是特别了解。

Travis CI 如何部署服务器?

可以参考这篇文章

Travis CI 部署服务器如何实现免密登录?

搞完GitHub Pages静态部署,然后就想部署服务端,毕竟接触nuxt的目的就是实现服务端渲染。

然后找了一个比较坑的文章... 每次Travis部署后,都要求输入一个密码。卡在了免密登录的地方卡了很久很久... 在此多谢 的帮忙,很耐心的帮我解决了问题。

其实免密登录跟trvais并没有什么关系,原理就是私钥公钥的加密解密(有兴趣可以自行去搜索),只要你本地 ssh连接实现免密登录,那Travis部署也可以的。

需要在终端输入:

ssh-copy-id username@your-server-ip

ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利,这时候只要你终端输入:

ssh username@your-server-ip

再次连接就不用再输入密码啦~

Travis CI 部署怎么启动 nuxt服务,node服务?

下面到了最关键的时刻,部署成功后after_success:怎么处理?

对于一个前端(没怎么接触过后台)来说,确实一脸懵逼,要操作 一些常用Linux命令。
下面我就总结几个我碰到的:

部署nuxt静态资源到服务器。

因为nuxt静态资源是打包到 /dist 文件夹下的,所以我们只需要把/dist文件夹 拷贝到服务端对应的文件夹即可。

after_success:- rsync -az --delete ./dist/* root@123.123.123.123:/data/html/nuxt # copy dist文件夹下的所有文件

部署nuxt服务端渲染应用到服务器。

打包对应文件夹是.nuxt 文件,但是需要服务端启动服务,所以需要安装各种依赖以及启动配置。

所以需要将 .nuxt nuxt.config.js package.json static 文件或文件夹都拷贝到服务器上,并对其安装依赖,启动服务。

after_success:- rsync -az --delete .nuxt nuxt.config.js package.json root@123.123.123.123:/data/ssr- ssh root@123.123.123.123 'cd /data/ssr/ && npm install && npm run prd'

npm run prd采用pm2启动服务,保证服务关闭终端也可以运行。

我的package.json文件配置:

"scripts": {    "prd": "pm2 restart ssr || pm2 start npm --watch --name ssr -- run start",  },

部署node应用服务器。

对于需要拉取远程代码的工程,现在服务器 git init 初始化,然后指定远程分支,绑定默认分支,就可以直接在ci里 git pull代码了。

after_success:- ssh root@123.123.123.123 'cd /data/node/ && git pull && npm install && npm run prd'

package.json文件 npm run prd 配置:

"scripts": {    "prd": "pm2 start bin/www",  },

Travis CI 部署服务器,出现 npm command not found.

这个很奇怪,自己ssh登录服务器的时候,直接 npm -v是可以直接打印出来版本信息的。

但是CI 自动部署的时候就找不到命令,自己也不是特别清楚这环境配置这方面的东西,只好采用指定npm变量的方法。export PATH=/root/nvm/versions/node/v10.15.1/bin:$PATH采用你当前服务器安装的版本,可以去对应目录看下。

after_success:-  ssh root@123.123.123.123 'cd /data/node/ && git pull && export PATH=/root/nvm/versions/node/v10.15.1/bin:$PATH && npm install && npm run prd'

Travis CI部署阿里云服务器打不开。

部署成功后,发现打开页面并没有效果。

首先要配置好 nginx 转发,然后需要在阿里云平台,打开你的服务器信息,找到防火墙,开启对应的端口就可以访问啦。

转载地址:http://ngzia.baihongyu.com/

你可能感兴趣的文章
Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)
查看>>
WPF TextBox/TextBlock 文本超出显示时,文本靠右显示
查看>>
C++的函数对象优于函数指针地方
查看>>
虚拟机上不能使用CUDA
查看>>
Vue + Koa 搭建 ACM OJ
查看>>
java基础学习_基础语法(下)02_day06总结
查看>>
和平之翼代码生成器 SMEU 版 4.0.0 RC 宝船候选版发布
查看>>
浅谈Base64编码算法
查看>>
2016中国“互联网+”千人论坛 ——“互联网业务与技术”分论坛成功举办 聚焦大数据与人工智能...
查看>>
SAP上阿里云FAQ
查看>>
Java中设置Session过期时间(Spring Boot)
查看>>
电子发票时代来临,喜报销打造全新报销方式
查看>>
「镁客·请讲」智周万物何小祥:深挖用户需求,打造一个完整的物联网仓储系统...
查看>>
Ubimax面向企业推出Frontline平台,提供完整AR解决方案
查看>>
2017VR创新创业大赛:500万奖金创VR赛事最高纪录
查看>>
叮!您收到一份超值Java基础入门资料!
查看>>
数据库入侵的六大手段与防范措施(一)
查看>>
互联网广告的进化之路-技术篇【计算广告】
查看>>
记一次Redis超时排查
查看>>
浅谈GPU虚拟化技术(五):GPU图形渲染虚拟化的业界难题-VDI的用户体验
查看>>