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

本文共 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://grqlx.baihongyu.com/

你可能感兴趣的文章
JS写的漂亮只是一方面,你可不要忽视浏览器的兼容性呀!:P
查看>>
批处理作业调度-回溯法
查看>>
12.4. 包含网页
查看>>
Jenkins实现Android自动化打包
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.9
查看>>
[数学故事]国王的重赏
查看>>
Selenium2+python自动化63-简易项目搭建
查看>>
Managed Debugging Assistant 'PInvokeStackImbalance' has detected a problem in 解决方案
查看>>
centos7 安装mysql5.7.11注意事项
查看>>
[20150727]''与NULL.txt
查看>>
上海往事之教会宝宝学游泳
查看>>
SAP的系统审计以及SM19的使用
查看>>
你真的会玩SQL吗?冷落的Top和Apply
查看>>
SharePoint 2013 图文开发系列之创建内容类型
查看>>
cookie 简介
查看>>
ios和android内嵌h5页面联调小结
查看>>
PHP SG扩展管理Superglobals
查看>>
两种jdk版本的多个tomcat按windows服务的安装问题的解决
查看>>
为IE创建更好的XMLHttpRequest对象
查看>>
java 图片 批量 压缩 +全部压缩
查看>>