随着开发人员工具转移到云中,对云IDE(集成开发环境)平台的采用正在增长。可以通过Web浏览器从各种类型的现代设备访问Cloud IDE,它们为实时协作场景提供了众多优势。在云IDE中工作可为您和您的团队提供统一的开发和测试环境,同时最大程度地减少平台不兼容性。可以通过Web浏览器访问,各种类型的现代设备都可以使用Cloud IDE。
Eclipse Theia是运行在远程服务器上的可扩展云IDE,可从Web浏览器访问。在视觉上,它的外观和行为与Microsoft Visual Studio Code相似,这意味着它支持多种编程语言,灵活的布局并具有集成的终端。Eclipse Theia与其他Cloud IDE软件的不同之处在于其可扩展性。可以使用自定义扩展对其进行修改,这使您可以制作适合自己需求的云IDE。
在本教程中,您将使用容器编排工具Docker Compose将Eclipse Theia部署到CentOS 7服务器。您将使用nginx-proxy(一个针对Docker的自动化系统)在您的域中公开它,该系统可简化将Nginx配置为充当容器的反向代理的过程。您还将使用免费的Let's Encrypt TLS证书来保护它,并使用其专门的附件对其进行设置。最后,您将通过HTTPS在CentOS 7服务器上运行Eclipse Theia,并要求用户登录。
sammy
。theia.your-domain
。你可以购买一个域名Namecheap,免费获得一个在Freenom,或使用你选择的域名注册商。theia.your-domain
指向您服务器的公共IP地址。在本节中,您将使用Docker Compose 部署nginx-proxy
及其Let's Encrypt 附加组件。这将启用自动TLS证书供应和续订,以便在部署Eclipse Theia时,可以通过HTTPS在您的域中对其进行访问。
就本教程而言,您将所有文件存储在下~/eclipse-theia
。通过运行以下命令来创建目录:
导航到它:
您将的Docker Compose配置存储在名为nginx-proxy
的文件中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在崩溃或系统重启的情况下重启容器。
保存并关闭文件。
通过运行以下命令来部署配置:
在这里,您将nginx-proxy-compose.yaml
文件名传递给命令的-f
参数,该参数docker-compose
指定要运行的文件。然后,传递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
您已经nginx-proxy
使用Docker Compose 部署了它及其Let’s Encrypt伴侣。现在,您将继续在您的域中设置Eclipse Theia并对其进行保护。
在本部分中,您将创建一个文件,其中包含用户需要输入的所有允许的登录组合。然后,您将使用Docker Compose将Eclipse Theia部署到您的服务器,并使用将其公开到您的安全域nginx-proxy
。
如上一步中所述,nginx-proxy
期望登录组合位于以公开域命名的文件中,htpasswd
格式和存储在/etc/nginx/htpasswd
容器中的目录下。映射到虚拟目录的本地目录不必与nginx-proxy
配置中指定的目录相同。
要创建登录组合,您首先需要htpasswd
通过运行以下命令进行安装:
该httpd-tools
软件包包含htpasswd
实用程序。
创建/etc/nginx/htpasswd
目录:
创建一个文件,该文件将存储您的域的登录名:
请记住theia.your-domain
用您的Eclipse Theia域替换。
要添加用户名和密码组合,请运行以下命令:
替换username
为要添加的用户名。系统将要求您输入两次密码。提供后,htpasswd
将用户名和哈希密码对添加到文件末尾。您可以重复此命令以添加想要添加的登录数。
现在,您将创建用于部署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
设置为always
与theiaide/theia:next
作为容器的图像。您还设置init
为true
指示Docker init
在容器内运行Eclipse Theia时用作主要流程管理器。
然后,在environment
部分中指定两个环境变量:VIRTUAL_HOST
和LETSENCRYPT_HOST
。前者传递给nginx-proxy
它并告诉它容器应该暴露在哪个域,而后者由其“让我们加密”附加组件使用并指定要向哪个域请求TLS证书。除非您指定通配符作为的值VIRTUAL_HOST
,否则它们必须相同。
切记theia.your-domain
用所需的域替换,然后保存并关闭文件。
现在,通过运行以下命令部署Eclipse Theia:
最终输出将如下所示:
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,接下来将开始使用编辑器。
查看更多 https://nihaow3.com/articles/how-to-set-up-the-eclipse-theia-cloud-ide-platform-on-centos-7/