作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。
介绍
随着开发人员的工具转向云,云 IDE(集成开发环境)平台的采用正在增加。云 ID 可通过 Web 浏览器从任何现代设备访问,并为实时协作场景提供了众多优点。在云 IDE 中工作为您和您的团队提供统一的开发和测试环境,同时最大限度地减少平台不兼容性。
Eclipse Theia是一个可扩展的云 IDE,可在远程服务器上运行,并可通过 Web 浏览器访问。视觉上,它设计的外观和行为类似于 Microsoft Visual Studio Code,这意味着它支持许多编程语言,具有灵活的布局,并具有集成的终端。
在本教程中,您将使用 Docker Compose 将 Eclipse Theia 部署到您的 Debian 10 服务器上,这是一种集装箱编排工具。您将使用 nginx-proxy在您的领域中展示它,这是一种用于 Docker 的自动化系统,它简化了配置 Nginx 作为一个集装箱的反向代理程序的过程。您还将使用免费的 Let's Encrypt TLS 证书来保护它,您将使用其专门的 add-on来提供它。最后,您将有 Eclipse Theia 运行在您的 Debian 10 服务器上通过 HTTPS 可用,并要求用户登录。
前提条件
- 拥有根权利的 Debian 10 服务器和次要的非根帐户. 您可以通过遵循我们的 Debian 10 初始服务器设置指南来设置此服务器。 对于本教程,非根用户是
sammy
. - Docker 安装在您的服务器上。 遵循 Debian 10 上的如何安装 Docker的 How To Install Docker Compose on Debian 10的 Step 1。 对于 Docker 的介绍,请参阅 The Docker Ecosystem: An Introduction to Common Components)。
- Docker Compose 安装在您的服务器上。 您可以在您的域名
步骤 1 — 使用 Let’s Encrypt 部署 nginx 代理
在本节中,您将使用 Docker Compose 部署 'nginx-proxy' 及其 Let's Encrypt add-on,这将允许自动提供和更新 TLS 证书,因此当您部署 Eclipse Theia 时,它将通过 HTTPS 在您的域中可访问。
对于本教程的目的,你将存储所有文件在 ~/eclipse-theia
. 通过运行以下命令创建目录:
1mkdir ~/eclipse-theia
导航它:
1cd ~/eclipse-theia
您将将nginx-proxy
的Docker Compose配置存储在名为nginx-proxy-compose.yaml
的文件中。
1nano nginx-proxy-compose.yaml
添加以下几行:
1[label ~/eclipse-theia/nginx-proxy-compose.yaml]
2version: '2'
3
4services:
5 nginx-proxy:
6 restart: always
7 image: jwilder/nginx-proxy
8 ports:
9 - "80:80"
10 - "443:443"
11 volumes:
12 - "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
13 - "/etc/nginx/vhost.d"
14 - "/usr/share/nginx/html"
15 - "/var/run/docker.sock:/tmp/docker.sock:ro"
16 - "/etc/nginx/certs"
17
18 letsencrypt-nginx-proxy-companion:
19 restart: always
20 image: jrcs/letsencrypt-nginx-proxy-companion
21 volumes:
22 - "/var/run/docker.sock:/var/run/docker.sock:ro"
23 volumes_from:
24 - "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
定义的卷的访问权限。
保存并关闭文件。
通过运行部署配置:
1docker-compose -f nginx-proxy-compose.yaml up -d
在这里,您将nginx-proxy-compose.yaml
文件名转移到docker-compose
命令的f
参数,该参数指定要运行的文件。
最终的结果将是这样的:
1[secondary_label Output]
2Creating network "eclipse-theia_default" with the default driver
3Pulling nginx-proxy (jwilder/nginx-proxy:)...
4latest: Pulling from jwilder/nginx-proxy
58d691f585fa8: Pull complete
65b07f4e08ad0: Pull complete
7...
8Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
9Status: Downloaded newer image for jwilder/nginx-proxy:latest
10Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)...
11latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
1289d9c30c1d48: Pull complete
13668840c175f8: Pull complete
14...
15Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
16Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
17Creating eclipse-theia_nginx-proxy_1 ... done
18Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done
您已经部署了「nginx-proxy」及其使用 Docker Compose 的 Let's Encrypt 伴侣,现在您将继续在您的域中设置 Eclipse Theia 并保护它。
步骤 2 – 部署 Dockerized Eclipse Theia
在本节中,您将创建一个包含用户需要输入的允许登录组合的文件,然后,您将使用 Docker Compose 部署 Eclipse Theia 到您的服务器,并使用nginx-proxy
将其暴露到您的安全域。
正如前一步所解释的那样,nginx-proxy 预计登录组合将在一个名为暴露的域名的文件中,以htpasswd
格式,并存储在容器中的/etc/nginx/htpasswd
目录中。
要创建登录组合,您首先需要通过运行以下命令来安装htpasswd
:
1sudo apt install apache2-utils
apache2-utils
包包含了htpasswd
实用程序。
创建 /etc/nginx/htpasswd
目录:
1sudo mkdir -p /etc/nginx/htpasswd
创建一个存储您的域名登录的文件:
1sudo touch /etc/nginx/htpasswd/theia.your_domain
请记住,用你的 Eclipse Theia 域代替 theia.your_domain
。
若要添加用户名和密码组合,请运行以下命令:
1sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
用您想要添加的用户名替换用户名
。您将被要求提供密码两次。提供密码后,htpasswd
将添加用户名和哈希密码对到文件的末尾。
现在,您将创建部署 Eclipse Theia 的配置,将其存储在名为 'eclipse-theia-compose.yaml' 的文件中。
1nano eclipse-theia-compose.yaml
添加以下几行:
1[label ~/eclipse-theia/eclipse-theia-compose.yaml]
2version: '2.2'
3
4services:
5 eclipse-theia:
6 restart: always
7 image: theiaide/theia:next
8 init: true
9 environment:
10 - VIRTUAL_HOST=theia.your_domain
11 - LETSENCRYPT_HOST=theia.your_domain
在此配置中,您定义了一个名为eclipse-theia
的单一服务,将重启
设置为总是
和theiaide/theia:next
作为容器图像。
然后,您在环境
部分中指定两个环境变量:VIRTUAL_HOST
和LETSENCRYPT_HOST
。前者被传送到nginx-proxy
并告诉它该容器应该暴露在哪个域,而后者被其Let’s Encrypt
插件使用,并指定要为哪个域请求TLS证书。
请记住,用您想要的域名替换 domain.your_domain
,然后保存并关闭文件。
现在通过运行部署 Eclipse Theia:
1docker-compose -f eclipse-theia-compose.yaml up -d
最终的结果将看起来像:
1[secondary_label Output]
2...
3Pulling eclipse-theia (theiaide/theia:next)...
4next: Pulling from theiaide/theia
563bc94deeb28: Pull complete
6100db3e2539d: Pull complete
7...
8Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
9Status: Downloaded newer image for theiaide/theia:next
10Creating eclipse-theia_eclipse-theia_1 ... done
然后,在您的浏览器中,导航到您正在使用的域名 Eclipse Theia. 您的浏览器将向您显示一个提示,要求您登录. 提供正确的凭证后,您将输入 Eclipse Theia,并立即看到其编辑器的GUI。 在您的地址栏中,您将看到一个锁定,表示连接是安全的。 如果您没有立即看到这一点,请等待几分钟才能提供TLS证书,然后重新加载页面。
现在您可以安全访问云 IDE,您将在下一步开始使用编辑器。
步骤 3 — 使用 Eclipse Theia 接口
在本节中,您将探索Eclipse Theia界面的一些功能。
在IDE的左侧,有一个四个按钮的垂直行,打开了侧面面板中最常用的功能。
此栏是可自定义的,所以您可以将这些视图移动到不同的顺序或从栏中删除它们. 默认情况下,第一个视图会打开 Explorer 面板,为项目结构提供树形导航。
通过 ** 文件 ** 菜单创建新文件后,你会看到一个空的文件在一个新的卡上打开. 一旦保存,你可以查看文件的名称在浏览器侧面板. 要创建文件夹,右键单击浏览器侧面栏,然后单击 ** 新文件夹**. 您可以通过点击其名称来扩展文件夹,并将文件和文件夹拖放到层次的顶部,将其移动到一个新的位置。
接下来的两个选项提供访问搜索和替换功能,然后,下一个选项提供您可能正在使用的源控制系统的视图,例如 Git。
最后的视图是调试选项,该选项提供了面板中调试的所有常见操作,您可以将调试配置保存到launch.json
文件中。
GUI的中心部分是您的编辑器,您可以通过编辑代码的标签进行分离。您可以将编辑视图更改为网格系统或旁边的文件。
您可以通过键入CTRL+SHIFT+
来访问终端,或者在上方菜单中单击终端
并选择新终端
。
你已经探索了Eclipse Theia界面的高级概述,并审查了一些最常用的功能。
结论
你现在有 Eclipse Theia,一个多功能的云 IDE,安装在你的Debian 10服务器上,使用Docker Compose和nginx-proxy
。你已经用免费的Let's Encrypt TLS证书保护了它,并设置了该实例以要求用户登录凭证。你可以单独使用它来处理源代码和文档,或者与你的团队合作。如果你需要额外的功能,你也可以尝试构建你自己的Eclipse Theia版本。