最近在研究nuxt服务端渲染的时候,看到了nuxt的几种部署方式,因为nuxt打包的静态文件可以直接放在GitHub上,而且TravisCI对GitHub很友好,TravisCI就可以了部署被选中。然后就踏上了研究TravisCI的不归路。TravisCI部署到GitHub项目的gh-pages分支,打开页面发现引用资源404?在学习nuxt这篇《如何部署至GitHub Pages?》的时候,所有的操作都是按照文章提示进行的,发现没有部署失败,然后仔细查看了我的页面资源引用的路径,并没有实现routerbase路径文章中的配置。router:{base:'//'}然后自己反复上传验证,终于找到问题所在。在官网给出的TravisCI配置中:language:node_jsnode_js:-"8"cache:directories:-"node_modules"branches:only:-masterinstall:-npminstall-npmrungenerate#这个需要改成npmrungenerate:gh-pagesscript:-echo"Skippingtests"deploy:provider:pagesskip-cleanup:truegithub-token:$GITHUB_ACCESS_TOKEN#在travis-ci.org仪表盘中设置,标记为securehttps://docs.travis-ci.com/user/deployment/pages/#Setting-the-GitHub-tokentarget-branch:gh-pageslocal-dir:diston:branch:master您需要将安装中的npmrungenerate更改为npmrungenerate:gh-pages,这样就可以拿gh-page分支的打包了。不知道有没有其他的解决办法,刚接触的时候也不是很了解。TravisCI是如何部署服务器的?可以参考这篇TravisCI自动化部署博客TravisCI部署服务器如何实现免密码登录?完成GitHubPages的静态部署后,我想部署服务器。毕竟接触nuxt的目的就是为了实现服务端渲染。然后发现一篇比较可怜的文章……每次部署Travis,都要输入密码。卡在免密码登录的地方好久了。。。感谢@X1nFLY的帮助,耐心的帮我解决了问题。其实免密登录跟trvais没有关系。原理就是私钥和公钥的加解密(感兴趣的可以自行搜索)。只要你本地的ssh连接启用免密码登录,Travis部署也是可以的。需要在终端输入:ssh-copy-idusername@your-server-ipssh-copy-id将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也可以让你要有访问远程机器Home,~./ssh,和~/.ssh/authorized_keys的权限,这时候只要在终端输入:sshusername@your-server-ip重新连接,就不用了不用再输入密码了~TravisCI部署如何启动nuxt服务,nodeServe?最关键的时候到了,after_success:部署成功后如何处理?对于一个前端(没怎么接触过后台)来说,确实很别扭,需要操作一些常用的linux命令。下面我将我遇到的几个事情总结一下:部署nuxt静态资源到服务器。因为nuxt静态资源是打包到/dist文件夹下的,所以我们只需要将/dist文件夹复制到服务器上对应的文件夹下即可。after_success:-rsync-az--delete./dist/*root@123.123.123.123:/data/html/nuxt#复制dist文件夹下的所有文件,部署nuxt服务端渲染应用到服务器。打包对应的文件夹是一个.nuxt文件,但是服务端需要启动服务,所以需要安装各种依赖和启动配置。所以需要将.nuxtnuxt.config.jspackage.json静态文件或文件夹复制到服务端,并在其上安装依赖,启动服务。after_success:-rsync-az--delete.nuxtnuxt.config.jspackage.jsonroot@123.123.123.123:/data/ssr-sshroot@123.123.123.123'cd/data/ssr/&&npminstall&&npmrunprd'npmrunprd使用pm2启动服务,保证即使服务关闭,终端也能运行。我的package.json文件配置:"scripts":{"prd":"pm2restartssr||pm2startnpm--watch--namessr--runstart",},部署节点应用服务器。对于需要拉取远程代码的项目,现在初始化服务器gitinit,然后指定远程分支,绑定默认分支,在ci中直接gitpull代码即可。after_success:-sshroot@123.123.123.123'cd/data/node/&&gitpull&&npminstall&&npmrunprd'package.jsonfilenpmrunprdconfiguration:"scripts":{"prd":"pm2startbin/www",},TravisCI部署服务器,出现npmcommandnotfound。这很奇怪。使用ssh登录服务器时,可以直接使用npm-v打印出版本信息。但是自动部署CI的时候找不到命令,而且我对环境配置也不是特别清楚,只好采用指定npm变量的方式。exportPATH=/root/nvm/versions/node/v10.15.1/bin:$PATH采用你当前服务器安装的版本,你可以到对应目录下查看。after_success:-sshroot@123.123.123.123'cd/data/node/&&gitpull&&exportPATH=/root/nvm/versions/node/v10.15.1/bin:$PATH&&npminstall&&npmrunprd'TravisCI部署的阿里云服务器打不开。部署成功后,发现打开页面没有任何效果。首先你需要配置nginx转发,然后你需要在阿里云平台上打开你的服务器信息,找到防火墙,打开对应的端口进行访问。