最近研究nuxt服务端渲染的时候,看到nuxt的几种部署方式,因为nuxt打包的静态文件可以直接放在GitHub上面,然后 TravisCI跟GitHub又很亲切,就选择了TravisCI部署。然后就走上了研究TravisCI的不归路。
Travis CI 部署到GitHub项目gh-pages分支上,打开页面发现引用资源404?
在研究nuxt的这一篇文章 《如何部署至GitHub Pages?》的时候,所有操作都按照文章提示来,发现怎么部署都失败,然后仔细看自己页面资源引用的路径,并没有实现文章中的router base 的路径配置。
router: {
base: '/<repository-name>/'
}
然后自己反复上传验证,终于发现问题。在官网给出的TravisCI配置中:
language: node_js
node_js:
- "8"
cache:
directories:
- "node_modules"
branches:
only:
- master
install:
- npm install
- npm run generate # 这个需要改为npm run generate:gh-pages
script:
- 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 自动化部署博客
Travis CI 部署服务器如何实现免密登录?
搞完GitHub Pages静态部署,然后就想部署服务端,毕竟接触nuxt的目的就是实现服务端渲染。
然后找了一个比较坑的文章... 每次Travis部署后,都要求输入一个密码。卡在了免密登录的地方卡了很久很久... 在此多谢 @X1nFLY 的帮忙,很耐心的帮我解决了问题。
其实免密登录跟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
再次连接就不用再输入密码啦~