📋
Lilac Doc
  • 首页
  • Web
    • 如何部署一台云服务器
Powered by GitBook
On this page
  • 预备知识
  • 部署一台 VPS
  • 给 VPS 安装 nginx
  • 其他扩展阅读材料

Was this helpful?

  1. Web

如何部署一台云服务器

web 选手经常需要使用到云服务器。除了在 CTF 比赛中的各种用处以外,云服务器还可以搭建博客、提供一些计算能力,境外服务器还可以搭建科学上网服务。我相信每一个 web 选手都应该拥有自己的服务器。

一般我们讲云服务器,不是指机房里面放着的一排排物理服务器,而是由各大服务商提供的高度虚拟化的服务器(VPS)。对我们而言,这些「虚拟服务器」与「物理服务器」没有什么差别,而且 VPS 能更快地创建、启动和销毁,可以动态调整硬盘容量,可以快速配置虚拟网卡……总之,VPS 比物理服务器方便很多,我们接下来展示如何创建一台 VPS、并在上面跑一个 web 应用,提供 2048 游戏。

预备知识

关于各服务商

在国内,我们一般选择阿里云、腾讯云等大厂;在境外,有 Vultr、DigitalOcean 等提供商。

由于 web 服务往往是延迟敏感的,我们一般在临近用户的地方部署服务器。例如,在北京部署一台服务器来为华北提供服务。但有一点需要注意:如果想让客户通过域名访问境内服务器的 80、443 端口,是需要向工信部备案的。通过 IP 地址访问则无此要求;通过域名访问其他端口也无需备案。境外服务器没有备案要求,所以很多不想备案的玩家会选择将服务器部署在香港,以在不备案的情况下提供低延迟的服务。

本文指引读者在境内搭建一台服务器、通过 IP 访问 80 端口,故无需备案。

包年包月 vs 按小时付费

绝大部分的服务商都提供了包年包月以及按小时付费的计费方式。用上我们学生享有的各种折扣,可以将年付的价格降到很低的水平。

按小时付费方式适合突发的服务需求。例如,您可能在 CTF 比赛过程中需要一台服务器而日常不需要,所以您可以建立一台按小时付费的服务器,并在竞赛结束后销毁之。但无论如何,我推荐 web 选手拥有一台长期的服务器。

以下是几个服务商的折扣页面:

  • 腾讯云学生机 https://cloud.tencent.com/act/campus 25 岁以下免学生认证,1 核 2G 年付 108 CNY,硬盘是 60G SSD 「轻量应用服务器」比「云服务器」少很多高级配置功能,不过如果是初学者的话很大概率用不到。从这个角度来讲,这俩区别不大。但如果您想进一步学习服务器的维护,我建议选择「云服务器」。

  • 腾讯云新用户 https://cloud.tencent.com/act/new 无需学生认证,只需要是第一单。1 核 2G 年付 99 CNY,硬盘是 50G HDD

  • 阿里云学生机 https://developer.aliyun.com/adc/student/ 学生可以白嫖俩月;新用户可 2 核 2G 年付 99 CNY

  • 华为云新用户 https://activity.huaweicloud.com/828_promotion/index.html 1 核 2G HECS服务器(相当于其他家的轻量应用服务器),年付 69.15,很香。 不推荐购买华为云的「鲲鹏云服务器」学生机!该服务器的 CPU 是 ARM 架构的,初学者很容易扑街。建议先熟悉 amd64 架构的服务器再说。

至于按小时付费,阿里云要求客户账户里有 100 CNY 的余额;腾讯云无此要求。所以我们下面介绍「部署按小时计费的 VPS」时会采用腾讯云来演示。

部署一台 VPS

部署包年包月 VPS

我们以阿里云白嫖的服务器来演示。

首先,打开 https://developer.aliyun.com/adc/student/ 完成学生认证,并领取白嫖的俩月 VPS。

操作系统请选择 Debian 或者 Ubuntu。如果您误选了 CentOS 或 Aliyun OS,请在控制台内重装成 Debian 或 Ubuntu。请给服务器设置一个 root 密码。如果购买时忘了设置,也可以在控制台设置。在安全组中一定要开放 80 端口,如果忘了,也可以在控制台修改安全组设置。如有疑惑,请参考下面「部署按小时计费的 VPS」的对应设置。

按照指引进入控制台,记录下公网 IP,然后跳转到 给 VPS 安装 nginx。

部署按小时计费的 VPS

我们采用腾讯云来演示。在云服务器的「实例」页面点击「新建」:

可以看到列出的三种计费方案。

这里解释一下按量计费和竞价实例的区别。

  • 按量计费服务器是按小时计费。服务有保障。

  • 竞价实例也是按小时付费,但(理论上)是不可靠的服务。如果您的出价低于市场价,您的 VPS 将会被销毁;如果该规格 VPS 的供应小于需求量,也可能被销毁。但事实上,如果采用「自动出价」模式,即总是按照市场价付款,则竞价实例还是可以很稳定地持有 VPS 的。 竞价实例常常可以有很大规模的折扣。

我们这里采用「竞价实例」来演示。您也可以采用「按量付费」来操作。

部署一个简单的 nginx 服务仅需很低的配置,我们随便选个 1 核 2G 的服务器。

系统镜像选择 Debian 或者 Ubuntu,网络计费选择「按使用流量」并把带宽拉到满,点击「下一步」:

「安全组」您可以理解成网络防火墙,控制着各个端口是否能被外网访问。我们这里选择「新建安全组」,一定要打开 80 端口,否则 web 服务无法被公网访问:

设置主机 root 密码,我们输入一个强密码:

点击「下一步」,确认配置信息,然后我们获得了一个 VPS。可以在控制台中查看:

复制其公网 IP,然后进行下一章节的操作。

给 VPS 安装 nginx

通过 ssh 登录 VPS

首先,我们需要登录到 VPS 上进行管理。我推荐使用 XShell 软件(免费版,Windows),当然如果您也可以直接通过命令行的 ssh 指令来登录。我们下面演示 ssh 指令登录方式。XShell 的登录方法请自行查阅资料,关键词:「Xshell 连接服务器」。ssh 的具体使用方法也请自行查阅资料,关键词:「ssh 连接服务器」。

于是我们获得了 VPS 上的终端。

安装 nginx

输入以下命令安装 nginx,来提供静态网站服务:

apt update
apt install nginx

在浏览器中访问 http://VPS公网IP ,您应该可以看到 nginx 的默认界面了。

如果提示没有 apt,则您可能是 CentOS 的受害者。请重装系统,选择 Debian 或者 Ubuntu。

如果浏览器访问不到这个页面,请排查下面几种可能的原因:

  • 服务器的安全组禁止了 80 端口访问,这会造成浏览器的「连接超时」。

  • nginx 安装了但是没有启动。请使用 /etc/init.d/nginx start 来启动服务。

  • 浏览器采用了 https 协议来尝试访问。请改为 http 协议。

nginx 简介

我们本文只使用 nginx 来提供静态网站的服务,但 nginx 的功能远比这要多。你所见到的知名网站,绝大部分都是通过 nginx 及其魔改版来提供服务。具体可以查阅相关资料。

在 Debian 10 上,nginx 的主要配置文件位于 /etc/nginx ,默认的网站根目录在 /var/www/html 。

获取 2048 应用的 html 文件

我们采用 https://github.com/gabrielecirulli/2048 的 html 文件。由于这是一个纯 html+css+js 实现的游戏,所以一个静态网站就能提供服务。

由于天朝的高雅网络环境,您可能无法访问 Github。翻墙是 CTF 选手的必修课,还请早日学会。您可以下载下面的压缩包:

2048-master.zip 解压之后即是我们想要部署的文件。打开 index.html ,我们已经可以在本地浏览器中游玩了:

将网页部署到 nginx

我们为了让公网用户可以在我们的网站上游玩 2048,需要将其部署到 nginx。事实上,我们只需要将这些文件拷贝至 /var/www/html ,即可让 nginx 展示我们的 2048 游戏。究其原因,nginx 默认状态下是实现了 /var/www/html 目录的「文件服务」,任何客户访问 nginx 都能获取(下载)到这些文件。

所以我们需要一种把这批文件上传到 VPS 的方法。XShell 用户可以使用配套的 Xftp,ssh 命令行用户可以使用 scp 指令。具体的方法请自行查阅资料。关键词:「xshell 上传文件」「scp 上传文件」

上传 zip 文件之后,将其解压到 /var/www/html 里面:

然后在服务端安装 unzip ,具体安装是采用 apt,请自行查阅资料。关键词:「apt 安装 unzip」

再次访问 http://<VPS的公网IP> ,您已经可以开始游玩 2048 游戏了。至此您成功地利用 nginx 部署了一个静态网站,恭喜。

销毁按小时付费 VPS

如果您之前购买的是按小时计费的 VPS,则在使用完服务器之后,应该予以销毁,避免不必要的费用。

其他扩展阅读材料

我们仅仅演示了静态网站的部署过程。事实上,nginx 支持 php 等动态后端。请自行查阅资料,关键词:「nginx 部署 php」

nginx 支持根据不同的域名提供不同的服务,这允许我们在同一台 VPS 的 80 端口上运行多个网站,而客户通过 2048.example.com 访问时提供 2048 服务,通过 flappy.example.com 访问时提供 flappy bird 服务。请自行查阅资料,关键词:「nginx 多域名」

nginx 支持部署 https 网站。事实上,我们常常会部署 http 协议的后端,然后通过 nginx 提供反向代理服务,利用 nginx 来实现 https 协议支持。关键词:「nginx 配置 https」

nginx 支持缓存服务。关键词:「nginx 缓存」

nginx 支持网页压缩。关键词:「nginx gzip 压缩」,当然压缩传输方式不止 gzip 一种。

如果您是 XShell 用户,您可以直接通过鼠标拖动文件来实现文件的上传。关键词:「xshell lrzsz」

Previous首页

Last updated 3 years ago

Was this helpful?

325KB
2048-master.zip
archive
2048 应用的源码
查看公网 IP
上传文件
解压
将 2048 的代码复制到 /var/www/html 文件夹下