@@ -11,16 +11,14 @@ tags:
---
<!-- # 云服务器入门指南 -->
# 云服务器入门指南
< a name = "4lA6Y" ></ a >
## 前言
各大厂商持续发力云计算,上云的门槛也越来越低。获取云服务器的门槛越来越低,但是真正使用好云服务器的难度一直都很高。本文旨在为新上云的小白提供方向性的指引并引导入坑 : )
< a name = "7EZ9O" ></ a >
## 云服务器相关的几个概念
< a name = "8sCl1" ></ a >
### 服务器的操作系统
主要分为两大阵营: Windows Server和Linux Server。前者一般自带可视化界面, 基本兼容平时使用的exe程序, 某种程度上也可以作为“云电脑”使用。后者一般不自带图形化界面, 操作都通过特定命令完成, 上手难度较高, 但配置各种开发环境、安装各类高级工具比win平台更容易。没有Linux基础的用户建议先在本地建立虚拟机练习。
@@ -30,14 +28,14 @@ Linux Server主要的两个阵营为Debian系、RedHat系。主要的发行版
- RedHat系: RedHat, CentOS, Fedora
对于初学者来说,最明显的区别在于前者使用 `apt install xxx` 来安装软件,而后者是通过 `yum install xxx` 来安装。
< a name = "VUFQF" ></ a >
### 公网IP
IP可以理解为一台设备在互联网世界中的门牌号和地址, 相当于知道某个具体的地址就能发快递包裹。IP分为公网IP和内网IP。顾名思义, 内网IP一般用于公司或学校内部。一般来说, 只知道一台设备的内网IP的情况下并不能准确定位这台设备, 就类似于只知道你的朋友的名字, 并不能直接给他寄快递, 你必须要知道他学校/单位/家的地址才行。
服务器拥有公网IP的好处在于, 你可以直接通过这个IP定位到你的服务器, 相当于你的服务器在互联网世界中拥有了响当当的名号, 只要说出这个名号, 互联网世界的公民都能知道他, 给他发消息。
_*此处公网内网IP的叙述仅适用于IPv4地址。更多关于IPv4地址和IPv6地址的相关信息参见文末扩展阅读。_
< a name = "oWycK" ></ a >
### 端口
端口的英文为port, 有港口的意思。一般来说, 一台设备不同的端口运行着不同的服务, 我们可以很好的控制特定端口的开放与关闭, 从而控制不同的服务是否对外开放, 正如开放一个通商口岸。常见的服务端口有 `HTTP 80` `HTTPS 443` `DNS 53` `SSH 22`
@@ -45,8 +43,9 @@ _*此处公网内网IP的叙述仅适用于IPv4地址。更多关于IPv4地址
一个服务也可能不是仅仅通过一个端口提供服务, 他可能会将一个大的功能拆分为几个子功能, 通过不同的端口与外界通讯。如FTP, SMB等。你可以通过关闭指定端口来详细控制特定服务。当然如果你想想外面提供像FTP这样通过多个端口与外界通讯的端口, 就要注意要确保他使用的所有端口都要设置为开放才能保证外界的正常访问。
_*FTP是一种文件传输协议, 你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个FTP服务器上。_ < br /> _*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
< a name = "daIMz" ></ a >
_*FTP是一种文件传输协议, 你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个FTP服务器上。_
_*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
### 防火墙
防火墙( Firewall) 某种程度上是控制本机与外界通讯的工具。下面以几个具体的实例来介绍下防火墙:
@@ -55,8 +54,8 @@ _*FTP是一种文件传输协议, 你可以在某些电影资源的下载链接
- 公司有一台服务器搭载了一个仅面向公司员工的网站, 希望仅允许公司内的员工访问。而公司内员工的内网IP个格式为192.168.*.*, 那么就可以在防火墙中设置, 仅允许来自IP为192.168.*.*的设备访问这台服务器的80端口, 其他一律禁止
- 近期互联网上流行一种病毒X通过计算机的1234端口感染其他机器。那么为了保护本机不受病毒影响, 你可以在防火墙中设置关闭1234端口, 禁止任何来源访问1234端口, 从而将病毒X阻挡在防火墙外。
**注意: 对于云服务器来说, 可能会存在多重防火墙。一般Linux系统自身会有一套防火墙( firewalld/ufw等) , 云服务商会有一套网络防火墙( 一般为网络安全组/网络访问控制等) **
< a name = "8vffy" ></ a >
**注意: 对于云服务器来说, 可能会存在多重防火墙。一般Linux系统自身会有一套防火墙( firewalld/ufw等) , 云服务商会有一套网络防火墙( 一般为网络安全组/网络访问控制等)**
### 几种远程连接方式对比
| **连接方式** | SSH | VNC | RDP |
@@ -67,31 +66,44 @@ _*FTP是一种文件传输协议, 你可以在某些电影资源的下载链接
| **网络要求** | 极低 | 高 | 较高 |
| **配置难度** | ★ | ★★★ | ★★ |
- _*__1 __ 部分Linux发行版自带VNC连接, 不过大部分需手动启用_
- _*__2__ RDP连接对于同为Win的机器更为容易, 对于平台不一样的情况, 配置比较麻烦_
< a name = "Q8OP1" ></ a >
- 1 部分Linux发行版自带VNC连接, 不过大部分需手动启用
- 2 RDP连接对于同为Win的机器更为容易, 对于平台不一样的情况, 配置比较麻烦
## 快速入门须知
当你拥有了一台属于自己的云服务器,你发现面对复杂的控制台手足无措,不知道怎么连接,不知道能拿来干什么。那么你可以参考一下的步骤。**下文仅适用于Linux Server & 有一点点Linux操作经验的选手**。
< a name = "YAQ3M" ></ a >
### 开启SSH远程连接
< br />
< a name = "7ahE2" ></ a >
#### 服务器端设置
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释) < br /> 2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项 < br /> 3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。< br /> 4.一般网页端会有提示, 根据具体情况开启SSH服务, 设置允许root权限远程登录。具体的操作因平台和操作系统不同而不同, 此处不再赘述。< br /> 5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器22端口的访问权限**。
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释)
2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项
3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。
4.一般网页端会有提示, 根据具体情况开启SSH服务, 设置允许root权限远程登录。具体的操作因平台和操作系统不同而不同, 此处不再赘述。
5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器22端口的访问权限**。
接下来在你的电脑上配置SSH远程访问。
< a name = "51wEl" ></ a >
#### 本地电脑设置
1.1 Win10用户和Linux用户、Mac OS用户一般系统会预装ssh客户端。打开CMD命令控制符/PowerShell, 输入ssh回车看是否有反应。**如果没有提示xxx找不到, 可以直接到步骤2.1**。< br /> 1.2 如果没有反应,你需要到 设置-应用-可选功能 中, 安装SSH客户端。< br /> 1.3 Windows其他版本用户需要安装第三方SSH客户端。这里推荐使用Putty。< br /> 2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**@符号前后没有空格 **, **输完回车确认**。正常情况下可以成功连接到。< br /> 2.2 如果出现Permission denied, 可能的原因有_用户名密码错误_/_未开启root账户远程登录_。< br /> 2.3 如果出现Connection time out, 则大概率是你_IP地址填写错误_, 也有可能是你的_服务器没开机_/_你的服务器系统没有默认开启ssh服务_/_防火墙未放行22端口_。
1.1 Win10用户和Linux用户、Mac OS用户一般系统会预装ssh客户端。打开CMD命令控制符/PowerShell, 输入ssh回车看是否有反应。**如果没有提示xxx找不到, 可以直接到步骤2.1**。
1.2 如果没有反应,你需要到 设置-应用-可选功能 中, 安装SSH客户端。
1.3 Windows其他版本用户需要安装第三方SSH客户端。这里推荐使用Putty。
2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**At符号@前后没有空格 ,输完回车确认**。正常情况下可以成功连接到。
2.2 如果出现Permission denied, 可能的原因有`用户名密码错误` / `未开启root账户远程登录` 。
2.3 如果出现Connection time out, 则大概率是你`IP地址填写错误` ,也有可能是你的`服务器没开机` / `你的服务器系统没有默认开启ssh服务 ` / `防火墙未放行22端口` 。
排查相关问题请带上相关关键字去搜索引擎搜索。
< a name = "X9DJ5" ></ a >
### 安装软件
< a name = "by8iU" ></ a >
#### 安装软件的命令及常见问题
参见上文介绍操作系统的部分。不过具体安装的时候, 经常会遇到的问题为安装需要root权限。一般来说, 日常使用时为了安全期间, 我们不会直接用root账户进行操作。通常的做法为创建一个普通的账户, 当执行需要高权限的指令时在命令前加上sudo, 或是使用 `su root` 来临时切换为root用户*,并输入密码来进行二次确认,以确保安全性。此处涉及到的操作有:
@@ -103,33 +115,34 @@ _*FTP是一种文件传输协议, 你可以在某些电影资源的下载链接
具体操作可以以 `操作系统名称+操作关键字` 为关键字在搜索引擎中自行搜索详细教程。
_*临时切换为root用户, 执行完命令后, 记得用exit命令退出root账户_
< a name = "HY0JM" ></ a >
#### 镜像源的设置
执行完上述命令, 当你尝试安装一个软件时, 如果你云服务器提供商没有为你的系统进行“优化”的话, 你会发现安装软件的速度非常慢。这是因为这些Linux系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。< br /> 国内的镜像站点有**阿里云镜像站**、**清华大学tuna镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流Linux发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同, 可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
执行完上述命令, 当你尝试安装一个软件时, 如果你云服务器提供商没有为你的系统进行“优化”的话, 你会发现安装软件的速度非常慢。这是因为这些Linux系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。
国内的镜像站点有**阿里云镜像站**、**清华大学tuna镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流Linux发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同, 可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
_*请注意此处叙述并不准确, 与一个站点通信的速度取决于很多因素。_
< a name = "Ivxvo" ></ a >
#### 常用工具的安装
更换好了软件源后,我们就可以愉快的安装软件了。你可以尝试安装一下 `screenfetch` 的软件包进行测试,安装完成后输入 `screenfetch` 命令,他会在你的屏幕上输出字符画形式的系统图标和系统配置信息。
部分Linux发行版可能并没有预置很多的软件包, 你可以根据自己的需要进行安装, 如文本编辑工具 `nano` `vim` 等*。C编译工具 `gcc` ,C++编译工具 `g++` , Java开发组件 `openjdk` 等。
_*推荐初学者使用易于上手的 `nano` 文本编辑器。大部分Linux发行版都有预置。_
< a name = "buNrX" ></ a >
## 初级玩法
- **搭建Wordpress网站**: 为服务器安装好基础设施, 部署wordpress服务。参见 [服务器LAMP部署 ](https://help.aliyun.com/document_detail/50774.html?spm=a2c4g.11186623.6.1134.26fc7ed9zbIv5a ), [Wordpress搭建 ](https://segmentfault.com/a/1190000013035065 )
- **作为远程开发环境**: [VSCode进行远程开发 ](https://www.jianshu.com/p/0f2fb935a9a1 )
< a name = "Nj6Qf" ></ a >
## 其他高级玩法
参见:[知乎问答:自己拥有一台服务器可以做哪些很酷的事情? ](https://www.zhihu.com/question/40854395 )
< a name = "QmdHY" ></ a >
## 扩展阅读