云计算和大数据 2019-06-27
最近在学习微信开发,为了方便调试以及后期部署决定买一个轻量的服务器和域名折腾一下。毕竟对于以后的学习来说,一个域名和一个云服务器还是很必要的。大概折腾了一天吧,终于把这个环境搭好了,不过安全方面可能还有很大问题,现在在这篇文章里记录一下目前的成果,对于和我一样的不大懂 Linux 操作又想折腾云服务器的小白来说还是很有参考价值的。
因为一直对阿里这个企业有好感,我就毫不犹豫地选择了阿里云这一平台。此外,为了降低学习的成本,选择了阿里云里可以说最便宜的轻量应用服务器(后来听说还有学生版,感觉亏了一波)。
服务器的详细配置如下(对于我这种为了学习而使用的服务器来说足够了):
- 系统镜像:CentOS 7.3 - CPU:1 核 - 内存:1 GB - 带宽:1 Mbps - SSD:20 GB
购买之后,就可以进入控制台了,这里建议大家把服务器的公网域名在记事本上记录一下,方便以后查阅。
在控制台中进入远程登录服务器页面下,进入客户端选项卡,选择客户端使用账号密码进行连接,点击设置密码,即可设置登录服务器时的 root 用户登录密码。设置成功后即可利用该密码登录远程云服务器。
打开本地终端,使用 root 用户登录云服务器:ssh root@[云服务器 ip 地址]
之后在提示输入密码的命令下,输入上一步中在阿里云控制台中配置的 root 用户登录密码,正确输入后,即可进入云服务器。
在命令行下,输入 exit
即可登出云服务器。
那每次都要输入服务器的 ip 地址,无疑大大增加了记忆成本,这里我们通过修改 .zshrc
文件的配置,来设置快捷命令。
首先在命令行下,执行命令 cd && vi .zshrc
打开 .zshrc
文件。
修改 Example aliaes
部分。
在注释后输入 alias ssh_aliyun="ssh root [阿里云服务器 ip 地址]"
修改后,别忘了在命令行中启用这个命令,执行 source .zshrc
之后再执行 ssh_aliyun
命令,就可以看见命令行中直接提示你输入密码了,是不是简便许多?
当然这还不算终极的解决方案,之后我们会用 ssh-key
的方法,直接免密码登录。
刚买下来的云服务器是没有普通用户角色的,只有一个 root 用户,由于 Linux 下的 root 用户权限很高,很容易误操作,所以我们需要在云服务器上创建一个新用户,之后的项目部署操作等等都通过这个用户完成。
首先登录阿里云服务器,执行如下命令:
adduser [你希望创建的用户名]
— 添加用户
passwd [上一步创建的用户名]
— 为新用户设置登录密码(需要重复输入两次)
到此,我们的新用户就创建出来了。但是这个就像我们的新员工一样,刚来报道,权限较低。只可以在本用户 home
下有完整权限,其他目录则需要授权。而经常需要 root 用户的权限,这时候可以使用 sudo
命令暂时化身为 root 来操作。新创建的用户并不能使用sudo命令,需要给他添加授权。
CentOS 下 sudo
命令的授权管理是放在 sudoers
文件中的。
该文件路径通过下图命令可以查到是 /etc/sudoers
,且我们可以发现,只有 root 用户对该文件有操作权限(默认是只读权限)。
为了修改这个文件,需要进行权限修改 chomod -v u+w /etc/sudoers
修改权限后,进入 vim 编辑器打开该文件 vi /etc/sudoers
。
找到如下位置进行修改,并保存退出:
## Allow root to run any commands anywher root ALL=(ALL) ALL [你创建的用户名] ALL=(ALL) ALL #这个是新增的用户,追加这一行
保存后别忘了把该文件的写权限收回 chmod -v u-w /etc/sudoers
测试,新开一个终端窗口输入命令ssh [你新建的用户名]@[阿里云服务器 ip 地址]
之后根据提示输入新用户的密码,即可使用新用户进行登录。
因为我们之后不需要利用 root 登录了,所以你可以把之前配置的.zshrc
文件的快捷命令,更改为使用新用户登录时候的命令。
注:之后我们所有在服务器上的操作,都是登录的这个新用户进行的
为了让我们的登录过程省去输入密码这一步骤,我们使用 ssh-key
的方式来完成登录操作。
首先在本地终端上查看是否有 ssh-key
如果进入这个目录后,目录内有 id_rsa
和 id_rsa.pub
两个文件,说明你已经生成过了 ssh-key
。
注意:如果已经配置过了就不需要重新配置一遍,否则会连不上之前配置过的一些 git 仓库
如果没有这个目录的话,在本地终端家目录下输入ssh-keygen -t rsa -b 4096 -C '[你的某个邮箱]'
就可以生成一对 SSH 秘钥了。
本地生成秘钥后,需要把 SSH 代理开起来,执行命令eval "$(ssh-agent -s)"
最后需要把 SSH key 加入到代理中ssh-add ~/.ssh/id_rsa
登录阿里云服务器,在家目录下,同样生成一对 SSH 秘钥。
之后在 ~/.ssh
目录下新建一个授权文件 authorized_keys
在这个文件中把刚才在本地生成的 id_rsa.pub
文件中的内容复制过来,保存并退出,这样服务器就持有了某台电脑的公钥,那么这台电脑就可以来登录这个服务器了,而且不需要输入密码的呦。
啊对了,ssh
对目录的权限是有要求的,我们还需要把 authorized_keys
的权限修改一下 chmod 600 ~/.ssh/authorized_keys
。
之后启用代理 eval "$(ssh-agent -s)"
添加 SSH key ssh-add ~/.ssh/id_rsa
大功告成!
至此我们就可以通过在本地终端下输入一句命令就可以登录到远程服务器了~
在完成远程连接服务器以后,我们就完全的获取到了”自己家的钥匙了“,接下来就要好好地”装修”一下这个家了。
在服务器上配置 Node 环境和在本地上配置环境大同小异。这里我们选用 nvm 来管理 Node 版本。按照文档中的指示进行 nvm 的安装。
安装成功后,执行 nvm --version
测试是否安装成功。
如果报错没有该命令,可以新开一个命令行窗口,登录到远程服务器,再次测试,不出意外的应该 ok