当前位置: 首页 > 后端技术 > Node.js

全栈工程师之路——服务端自动部署

时间:2023-04-03 12:18:26 Node.js

前言作为前端工程师,不仅要会写前端页面,还要懂前端工程,各种库,各种框架,以及各种衍生语言。.如果你想成为一名全栈工程师,你必须学习Node.js,学习在线服务器部署和发布。准备好避免个人在云服务器上的支出。我实验的方式是本地Vmware虚拟机(安装ubuntu16.04)和本地windows平台(win7)。1在Vmware虚拟机上安装ubuntu(网上找的教程),调整窗口:2在本地win7上安装xshell启动当然,如果你是用Node.js工作的,就必须在虚拟机上配置好NodeJs环境.在虚拟机上搜索Terminal,打开命令OK,一条一条输入命令。1升级包sudoapt-getupdate2安装一些必要的工具sudoapt-getinstallgitvimopensslopenssh-serverbuild-essentiallibssh-devwgetcurlopenssh-server就是我们通过ssh连接使用的。curl是Linux下的传输工具git是安装我们Node.js源码需要的版本工具3安装nvmcurl-o-https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh|bash4安装nodejsnvminstallv8.1.2nvmusev8.1.25关闭防火墙(因为后面我们要ssh到这个虚拟机,所以要关闭防火墙)sudoufwstop6安装yarnvue-clipm2curl-sShttps://dl。yarnpkg.com/debian/pubkey.gpg|sudoapt-keyadd-echo"debhttps://dl.yarnpkg.com/debian/stablemain"|sudotee/etc/apt/sources.list.d/yarn。listsudoapt-getupdate&&sudoapt-getinstallyarnnpminstallvue-clipm2-gyarn是一个包管理工具,相当于npmvue-cli是一个Vue命令行工具pm2是一个Node服务管理工具,用于测试是否安装了Node虚拟机在虚拟机上创建一个server.js:viserver.js将代码复制到其中:然后按:wq!保存上次测试:pm2startserver.js如果看到如下状态,说明启动成功。本地windows(win7)连接虚拟机1,修改sshd_config(保证通过密码登录)vim/etc/ssh/sshd_config找到:Authentication:LoginGraceTime120PermitRootLoginprohibit-passwordStrictModesyes修改为:Authentication:LoginGraceTime120PermitRootLoginyesStrictModesyes2虚拟机启动sshsudo服务sshstart3查看ip(记住你的IP)ifconfig4打开xshell输入sshubuntu@192.168.150.129@前面是用户名@后面是IP。用户名必须正确,否则会提示服务器拒绝密码。另外,虚拟机的网络配置是NAT,不用改成bridge。正常情况下,我可以成功链接创建私有仓库。我用的是bitbuket,先去常用的push2Server仓库。然后在本地clone目录下创建一个server.js,代码同上。还有一个ecosystem.json(pm2自动部署需要这个),目录结构如下:ecosystem.json文件的配置很重要。{“应用程序”:[{“名称”:“测试”,“脚本”:“server.js”,“env”:{“COMMON_VARIABLE”:“true”},“env_production”:{“NODE_ENV”:“生产"}}],"deploy":{"production":{"user":"ubuntu",//注1:user必须是你的ubuntu的名字"host":"192.168.150.129",//注2:ip保证正确"port":"22",//端口保证正确"ref":"origin/master","repo":"git@bitbucket.org:YellMan/push2server.git",//注3必须以git@开头..不要使用https开头的"path":"/home/ubuntu/www/testproject/production",//注4目录最好是绝对路径"ssh_options":"StrictHostKeyChecking=no","env":{"NODE_ENV":"production"}}}}直接看第3点:因为虚拟机需要克隆仓库代码,需要在虚拟机上配置machine,git仓库的key。去bitbuket上的仓库,添加一个key。如何生成密钥见教程:https://confluence.atlassian....$ssh-keygen$cat~/.ssh/id_rsa.pub$pbcopy<~/.ssh/id_rsa.pub最后一步非常重要:到虚拟机上运行:ssh-Tgit@bitbucket.org注4:因为pm2需要在虚拟机上创建这个路径:/home/ubuntu/www/testproject/production。所以要确保testproject和www路径一定要有权限。/home/ubuntu是我的根路径,然后创建一个www目录,然后在该目录下创建一个testproject。在虚拟机上赋予权限:sudochmod777wwwsudochmod777testproject最后将代码提交到远程仓库。发布前配置本地操作:pm2deployecosystem.jsonproductionsetup如果报错,就重试:如果报错:在服务器上配置sshkey所在的私有仓库(见注3)如果出现以下错误:这是因为pm2是全局安装的,路径不在默认路径下。所以需要使用ls命令进行链接。在虚拟机上运行如下命令:whereispm2pm2:/opt/nodejs/bin/pm2sudoln-s/opt/nodejs/bin/pm2/usr/bin/pm2如果报错:同理:ubuntu@ubuntu:~$whereisnodenode:/usr/bin/node/home/ubuntu/.nvm/versions/node/v8.1.2/bin/nodesudoln-s/home/ubuntu/.nvm/versions/node/v8.1.2/bin/node/usr/bin/node最后发布项目pm2deployecosystem.jsonproductionvirtual看是否自动部署成功:恭喜你成功了!以上就是今天分享的内容,感谢阅读,欢迎大家留言交流。