下面将向您展示如何使用 Visual Studio CodeRemote - SSH扩展在 AWS 上创建和连接虚拟机 (VM)。您将能够使用 VS Code 在远程机器上运行 Telescope,就像源代码是本地的一样。本文档基于Remote development over SSH

Telescope是一款用于跟踪围绕 Seneca 开源开发的博客的工具。应用程序本身有许多使用 Docker 容器并使用 Docker-Compose 组合在一起的微服务。你可以在这里找到 GitHub repo

望远镜技术栈

  • Next.js

  • 材质界面

  • 节点.js

  • 弹性搜索

  • 雷迪斯

  • 流量

  • 火力基地

望远镜微服务

  • 授权

  • 饲料发现

  • 图片

  • 解析器

  • 星球

  • 个帖子

  • 搜索

  • 状态

  • 个用户

免责声明:本指南中使用的 EC2 实例不在 AWS 的免费套餐范围内,因此请参阅EC2 定价以了解您是否对这些费用感到满意。在开发中运行 Docker 是 CPU 密集型的,所以这些是我推荐的 EC2 实例:

  • 最低:t2.medium (4 GiB RAM + 2 vCPU)

  • 推荐:t2.large (8 GiB RAM + 2 vCPU)

定价摘要:

  • t2.medium 每小时花费 \$0.0464

  • t2.large 每小时花费 \$0.0928

  • 30GB Amazon Elastic Block Storage (EBS) 每月收费 \$3

每月费用估算:

t2.中

t2.大

每小时费用

\$0.0464

\$0.0928

每天几小时

8

8

每月天数

30

30

小计

\$11.14

\$22.27

30GB EBS 卷

\$3

\$3

全部的

\$14.14

\$25.27

先决条件:

  • 下载安装Visual Studio Code

  • 安装远程 - SSH扩展

  • 创建一个AWS 账户。如果您需要帮助,可以观看 AWS Certified Cloud Practitioner 课程的第部分关于创建帐户的内容。

  • 创建具有管理权限的 IAM 用户。您将需要您的AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

  • 使用您的 IAM 用户登录您的 AWS 账户

创建您的虚拟机 (AWS EC2):

  1. 在您的 AWS 管理控制台的右上角,选择US East (Ohio) us-east-2作为您的Region

  2. 在 AWS 管理控制台的左上角,单击Services。这将显示 AWS 服务列表,搜索EC2

3.点击Launch instances

  • 第 1 步 - 选择 Amazon 系统映像 (AMI):Ubuntu Server 20.04 LTS (HVM), SSD Volume Type

  • 第 2 步 - 选择实例类型:t2.medium

  • 第 3 步 - 配置实例详细信息:接受默认值并继续下一步

  • 第 4 步 - 添加存储:将大小 (GiB) 从8更改为20

  • 第 5 步 - 添加标签:不需要标签。继续下一步。

  • 步骤 6 - 配置安全组:

  • 分配安全组:Create a new security group

  • 安全组名称:telescope-sg

  • 添加以下规则:

  • SSH 为您的 IP 地址

  • 类型:SSH

  • 协议:TCP

  • 端口范围:22

  • 来源:My IP(当您从下拉菜单中选择此项时,它会自动在字段中输入<your-ip-address>/32。例如76.72.29.150/32)

  • 为您的 IP 地址打开 3000 端口

  • 类型:Custom TCP

  • 协议:TCP

  • 端口范围:3000

  • 来源:My IP

  • 为您的 IP 地址打开 8000 端口

  • 类型:Custom TCP

  • 协议:TCP

  • 端口范围:8000

  • 来源:My IP

  • 为您的 IP 地址打开 8000 端口

  • 类型:Custom TCP

  • 协议:TCP

  • 端口范围:8443

  • 来源:My IP

[](https://res.cloudinary.com/practicaldev/image/fetch/s--8QqWh0de--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://seneca-cdot-telescope. s3.amazonaws.com/vscode-ssh/2021-10-26%2B12_54_12-vscode-ssh.md%2B-%2Btelescope%2B-%2BVisual%2BStudio%2BCode.png)

  1. 点击Review and Launch。你会得到一个警告:Your instance configuration is not eligible for the free usage tier,这是因为我们使用的是t2.medium实例类型。

2.点击Launch

3.在弹出窗口中选择Create a new key pair

  • 密钥对类型:RSA

  • 密钥对名称:telescope-dev-key

1.点击Download Key Pair

  1. 如果您使用的是 Windows,请将文件保存在您的用户配置文件夹中的.ssh目录中(例如C:/Users/cindy/.ssh/)

3.点击Launch Instances

AWS 需要几分钟时间来启动您的新 EC2 实例。

  1. 一旦您的 EC2 实例启动,您应该将其命名为有意义的名称,例如Telescope-Dev,您可以找到您的 EC2 实例的公有 IPv4 地址。记下此 IP 地址。

使用 SSH 连接

1.打开Visual Studio Code

2.点击窗口左下角的Open a Remote Window图标

3.选择Connect to Host

4.选择Configure SSH Hosts...

  1. 这将在 Visual Studio Code 中打开一个config文件。如果您使用的是 Windows,它将类似于C:/Users/cindy/.ssh/config

  1. 使用以下内容编辑config文件:
Host aws-ec2
    HostName <your-ec2-ip-address>
    User ubuntu
    IdentityFile ~/.ssh/telescope-dev-key.pem

进入全屏模式 退出全屏模式

[](https://res.cloudinary.com/practicaldev/image/fetch/s--ogNJzT4U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://seneca-cdot-telescope。 s3.amazonaws.com/vscode-ssh/2021-10-26%2B14_02_31-config%2B-%2Btelescope%2B-%2BVisual%2BStudio%2BCode.png)

  1. 保存文件

  2. 当您再次点击左下角的Open a Remote Window图标并选择Connect to Host时,您将看到aws-ec2列出。

  3. 选择aws-ec2,将打开一个新的 Visual Studio Code 窗口。

  4. 您将看到"aws-ec2" has fingerprint "SHA256:xxx"Are you sure you want to continue?。单击Continue。然后您应该看到您已连接!

设置您的 AWS 凭证

  1. 在 Visual Studio Code 中打开一个终端(Windows 上的热键:Ctrl + backtick)。您应该看到您以类似ubuntu@ip-172.31.23.4的身份登录。

  2. 安装unzip。我们将需要它来安装 AWS CLI

$ sudo apt install unzip

进入全屏模式 退出全屏模式

  1. 安装最新版本的 AWS CLI
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

进入全屏模式 退出全屏模式

  1. 验证 AWS CLI 安装
$ aws --version

aws-cli/2.3.0 Python/3.8.8 Linux/5.4.0-1045-aws exe/x86_64.ubuntu.20 prompt/off

进入全屏模式 退出全屏模式

1.删除awscliv2.zip文件和aws目录

rm awscliv2.zip
rm -rf aws

进入全屏模式 退出全屏模式

  1. 配置您的 AWS 凭证
aws configure

进入全屏模式 退出全屏模式

  1. 目前,一切都设置为无,因此请输入您的 AWS IAM 用户的凭证。
AWS Access Key ID [None]: ****************764G
AWS Secret Access Key [None]: ****************qBbe
Default region name [None]: us-east-2
Default output format [None]:

进入全屏模式 退出全屏模式

安装 Docker 和 Docker-Compose

安装Docker引擎-社区版

1.更新apt包索引:

sudo apt-get update

进入全屏模式 退出全屏模式

  1. 安装软件包以允许 apt 通过 HTTPS 使用存储库:
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

进入全屏模式 退出全屏模式

1.添加Docker官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

进入全屏模式 退出全屏模式

  1. 使用以下命令设置稳定存储库:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

进入全屏模式 退出全屏模式

1、再次更新apt包索引:

sudo apt-get update

进入全屏模式 退出全屏模式

1.安装最新版本的Docker Engine社区:

sudo apt-get install docker-ce docker-ce-cli containerd.io

进入全屏模式 退出全屏模式

  1. 将您的用户添加到 Docker 组(源):
sudo usermod -aG docker $USER

进入全屏模式 退出全屏模式

1.激活对组的更改

newgrp docker

进入全屏模式 退出全屏模式

  1. 现在在你的机器上运行 docker 作为服务,在启动时:
  • 启动时启用 docker:sudo systemctl enable docker

  • 启动时禁用 docker:sudo systemctl disable docker

安装 Docker-Compose

1.运行下载当前稳定版本的Docker-Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

进入全屏模式 退出全屏模式

1.对下载的文件应用可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

进入全屏模式 退出全屏模式

1.检查安装使用:

$ docker-compose --version

docker-compose version 1.29.2, build 5becea4c

进入全屏模式 退出全屏模式

安装 Node.js 和 npm

  1. 安装 Node.js 16.x 和 npm 8.1
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

进入全屏模式 退出全屏模式

1.验证安装

$ node -v
v16.12.0

$ npm -v
8.1.0

进入全屏模式 退出全屏模式

在 AWS EC2 中设置 Telescope 存储库:

  1. 克隆 Telescope 存储库,输入远程命名为upstream
git clone -o upstream https://github.com/Seneca-CDOT/telescope.git

进入全屏模式 退出全屏模式

  1. 打开telescope目录,你应该可以看到整个 Telescope 文件和文件夹结构!

[](https://res.cloudinary.com/practicaldev/image/fetch/s--sPangEf5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://seneca-cdot-telescope。 s3.amazonaws.com/vscode-ssh/2021-10-26%2B16_54_04-Settings.png)

  1. 通过执行aws-ip.sh脚本在您的 env.remote 文件中设置所有必要的环境变量以包含您的 EC2 实例的公共 IPv4 地址
sh ./tools/aws-ip.sh

进入全屏模式 退出全屏模式

如果你做的一切都正确,你已经完成了环境设置!

现在开始开发...

1.安装所有依赖

npm install

进入全屏模式 退出全屏模式

  1. 启动所有 Telescope 服务。这需要一些时间才能完成
docker-compose --env-file .env up -d

进入全屏模式 退出全屏模式

  1. 在 3000 端口启动 Telescope 开发服务器
npm start

进入全屏模式 退出全屏模式

  1. 找到您的 EC2 实例的公有 IPv4
$ curl -s http://169.254.169.254/latest/meta-data/public-ipv4

35.174.16.133

进入全屏模式 退出全屏模式

  1. 打开<public-ip>:8000浏览器选项卡,查看在 AWS Cloud9 环境中运行的 Telescope!

2.在另一个浏览器选项卡中打开<public-ip>:3000/feeds以查看后端的所有提要

  1. 在另一个浏览器选项卡中打开<public-ip>:8443/v1/<microservice-port>以查看微服务。例如35.174.16.133:8443/v1/posts

[](https://res.cloudinary.com/practicaldev/image/fetch/s--LlVz78Jx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://seneca-cdot-telescope. s3.amazonaws.com/vscode-ssh/2021-10-26%2B17_10_36-Telescope%2B%25E2%2580%2594%2BMozilla%2BFirefox.png)

常见问题 (FAQ)

如何停止我的 docker 容器?

npm run services:stop

进入全屏模式 退出全屏模式

如何删除我的 docker 容器?

docker system prune -af --volumes

进入全屏模式 退出全屏模式

运行docker-compose --env-file .env up -d时出现Permission denied错误

首次安装 Docker 时,有时未正确设置 Docker 权限。您可能需要重新启动 VM 或运行

newgrp docker

进入全屏模式 退出全屏模式

我无法打开:8000 运行,我做错了什么?

  1. 如果您打开了 VPN,请将其关闭并通过访问http://checkip.amazonaws.com/获取您的 IP 地址,然后允许您的 IP 地址访问端口 3000 和 8000。

  2. 当您停止或重启您的 EC2 实例时,AWS 可能会更改您的 EC2 实例 IP 地址。一种解决方案是购买弹性 IP 地址来保留特定的公共 IP 地址。但是,您可以只清除env.remote.env文件并再次运行./tools/aws-ip.sh脚本以在适当的环境变量中设置新的 EC2 IP 地址。只需记住在浏览器中也使用新的 EC2 IP 地址。

我无法通过 SSH 连接到我的 EC2 实例

  1. 同上原因,当您停止或重启您的 EC2 实例时,您的 EC2 实例 IP 地址可能会发生变化。因此,请确保您的.ssh/config文件具有正确的主机名

  2. 如果您自己的 IP 地址发生变化(例如,您更换了互联网提供商或您搬到了具有不同 IP 地址的新位置),您需要更新您的入站规则以允许您的 IP 地址访问端口 22。不要忘记也允许访问端口 3000 和 8000。

如果我不主动使用 EC2 实例,如何关闭它?

有许多不同的方法可以停止 EC2 实例:

  1. 使用 AWS 控制台手动关闭它

[](https://res.cloudinary.com/practicaldev/image/fetch/s--rnt9cFrD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://seneca-cdot-telescope。 s3.amazonaws.com/vscode-ssh/2021-10-26%2B17_35_32-vscode-ssh.md%2B-%2Btelescope%2B-%2BVisual%2BStudio%2BCode.png)

  1. 创建 Cloudwatch 警报以在不活动后为您停止 EC2 实例
  • 点击Alarm status下方的+开始创建警报

  • 点击Create an alarm单选按钮

  • Alarm action设置为Stop

  • 设置警报以在 EC2 实例的 CPU 使用率低于 25% 一个小时时触发

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐