⼀,什么是云服务器?
云服务器弹性计算服务(ECS)是云服务器提供商提供的⼀种基础云计算服务。
禾云服务器ECS就像使⽤⽔,电,煤⽓等资源呀样便捷,磐效。我们瘫需提前采购硬件设备,
⽽是根据业务需要,随时创建所需数量的云服务器实例,并在使⽤过程中,随着业务的扩展,
对云服务器进⾏扩容磁盘,增加带宽。如果不再需要云服务器,也可以⽅便的释放资源,节省
费⽤。
云服务器ECS实例是⼀月虚拟的计算环境,包含了CPU,内存,操作系统,磁盘,带宽等最基
既的服务器组件,是ECS提供给每个睿户的操作实体。⼀个实例就等同于⼀台虚拟机,您对所
创建的实例拥有管理员权限,可以随时登录进⾏使⽤和管理。您可以在实例上进⾏基本操作,
如挂载磁盘,创建快照,创建镜像,部署环境等。
正如⻢云所⾔,未来的云服务器就是社会的基础设施,就像我们打开⽔⻰头就可以⽤⽔⼀样,
我们也可以随时根据我们的需求使⽤我们的服务器。
⼆,云服务器的选择
前⼏⽇,⼀篇“阿⾥云的这群疯⼦”迅速在⽹络上传播开来,这篇⽂章有⾎有⾁,有真实历史中的困
难,也有克服困难后的信⼼重建。是近年来⾮常出⾊的⼀篇关于阿⾥云发展的报道。阿⾥云是⽬前国
内最⼤的云服务器提供商,市场份额近50%,同时也是全球第三⼤云服务器提供商,仅次于亚⻢逊和
微软,那么我们就选择⽐较让我们国内的程序员感到⾃豪的阿⾥云吧!
三,云服务器的购买
阿⾥云,腾讯云等国内⼤公司都提供了学⽣优惠的价格。
点击进⼊阿⾥云“云翼计划”学⽣优惠界⾯
过程还⽐较简单啦,前三步是进⾏验证,第四部步进⼊如下所示的界⾯,终于要开始买我们的服务器
啦!
----------------------- Page 14 -----------------------
在这⼀⻚我们有⼏个选择,我⽤标号标记出来了。
1. 我们选择云服务器ECS。“轻量应⽤服务器”预装了⼀些⼯具,⽐如搭建博客的WordPress,写
PHP的LAMP套件组合等等。我们想要⼀个全新的服务器,所以选择云服务器ECS就好,我们⾃
⼰来安装。
2. 选择⽐较主流的CentOS啦~⽤Ubuntu的同学也不⽤担⼼,云服务器⼀般就只有命令⾏啦,是没
有图形界⾯的,选择CentOS没有什么过度。
3. 我们是东北,看起来华北和华东离我们都⽐较近,随便选⼀个吧,选华北。
4. 先买⼀个⽉的吧。只要9.5哎!真的是很便宜的价格了。阿⾥云有学⽣认证可以买多次,腾讯云
则是有次数限制的,我爱阿⾥!
5. 点击⽴即购买去付款就好啦~
四、云上初体验
购买成功后我们进⼊控制台⻚⾯,如下图
我们主要关注的就是我⽤箭头标注出来的那个公⽹IP,接下来,我们就要远程登录到这个IP地址啦!
「云服务器⼊⻔(⼆)」Windows⽤户上云
----------------------- Page 15-----------------------
「云服务器⼊⻔(⼆)」Windows⽤户上云
背景
恭喜你已经成功购买了阿⾥云服务器!
众所周知,Windows的命令⾏功能不多和Unix完全不⼀样,这也就决定了我们Windows⽤户不能直
接通过CMD来SSH远程连接到云服务器。在此向使⽤Windows的同学推荐Windows下的上云利
器“putty+winscp”的组合⽅案。
另外,VSCode也有⼤量的辅助我们与云服务器交互的插件,感兴趣的同学也可以看⼀下「云服务器
⼊⻔(三)Mac⽤户上云」,⾥⾯所提到的VSCode插件在Windows下也可以使⽤!
⼀、putty
基本介绍
PuTTY是⼀个Telnet、SSH、rlogin、纯TCP以及串⾏接⼝连接软件。较早的版本仅⽀持
Windows平台,在最近的版本中开始⽀持各类Unix平台,并打算移植⾄Mac OS X上。除了官⽅
版本外,有许多第三⽅的团体或个⼈将PuTTY移植到其他平台上,像是以Symbian为基础的移
动电话。PuTTY为⼀开放源代码软件,主要由Simon Tatham维护,使⽤MIT licence授权。随着
Linux在服务器端应⽤的普及,Linux系统管理越来越依赖于远程。在各种远程登录⼯具中,
Putty是出⾊的⼯具之⼀。Putty是⼀个免费的、Windows x86平台下的Telnet、SSH和rlogin客
户端,但是功能丝毫不逊⾊于商业的Telnet类⼯具。 —— 《百度百科》
下载安装
putty下载链接
根据电脑实际选择32/64位下载就ok啦~
安装过程不赘述。
使⽤⽅法
⻅「云服务器⼊⻔(四)」
⼆、WinSCP
WinSCP是⼀个Windows环境下使⽤SSH的开源图形化SFTP客户端。同时⽀持SCP协议。它的主
要功能就是在本地与远程计算机间安全的复制⽂件。winscp也可以链接其他系统,⽐如linux系
统。WinSCP可以执⾏所有基本的⽂件操作,例如下载和上传。同时允许为⽂件和⽬录重命名、
改变属性、建⽴符号链接和快捷⽅式。甚⾄还可以在线编辑⽂件内容。
----------------------- Page 16-----------------------
下载安装
WinSCP下载链接
这个进去后直接下载就⾏。
安装过程不赘述。
使⽤⽅法
1. 打开WinSCP
2. 输⼊主机名(IP)和⽤户名及密码,WinSCP会帮你记住,下次就可以直接登录啦。
3. 进⼊操作界⾯。界⾯分为两部分,左侧是Windows的⽂件资源管理器,右侧是服务器的⽬录。
----------------------- Page 17-----------------------
这样我们就可以愉快地拖拽⽂件上传到服务器啦~当然也可以从服务器上下载⽂件;
另外,我们还可以直接右键点击服务器上的⽂件选择编辑,对于vim使⽤不熟练的我来说可以这样编
辑⽂件真是太爽了~~
「云服务器⼊⻔(三)」Mac⽤户上云
背景
恭喜你已经成功购买了阿⾥云服务器!
众所周知,macOS是基于Unix开发的,所以mac⾃带的命令⾏已经能满⾜我们⼤部分的使⽤需求啦。
今天我们来探讨⼀下如何更优雅的在Mac上连接远程服务器。
macOS系统下普遍吐槽没有很好⽤的SCP应⽤(也有可能是我还没发现)。⽤推荐⽐较多的FileZilla
后发现也不如Windows下强⼤的WinSCP。
说起WinSCP,最让我怀念它的倒不是极其⽅便的上传⽂件功能,毕竟scp命令也没多⻓,不⽤⼯具也
可以解决,⽽是它可以右键服务器上的⽂件进⾏在线编辑,感觉⽐较⽅便。(对于vim掌握不熟练的
我来说)
----------------------- Page 18-----------------------
突发奇想,想看看我们越来越流⾏,越来越强⼤的VSCode有没有好的解决⽅案,还真的搜到了~~~在
美国简书Medium上找到了⼀篇(原⽂作者和我有很相似的历程hh):
Editing files in your Linux Virtual Machine made a lot easier with Remote VSCode
⼀、Remote VSCode
环境
本地:macOS+VSCode
服务器:CentOS 7.3
VSCode内安装插件
1. 打开VSCodeVSCode下载
2. 进⼊插件⻚,搜索“Remote VSCode”
----------------------- Page 19-----------------------
3. 安装插件并重启VSCode
服务器上安装rmate组件
1. 打开服务器,并执⾏以下命令
$ sudo wget -O /usr/local/bin/rmate
https://raw.github.com/aurora/rmate/master/rmate
$ sudo chmod a+x /usr/local/bin/rmate
VSCode内使⽤这⼀插件
1. 回到VSCode打开命令窗Command + Shift + P 并执⾏ Remote: Start Server
(这⼀步是开启macOS的52698端⼝,保持TCP连接,等待请求)
2. OK之后,在VSCode内打开⼀个新的终端输⼊以下命令连接到你的Linux服务器:
$ ssh -R 52698:localhost:52698 VIRTUAL_MACHINE_IP_ADDRESS
# (VIRTUAL_MACHINE_IP_ADDRESS 就是你的服务器IP地址)
3. 在你的VSCode终端内,执⾏rmate命令来编辑你想编辑的⽂件。会看到服务器上的⽂件内容会
在VSCode⾥⾯⾃动就显示出来啦~这时你再保存也是同步保存到服务器上的。你也同样可以在
VSCode的终端⾥执⾏命令⽐如 python test.py 之类。也就是说只需要⼀个VSCode就可以完成
连接、编辑、保存、执⾏操作。(就差⼀个SFTP上传了~,SFTP上传插件也找到了,这个暂时没
需求,下次再试⼀下嘿嘿)
----------------------- Page 20-----------------------
为什么是52698?
52698是Remote VSCode插件的默认端⼝,你可以在“User Preference”⻚⾯内搜索"Remote VSCode
configuration"来改变它。
⼆、iTerm2
----------------------- Page 21-----------------------
另外再推荐⼀款命令⾏软件“iTerm2”。iTerm甚⾄可以说是Mac下开发的必备软件~
简介
iTerm2 is a replacement for Terminal and the successor to iTerm. It works on Macs with
macOS 10.10 or newer. iTerm2 brings the terminal into the modern age with features you
never knew you always wanted.
iTerm 2 有很多能够提升效率的实⽤功能。⽐如说窗⼝分割、热键窗⼝、智能搜索、⾃动完成、
快速复制等等。
安装与配置
下载安装
iTerm2下载链接
主题
推荐最多的⼀款主题叫Solarized。这款主题有它⾃⼰的官⽹,同时⽀持主流的editor和IDE。主题配
置步骤如下:
1. 官⽹下载主题压缩包,下载链接。
2. 下载后解压,然后按 ⌘,,打开iTerm2的Preferences,接着Profiles -> Colors ->
Color Presets -> Import ,选择刚解压的⽂件夹solarized/iterm2-colors-solarized
下的Solarized Dark.itermcolors ⽂件。
3. 在Color Presets 下拉菜单中选中 Solarized Dark 主题,⼤功告成。
4. 配置截图如下:
----------------------- Page 22-----------------------
5. 成功后是这样的:
6. 当然啦,现在的字体还不够美观。我们在GitHub或者Google上能搜到⽆数其他的外观配置⽅
----------------------- Page 23-----------------------
案,就留给⼤家去探索啦~
常⽤快捷键
1. ⌘+T 打开⼀个新的标签⻚
2. ⌘+; 弹出⾃动补⻬窗⼝
3. ⌘+Shift+; 弹出历史命令记录窗⼝
4. ⌘+Shift+H 弹出历史粘贴记录窗⼝
5. ⌘+← 、⌘+ 、 ⌘+{, ⌘+} 、⌘+<number> 切换标签⻚
6. ⌘+F 智能查找,⽀持正则查找
7. ⌘+[ 、⌘+] 、⌘+Option+⽅向键 切换 pane
8. ⌘+D ⽔平切分屏幕,⌘+Shift+D 垂直切分屏幕
9. ⌘+Enter 进⼊与返回全屏模式
「云服务器⼊⻔(四)」云服务器基本使⽤
背景
恭喜!我们⼜⻅⾯啦~
先总结⼀下(⼆)和(三)的⽬的:
因为我们要远程访问我们的服务器,所以我们需要⼀些⼯具(shell)去和它进⾏交互。
Windows下因为Windows的CMD或者说powershell不⽀持Unix/Linux系统的那些bash命令,
所以我们需要⼀款⽀持这些命令的软件“putty”去帮助我们。
同时,因为我们经常会有向服务器上传/下载⽂件的需求,所以我们⽤WinSCP这款⼯具去帮助
我们。
对于Mac⽤户来讲呢,因为macOS就是基于Unix开发的,所以在Mac⾃带的终端内直接ssh就可
以连接到云服务器啦。但是⾃带的终端略丑且功能称不上强⼤,所以我们⽤最流⾏的Mac下的
终端软件“iTerm”去帮助我们获得更好的体验。
同时对于喜爱VSCode的同学,我们还介绍了⼀款插件去让我们所有的⼯作全部在VSCode完
成。
⼀、登录
1. 开启终端(iTerm2/putty,本⽂使⽤的是iTerm2)
----------------------- Page 24-----------------------
2. SSH远程连接
ssh Your_Server_IP_Address
3. 输⼊⽤户名和密码
4. 成功登陆啦!看到了阿⾥云的欢迎语。
⼆、随便⼲点什么
⼤家可以看到,这和我们之前使⽤的虚拟机是完全⼀样的~
----------------------- Page 25-----------------------
⼤家应该想到⼀点了,就是我们也可以⽤putty/WinSCP/iTerm 这些⼯具去访问我们的虚拟机。
在虚拟机内通过ifconfig 命令就可以看到虚拟机的IP地址啦~
三、退出
断开与服务器的连接也是⼀⻔学问。可能很多同学会直接点击窗⼝的红叉就关掉了,不过有时候如果
我们保持了⻓连接,访问可能没被关闭。所以最正确的⽅法当然是在命令⾏⾥关闭:
exit
四、保持连接
刚开始使⽤这些远程shell都会遇到⼀个问题就是如果隔⼀段时间没有输⼊新的命令,连接就会被⾃动
断开。这是因为我们没有保持连接,下⾯介绍⼀下保持连接的办法。
----------------------- Page 26-----------------------
两款软件保持连接的原理基本⼀致,都是每隔⼀段时间⾃动向服务器发送⼀条指令帮助我们保持连
接。
iTerm2
Preferences -> Profile -> Session -> When idle, send ASCII code...
putty
Putty Configuration -> Connection -> Seconds between keepalives (0 to turn off), 默认为0,
改为30(介于30⾄150就ok)。
----------------------- Page 27-----------------------
「云服务器⼊⻔(五)」C/S实战
背景
这是云服务器⼊⻔系列的最后⼀节啦~很开⼼你能看到这⾥。五节内容都是我对云服务器⽇常使⽤的
⼀些拙⻅,如有错误,还请包含!
我个⼈⼀直在⽤阿⾥云,本着“每台服务器只做⼀件事”的思想,⽤起来真的很爽!阿⾥云对学⽣的优
惠真的蛮⼤的,我⼀直⽤¥9.5的学⽣机作为我开发的⼀款⼩程序的后端。¥9.5的配置还是能满⾜⽐
较初级的需求的,我的后端⼤概每天有5000次左右的请求,服务器的负荷在⾼峰时(100次请求/s)也不
过30%。
希望你能喜欢!
最后⼀节我们来进⾏⼀个简单的实战,我们借助Linux下很好⽤的⽹络调试探测⼯具netcat(nc)来进⾏
⼀个简单的服务器与客户端的连接。
⼀、安装nc
服务器和本地虚拟机上都要安装⼀下nc客户端哦。
yum install nc # for centos
sudo apt install netcat # for ubuntu
⼆、开启服务器端监听
----------------------- Page 28-----------------------
⼆、开启服务器端监听
服务器在某个端⼝上侦听,使⽤nc -l 主机ip地址 端⼝号 。
我们可以加上-v来显示这个过程,如果不指定ip地址的话就默认是0.0.0.0,相当于INADDR_ANY。
在我们的云服务器上执⾏如下命令:
nc -l -v 12345
显示如下:
三、客户端发送请求
客户端通过 nc 主机ip地址 端⼝号 连接服务器,连接成功后,可以在任何⼀终端来相互发送数据
了。
在我们的本地虚拟机上执⾏如下指令(注意,YOUR_SERVER_IP_ADDRESS是你的服务器的数字地址
哦)
nc -v YOUR_SERVER_IP_ADDRESS
连接成功后,客户端输⼊任意字符都会⾃动发送到服务器上啦。
下⾯我们可以在服务器上运⾏我们⾃⼰的server代码啦。⽐如实验四提供给我们的web server代码,
我们在服务器上开启它后就可以通过客户端访问了。
四、总结
对于我们的游戏⼤作业,如果我们采⽤C/C++完成客户端,可以利⽤⽼师提供的connect_to_server连
接到服务器,⽤Java的完成客户端可以⽤卷曲⼯具,⽤JS处理请求可以⽤AJAX等等。
其实这和我们在本地开两个虚拟机或者是⼀个虚拟机开两个进程本质上是⼀样的,只是现在我们真正
地在服务器上运⾏server.c,在本地运⾏client.c。