Goland 远程 Linux 环境开发真香!
更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io
前言
今天看到我的 Goland 可以更新了,于是简单看了一下 Release Note,发现了一个似乎期待已久的功能:Code With Me,这个功能有点类似于 VSCode 中的 Remote Developer[1],但是 Jetbrains 以自己的方式实现成另外一种形式,于是我就体验了一把,顺便写了一下入坑指南。
那首先,如果你需要玩这个功能,你得升级你的 IDE 到 2020.3 版本,这是当前最新的版本了。
1. 简单使用
简单使用其实就是 JetBrains 家的指导了,真的很简单了,只需要复制一个分享链接,然后给别人,别人在浏览器打开就可以了,后续直接就等待客户端安装之类的,不一会就连接上了,具体的步骤为:
共享方
-
安装 “Code With Me ”插件
-
在界面上点击共享按钮
-
然后选择分享的权限,复制分享链接,然后发给对方即可
我是全选的,你可以按照自己的需求来。
-
在对方接入之后,记得 “同意”对方接入,这样双方就可以看到同样的项目界面了。
接入方
如果你想看别人的项目的话,那么基本上差不多,首先你得有别人的分享链接,然后:
-
安装 “Code With Me ”插件
-
在界面上点击加入别人的项目
-
等待别人确认就可以加入了。
2. 内网玩法
这个才是我的重头戏,默认情况下如“简单使用”中的介绍使用的都是公网的连接,速度很可能不尽人意,最好还是可以公司局域网才是真的好,所以这里我就介绍一下如何通过局域网来玩。
和公网的区别就在于局域网的需要你自己搭建一个服务器,然后大家通过这个私有的服务器接入,这同时也要求所有的参与者都要能访问这个服务器。自建服务器需要 Docker 和 Docker-Compose 支持,如果你本地没有安装的话,可以参考一下我的文章进行安装:
-
CentOS 安装 Docker [2] -
Linux Install Compose [3]
还有一些关于 SSL 的部分,如果不了解,可以看一下我的这份指导:
-
Nginx SSL 双向认证,key 生成和配置 [4]
自建 CWM 服务器
1、下载私有服务器
2、目录结构
下载下来之后,我的文件目录是这样的:
$ ls -al
-rw-r--r-- 1 root root 54M Dec 4 16:25 lobby-server-linux-x64.1165.tar.gz
-rw-r--r-- 1 root root 14M Dec 4 16:25 ws-relayd1038
然后需要稍作调整:
$ mkdir relay
$ cp ws-relayd1038 relay/ws-relayd
$ mkdir lobby
$ cp lobby-server-linux-x64.1165.tar.gz lobby/lobby-server-linux-x64.tar.gz
3、设置 SSL 证书
$ openssl ecparam -name secp384r1 -genkey -noout -out lobby/lobby_private.pem
$ openssl ec -in lobby/lobby_private.pem -pubout -out lobby/lobby_public.pem
$ openssl req -new -key lobby/lobby_private.pem -out lobby/lobby.csr -config lobby/ssl.conf
$ openssl x509 -req -days 365 -in lobby/lobby.csr -signkey lobby/lobby_private.pem -out lobby/lobby.crt -extensions v3_req -extfile lobby/ssl.conf
$ openssl ecparam -name secp384r1 -genkey -noout -out relay/relay_private.pem
$ openssl ec -in relay/relay_private.pem -pubout -out relay/relay_public.pem
$ openssl req -new -key relay/relay_private.pem -out relay/relay.csr -config relay/ssl.conf
$ openssl x509 -req -days 365 -in relay/relay.csr -signkey relay/relay_private.pem -out relay/relay.crt -extensions v3_req -extfile relay/ssl.conf
4、创建 relay Dockerfile
$ cat > relay/Dockerfile << EOF
FROM alpine:latest
ARG DISTRIBUTION_VERSION=""
COPY ws-relayd /ws-relayd
RUN chmod +x /ws-relayd
COPY relay_public.pem /relay_public.pem
CMD /ws-relayd -addr relay:3274 -jwt-key-type ecdsa -jwt-key-file /relay_public.pem
EOF
5、创建 lobby Dockerfile
$ cat > lobby/Dockerfile << EOF
FROM debian:buster-slim
ARG DISTRIBUTION_VERSION=""
ADD lobby-server-linux-x64.tar.gz /home/lobby-server
COPY lobby_private.pem /home/lobby-server/lobby_private.pem
RUN apt-get update && apt-get install -y unzip net-tools procps && apt-get clean
WORKDIR /home/lobby-server
ENV JAVA_HOME /home/lobby-server/jbr
ENV SERVER_PORT 2093
ENV BASE_URL https://lobby.cwm.internal
ENV ENABLED_FEATURES p2p_quic,direct_tcp,ws_relay
ENV FORCE_RELAY_URI wss://relay.cwm.internal
ENV RELAYS_ECDSA_JWT_KEY_FILE /home/lobby-server/lobby_private.pem
ENV REDIS_HOST redis
ENV REDIS_PORT 6379
ENTRYPOINT ["bin/lobby-server"]
EOF
6、创建 Nginx 配置
$ mkdir -p nginx/ssl
$ cp lobby/lobby.crt nginx/ssl/
$ cp lobby/lobby_private.pem nginx/ssl/
$ cp relay/relay.crt nginx/ssl/
$ cp relay/relay_private.pem nginx/ssl/
$ cat > nginx/nginx.conf << EOF
events {}
http {
server {
listen 443 ssl;
server_name relay.cwm.internal;
ssl_certificate /etc/ssl/nginx/relay.crt;
ssl_certificate_key /etc/ssl/nginx/relay_private.key;
location / {
proxy_pass http://relay:3274;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
server {
listen 443 ssl;
server_name lobby.cwm.internal;
ssl_certificate /etc/ssl/nginx/lobby.crt;
ssl_certificate_key /etc/ssl/nginx/lobby_private.key;
location / {
proxy_pass http://lobby:2093;
}
}
}
EOF
7、运行服务
$ mkdir -p redis/data
$ cat > docker-compose.yaml << EOF
version: "3.8"
services:
nginx:
image: nginx:latest
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/ssl:/etc/ssl/nginx:ro
ports:
- 443:443
relay:
build:
context: ./relay
args:
DISTRIBUTION_VERSION: 1.0
lobby:
build:
context: ./lobby
args:
DISTRIBUTION_VERSION: 1.0
redis:
image: redis:latest
command: ["redis-server", "--appendonly", "yes"]
volumes:
- ./redis/data:/data
EOF
$ docker-compose up
然后就坐等运行完毕了。
使用自建服务器
然后就和普通的一样使用了:
参考
-
Code With Me administration guide [5]
参考资料
Remote Developer: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
[2]CentOS 安装 Docker: https://liqiang.io/post/kubernetes-tutorial-part-2-Install-kubernetes-72bed544#安装前提
[3]Linux Install Compose: https://docs.docker.com/compose/install/#install-compose
[4]Nginx SSL 双向认证,key 生成和配置: https://liqiang.io/post/secure-nginx-with-bidirect-with-self-cert-keys
[5]Code With Me administration guide: https://www.jetbrains.com/help/cwm/code-with-me-administration-guide.html
原文链接:https://liqiang.io/post/code-with-me-the-new-feature-for-jetbrains-17024c0d
你可能还喜欢
推荐阅读
1.
2.
3.
4.
5.
6.