如何在Ubuntu18.04上设置EclipseTheiaCloudIDE平台

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。

介绍

随着开发人员工具迁移到云端,云 IDE(集成开发环境)平台的采用正在增长。 云 IDE 可以通过 Web 浏览器从各种现代设备访问,它们为实时协作场景提供了许多优势。 在云 IDE 中工作可为您和您的团队提供统一的开发和测试环境,同时最大限度地减少平台不兼容性。 云 IDE 可通过 Web 浏览器访问,适用于各种现代设备。

Eclipse Theia 是一个可扩展的云 IDE,运行在远程服务器上,可从 Web 浏览器访问。 在视觉上,它的外观和行为类似于 Microsoft Visual Studio Code,这意味着它支持多种编程语言,具有灵活的布局,并具有集成终端。 Eclipse Theia 与其他云 IDE 软件的不同之处在于它的可扩展性; 可以使用自定义扩展对其进行修改,从而允许您制作适合您需求的云 IDE。

在本教程中,您将使用容器编排工具 Docker Compose 将 Eclipse Theia 部署到您的 Ubuntu 18.04 服务器。 您将使用 nginx-proxy 在您的域中公开它,这是一个用于 Docker 的自动化系统,可简化将 Nginx 配置为容器的反向代理的过程。 您还将使用免费的 Let's Encrypt TLS 证书 来保护它,您将使用其专用的 附加组件 来提供该证书。 最后,您将在 Ubuntu 18.04 服务器上通过 HTTPS 运行 Eclipse Theia,并要求用户登录。

先决条件

  • 具有 root 权限和辅助非 root 帐户的 Ubuntu 18.04 服务器。 您可以按照我们的 Initial Server Setup Guide for Ubuntu 18.04 进行设置。 对于本教程,非 root 用户是 sammy
  • Docker 安装在您的服务器上。 遵循如何在Ubuntu 18.04上安装Docker的Step 1Step 2。 有关 Docker 的介绍,请参阅 Docker 生态系统:通用组件简介
  • Docker Compose 安装在您的服务器上。 遵循如何在Ubuntu 18.04上安装Docker Compose的Step 1
  • 完全注册的域名。 本教程将自始至终使用 theia.your_domain。 您可以在 Namecheap 上购买一个域名,在 Freenom 上免费获得一个域名,或者使用您选择的域名注册商。
  • theia.your_domain 的 A DNS 记录指向您服务器的公共 IP 地址。 您可以关注这个DigitalOcean DNS的介绍,详细了解如何添加它们。

第 1 步 — 使用 Let's Encrypt 部署 nginx-proxy

在本节中,您将使用 Docker Compose 部署 nginx-proxy 及其 Let's Encrypt 附加组件 。 这将启用自动 TLS 证书配置和续订,因此当您部署 Eclipse Theia 时,它将可以通过 HTTPS 在您的域中访问。

出于本教程的目的,您将在 ~/eclipse-theia 下存储所有文件。 通过运行以下命令创建目录:

mkdir ~/eclipse-theia

导航到它:

cd ~/eclipse-theia

您将 nginx-proxy 的 Docker Compose 配置存储在名为 nginx-proxy-compose.yaml 的文件中。 使用您的文本编辑器创建它:

nano nginx-proxy-compose.yaml

添加以下行:

~/eclipse-theia/nginx-proxy-compose.yaml

version: '2'

services:
  nginx-proxy:
    restart: always
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
      - "/etc/nginx/vhost.d"
      - "/usr/share/nginx/html"
      - "/var/run/docker.sock:/tmp/docker.sock:ro"
      - "/etc/nginx/certs"

  letsencrypt-nginx-proxy-companion:
    restart: always
    image: jrcs/letsencrypt-nginx-proxy-companion
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    volumes_from:
      - "nginx-proxy"

在这里,您定义了 Docker Compose 将运行的两个服务,nginx-proxy 及其 Let's Encrypt 伴侣。 对于代理,您将 jwilder/nginx-proxy 指定为图像,映射 HTTP 和 HTTPS 端口,并定义在运行时可访问的卷。

卷是您的服务器上的目录,定义的服务将具有完全访问权限,您稍后将使用它来设置用户身份验证。 为此,您将使用列表中的第一个卷,它将本地 /etc/nginx/htpasswd 目录映射到容器中的同一个目录。 在该文件夹中,nginx-proxy 期望找到一个与目标域完全命名的文件,其中包含 htpasswd 格式 (username:hashed_password) 的用户身份验证的登录凭据。

对于附加组件,您可以命名 Docker 映像并通过定义卷来允许访问 Docker 的套接字。 然后,您指定附加组件应继承对为 nginx-proxy 定义的卷的访问权限。 两个服务都将 restart 设置为 always,这会命令 Docker 在崩溃或系统重启的情况下重启容器。

保存并关闭文件。

通过运行部署配置:

docker-compose -f nginx-proxy-compose.yaml up -d

在这里,您将 nginx-proxy-compose.yaml 文件名传递给 docker-compose 命令的 -f 参数,该参数指定要运行的文件。 然后,传递指示它运行容器的 up 动词。 -d 标志启用分离模式,这意味着 Docker Compose 将在后台运行容器。

最终输出将如下所示:

OutputCreating network "eclipse-theia_default" with the default driver
Pulling nginx-proxy (jwilder/nginx-proxy:)...
latest: Pulling from jwilder/nginx-proxy
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete
...
Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
Status: Downloaded newer image for jwilder/nginx-proxy:latest
Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)...
latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
89d9c30c1d48: Pull complete
668840c175f8: Pull complete
...
Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
Creating eclipse-theia_nginx-proxy_1 ... done
Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done

您已经使用 Docker Compose 部署了 nginx-proxy 及其 Let's Encrypt 伴侣。 现在您将继续在您的域中设置 Eclipse Theia 并对其进行保护。

第 2 步 — 部署 Dockerized Eclipse Theia

在本节中,您将创建一个文件,其中包含用户需要输入的任何允许的登录组合。 然后,您将使用 Docker Compose 将 Eclipse Theia 部署到您的服务器,并使用 nginx-proxy 在您的安全域中公开它。

如上一步所述,nginx-proxy 期望登录组合位于以公开域命名的文件中,采用 htpasswd 格式并存储在 /etc/nginx/htpasswd 目录下容器。 映射到虚拟目录的本地目录不需要与 nginx-proxy 配置中指定的相同。

要创建登录组合,您首先需要通过运行以下命令来安装 htpasswd

sudo apt install apache2-utils

apache2-utils 软件包包含 htpasswd 实用程序。

创建/etc/nginx/htpasswd目录:

sudo mkdir -p /etc/nginx/htpasswd

创建一个文件来存储您的域的登录信息:

sudo touch /etc/nginx/htpasswd/theia.your_domain

请记住将 theia.your_domain 替换为您的 Eclipse Theia 域。

要添加用户名和密码组合,请运行以下命令:

sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username

username 替换为您要添加的用户名。 您将被要求输入密码两次。 提供后,htpasswd 会将用户名和哈希密码对添加到文件末尾。 您可以对要添加的登录次数重复此命令。

现在,您将创建用于部署 Eclipse Theia 的配置。 您将把它存储在一个名为 eclipse-theia-compose.yaml 的文件中。 使用您的文本编辑器创建它:

nano eclipse-theia-compose.yaml

添加以下行:

~/eclipse-theia/eclipse-theia-compose.yaml

version: '2.2'

services:
  eclipse-theia:
    restart: always
    image: theiaide/theia:next
    init: true
    environment:
      - VIRTUAL_HOST=theia.your_domain
      - LETSENCRYPT_HOST=theia.your_domain

在此配置中,您定义了一个名为 eclipse-theia 的服务,其中 restart 设置为 alwaystheiaide/theia:next 作为容器映像。 您还将 init 设置为 true 以指示 Docker 在容器内运行 Eclipse Theia 时使用 init 作为主进程管理器。

然后,在 environment 部分中指定两个环境变量:VIRTUAL_HOSTLETSENCRYPT_HOST。 前者被传递给 nginx-proxy 并告诉它容器应该在哪个域公开,而后者由它的 Let's Encrypt 插件使用并指定为哪个域请求 TLS 证书。 除非您将通配符指定为 VIRTUAL_HOST 的值,否则它们必须相同。

请记住将 theia.your_domain 替换为您想要的域,然后保存并关闭文件。

现在通过运行部署 Eclipse Theia:

docker-compose -f eclipse-theia-compose.yaml up -d

最终输出将如下所示:

Output...
Pulling eclipse-theia (theiaide/theia:next)...
next: Pulling from theiaide/theia
63bc94deeb28: Pull complete
100db3e2539d: Pull complete
...
Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
Status: Downloaded newer image for theiaide/theia:next
Creating eclipse-theia_eclipse-theia_1 ... done

然后,在您的浏览器中,导航到您用于 Eclipse Theia 的域。 您的浏览器会提示您登录。 提供正确的凭据后,您将进入 Eclipse Theia 并立即看到它的编辑器 GUI。 在您的地址栏中,您会看到一个挂锁,表明连接是安全的。 如果您没有立即看到此内容,请等待几分钟以配置 TLS 证书,然后重新加载页面。

现在您可以安全地访问您的云 IDE,您将在下一步中开始使用编辑器。

第 3 步 — 使用 Eclipse Theia 界面

在本节中,您将探索 Eclipse Theia 界面的一些特性。

在 IDE 的左侧,有一排垂直的四个按钮,用于打开侧面板中最常用的功能。

此栏是可自定义的,因此您可以将这些视图移动到不同的顺序或从栏中删除它们。 默认情况下,第一个视图会打开 Explorer 面板,该面板提供项目结构的树状导航。 您可以在此处管理您的文件夹和文件——根据需要创建、删除、移动和重命名它们。

通过 File 菜单创建新文件后,您会看到在新选项卡中打开了一个空文件。 保存后,您可以在资源管理器侧面板中查看文件名。 要创建文件夹,请右键单击资源管理器侧边栏,然后单击 New Folder。 您可以通过单击文件夹名称来展开文件夹,也可以将文件和文件夹拖放到层次结构的上部以将它们移动到新位置。

接下来的两个选项提供对搜索和替换功能的访问。 在它之后,下一个提供了您可能正在使用的源代码控制系统的视图,例如 Git

最后一个视图是调试器选项,它提供了面板中调试的所有常用操作。 您可以将调试配置保存在launch.json文件中。

GUI 的中心部分是您的编辑器,您可以通过选项卡将其分开以进行代码编辑。 您可以将编辑视图更改为网格系统或并排文件。 与所有现代 IDE 一样,Eclipse Theia 支持代码的语法高亮显示。

您可以通过键入 CTRL+SHIFT+` 或单击上方菜单中的 Terminal 并选择 New Terminal 来访问终端。 终端将在下方面板中打开,其工作目录将设置为项目的工作区,其中包含资源管理器侧面板中显示的文件和文件夹。

您已经浏览了 Eclipse Theia 界面的高级概述,并回顾了一些最常用的特性。

结论

您现在已经使用 Docker Compose 和 nginx-proxy 在 Ubuntu 18.04 服务器上安装了 Eclipse Theia,这是一个多功能的云 IDE。 您已使用免费的 Let's Encrypt TLS 证书对其进行保护,并将实例设置为要求用户提供登录凭据。 您可以单独处理源代码和文档,也可以与您的团队协作。 如果您需要其他功能,也可以尝试构建自己的 Eclipse Theia 版本。 有关如何执行此操作的更多信息,请访问 Theia 文档