概念

想让应用正式地提供服务,需要在一台服务器上去运行。现在一般会选择使用云服务器,它会提供一些计算能力来运行应用,还提供了带宽,允许用户通过网络来使用我们的应用。云服务器并不是一台真实的设备,服务商会在云端通过一群的机器共同来提供一些计算能力,我们在他们里购买的只是一小块计算能力。一点 cpu、一点内存、再加上一点带宽。云服务器从几十到几万的都有,cpu、内存、带宽就是影响价格的主要因素,用户越多需要花在云服务器上的钱也就越多。购买的云服务器一般会提供两个 ip 地址,一个是公网一个是内网,服务器通过公网 ip 可以对外提供网络服务,你也可以通过这个 ip 远程登录管理这台服务器。同处于一个私有网络的服务器他们之间可以通过内网 ip 来交换数据,因为走的内网所以速度会很快。比如你有两台服务器,一台提供应用服务,一台提供数据服务,应用服务和数据服务交换数据的时候可以通过内网 ip 在内网完成。


域名备案

购买的时候需要注意服务器的地域,如果选择的是中国大陆的服务器,就要保证以后指向这台服务器的域名是备过案的,备案需要提交一些信息然后在当地的职能部门进行审核。通过后会给你一个备案号,只有备过案的域名才能指向中国大陆的服务器。
时间:两三周


云服务器的 ip 地址与安全组

购买云服务器后,可以复制一下公网 ip,在终端使用 ping 命令测试一下。ping 会向地址的设备上面发送一些数据包,设备收到数据包会做出一些回应。

安全组:在安全组里可以配置一些访问规则。

快照:相当于备份。在出现问题的时候可以快速恢复。


域名

通过 ip 地址可以访问到服务器上面运行的服务,不过 ip 地址太难记了,所以需要申请一个域名,让它指向服务器的 ip 地址,这样就可以通过域名来访问在服务器上运行的服务了。域名要在域名服务商那边注册,服务商尽量选大一点的服务商,比如阿里云。每年要交一定的费用,一般是几十块钱,如果不及时缴费,可能会被回收。域名在全世界都是唯一的,所以你想注册的那个域名可能已经被别人注册了。域名要想指向中国大陆的服务器,就必须要给域名做一个实名认证,然后再申请一个备案。但不是所有的域名后缀都可以做实名认证,所以在注册域名之前最好提前查询一下。

备案:备案的时候需要填写一些信息,上传网站管理员的照片等等,不同的省份对域名备案的要求都是不一样的。在哪购买服务器就选择在哪里备案,比如在阿里云买的,就在阿里云申请备案。更换服务器的服务商就要更改备案信息。我们可以使用公司名义备案也可以使用个人名义备案。但是要提前做好决定,因为域名备案非常重要,比如要接入微信或支付宝支付,就必须得以公司名义备案。
域名常见后缀: .com .net .cn 等等
解析:有了域名后需要添加一条 dns 解析记录。解析好后可以在终端用 ping 命令测试一下。


远程连接服务器

要管理云服务器需要先远程登录到这台服务器。可以使用 ssh 这个工具。先复制一下公网 ip,在终端执行,然后根据提示操作,成功后就登录到服务器了,root 表示超级管理员,如果要登录其他用户,换成其他用户名即可。

1
ssh root@121.41.130.250

添加新用户

在 linux 操作系统里面添加用户可以在终端输入

1
adduser chenxunan

设置密码:

1
passwd chenxunan

将这个用户赋予一定的管理员权限:

1
gpasswd -a chenxunan wheel

切换到 cxn 这个用户的身份:

1
su chenxunan

要行使管理员权限的时候 在命令前面输入 sudo


为用户生成秘钥对

1
ssh-keygen

一路回车后就可以在当前用户的主目录下生成一段秘钥,查看.ssh 目录可以

1
ls -la ~/.ssh

用秘钥的方式验证登录

每次登录都需要输入密码,可以使用秘钥的方式来验证身份,这样登录的时候就不需要输入密码了,只需要将生成的公钥放到服务器上的某一个用户主目录下面的特定文件里面就行了。

  1. 查看本地电脑下的公钥文件内容并复制
1
cat ~/.ssh/id_rsa.pub
  1. 在用户主目录下面
1
2
cd .ssh
vi ~/.ssh/authorized_keys 按一下i 进入编辑模式 把复制的内容放到这里面 esc退出编辑模式 输入 :wq 保存并退出
  1. 限制这个文件的权限,600 代表只给这个文件的拥有者读取和写入权限,其他人没有任何权限
1
chmod 600 ~/.ssh/authorized_keys

禁用密码与 root 用户登录

先用普通用户登录到服务器

1
2
3
4
5
6
ssh chenxunan@121.41.130.250
sudo vi /etc/ssh/sshd_config
/PermitRootLogin yes
找到后把后面的yes修改成no,然后退出,重载sshd
sudo systemctl reload sshd
exit

再用 root 登录就无法登录了