手摸手教你从购买服务器到部署第一个Node项目
写在前面
前端工程师应不应该了解一些运维方面的知识呢,我的个人看法是有时间有精力当然可以学习一下,因为当我们做出很cool的东西后总不可能一直运行在localhost下自己看吧~买个服务器将自己的项目部署上去,让身边的小伙伴看到你很cool的项目。
Step By Step
购买服务器
首先感谢各大厂商对大学生的优惠政策,让我们花一顿饭钱就能拥有一个性能不错的服务器,这里我选择的是阿里云的服务器ESC,系统选Ubuntu 14.04 64位,安全设置一定要选设置密码,然后输入登录此台服务器的密码,详细配置如下图:
登录服务器
服务器买好之后,在控制台下找到服务器公网Ip复制下来,打开自己电脑(local)下的终端,输入ssh root@公网Ip,首次登录需要键入yes以确认,然后输入购买服务器时设置的root密码,输密码的时候光标是不会动的,但是并不是你没输入,只是linux下隐藏了你的键入记录,如图:
如果你有zsh
如果我们每次登录服务器都要手动键入ssh root@公网Ip会是件很麻烦的事情,聪明的程序员怎么会忍受这种重复枯燥的任务呢?
- 我们在自己电脑(local)下更改zshrc的文件,设置一个快捷指令,local下终端输入
vi .zshrc,然后光标移动到最下面 - 输入一段
alias ssh_ser3_root="ssh root@公网ip" - 如图所示,保存退出,然后输入
source .zshrc让.zshrc生效 - 然后你就可以通过输入ssh_ser3_root的快速登录到你的服务器。
- emmmmm,如果你不熟悉vim编辑器的话,还是建议你google一下vim的基本操作。

new一个马仔
在服务器下每次都用root访问是很危险的,因为root在服务器下的权限是很大的,稍微不注意root就可能删库跑路了,这个时候就需要用一个没那么大权利的用户来访问服务器,也就是找一个马仔给你做事,既能让他做一些基本的操作,又能保证系统不被玩坏,岂不是美滋滋~
- 用root登录服务器,在服务器(server)终端键入
adduser 马仔账户添加一个账户(我的马仔叫vince),这个账户就是你的马仔账户,然后按照系统提示,给马仔账号设置密码,然后一路回车。 - 这个时候马仔是没有什么权限的,但是有时候又需要马仔做一下需要权限的事情,这个时候我们就给马仔配置一些权限,在server中输入
gpasswd -a 马仔账号 sudo,这个时候马仔就是有权限的马仔了。 - 然后我们具体给马仔什么权限呢?输入
sudo visudo,找到如图位置,输入马仔账号 ALL=(ALL:ALL) ALL,具体是什么权限我也不太清楚,总之够用了,感兴趣的小伙伴可以深入Linux的学习,退出编辑。

- 这个时候,你就可以用你的马仔账号登录你的服务器了,试一试,在local终端输入
ssh vince@公网ip登录服务器,输入你设置马仔的密码,这个时候就可以安全地用马仔账号登录服务器啦,同样按照上一步设置zshrc快捷指令,省去多余的键入。
用ssh来避免一万次的输密码操作
如果每次登录服务器都要输入一段长长的密码,这种重复性的操作聪明的程序员是无法接受的,那么我们利用ssh来无药登录服务器。
- 马仔账号登录服务器,输入
ssh-keygen -t rsa -b 4096 -C "你的邮箱"生成server下的ssh,一路回车,如果出现下面结果,那就说明ssh生成成功。
- 输入
eval "$(ssh-agent -s)"将ssh代理运行起来,然后在键入ssh-add ~/.ssh/id_rsa将id_rsa加入到ssh服务中。 - 这个时候我们自己电脑想不输入密码登录服务器,那么就要在服务器下将我们自己电脑(local)加入“诚信列表”,进入.ssh文件夹键入
vi .ssh/authorized_keys创建这么一个诚信列表authorized_keys。 - 回到我们自己的电脑(local),查看自己电脑.ssh下的id_rsa.pub,复制下来,粘贴到server里面的authorized_keys去。
- 做到这里还没完,我们将authorized_keys授权,输入
chmod 600 authorized_keys,然后键入sudo service ssh restart重启ssh服务。 - 现在我们再次在local下登录这个服务器,就不再需要输入密码了,
安装Node环境
- 用马仔账号登录服务器,安装软件前最好键入
sudo apt-get update更新一下,然后键入sudo apt-get install vim openssh build-essential libssl-dev wget curl git安装这些常用软件。 - 安装node版本管理工具nvm,到nvm下获取下载链接,键入
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash,安装nvm - nvm安装好后,启动nvm的时候发现无法启动,看err发现nvm建议我们新开一个终端来执行,那我们就再次登录服务器来启动nvm。
- 键入
nvm install v6.9.5来安装node版本,安装完毕后,键入nvm use v6.9.5使用6.9.5版本的node,我们默认使用这个版本的话就键入nvm alias default v6.9.5来设置默认node版本,键入node -v查看node安装是否成功。 - npm在国内下载是非常慢的,我们切换npm的淘宝源,键入
npm --registry=https://registry.npm.taobao.org install -g npm - 下载源改变后,我们键入
echo fs.inotify.max_user_watches==524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p确保稳定性。
这个时候我们node配置好了,就可以做一些你一直想做的事情了,部署一个别人可以访问的项目吧。在根目录文件下键入vi app.js,然后粘贴一下代码:
1 | const http = require('http'); |
这段代码就是简单的建立一个http服务,访问端口是3004,用node启动它node app.js,然后回到我们电脑浏览器,输入公网ip:3004,但是…发现是访问不进去的,为什么呢?
因为阿里云的服务器非常安全,在你买服务器的时候,他就默认设置好了安全组,这个时候我们进入阿里云服务器,查看服务器的安全组,如图:
然后我们点击配置规则,然后进入如下界面,点击快熟创建规则,然后如图所示,我们之前部署的那个app.js是部署在3004端口下的,所以我们将3004列入可访问规则,3004/3004是表示3004这一个端口开放,如果我们设置3000/3100的话,那就是从3000端口到3100端口都开放访问,但是这样做并不安全,一般我们需要用哪些端口就开哪些端口。
好啦,然后我们再次访问我们刚刚那个地址,这个时候就发现可以访问了,惊不惊喜,

是不是觉得自己快要成为全栈工程师了?哈哈,那是不存在的,距离全栈还有很久很久很久。。。
总结
总算是写完了,为啥要写这篇文章呢?因为配置环境确实很麻烦,而且一个步骤都不能少不能乱,写这篇文章的时候我已经配置第四遍了,才能记下来所有的步骤并且总结每个步骤怎么操作才最安全快捷,希望这篇文章能帮助您上线自己很cool的项目。
做到这里并没有完成,当更新迭代速度快时候,这样部署效率显然太低,请关注我的另外一篇关于PM2快速部署的博文~
nice to meet you :)