最近研究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
再次連接就不用再輸入密碼啦~