然而,该环境使用微软的服务(Services)器,无法对硬件平台进行控制,并且需要付费,如果我们已经有一台自己的服务器,可以尝试搭建:code-server这个开源的,可以在浏览器中使用的vscode。
在此基础(Base)之上,为了方便每次服务器开机时自动启动code-server,并使用守护进程(Progress)管理,需要为code-server注册启动项。
笔者使用的服务器系统是UbuntuServer18.04,可以通使用systemd建立开机启动服务。
在/etc/systemd/system/目录中,建立code-server.service文件,编辑其内容如下:
[Unit]Description=codeservierAfter=network.target[Service]Type=simpleUser=启动code-server的用户Restart=on-failureRestartSec=20sEnvironment=PASSWORD="你设定的访问密码"ExecStart=/code-server的解压路径/code-server--cert公钥路径--cert-key私钥路径--bind-addr0.0.0.0:端口ExecReload=/code-server的解压路径/code-server--cert公钥路径--cert-key私钥路径--bind-addr0.0.0.0:端口[Install]WantedBy=multi-user.targetcode-server在启动时,会检测环境变量中PASSWORD变量的值,如果未定义,则会使用一个随机(Random)的密码,如果需要手动指定,需要自己设置该环境变量,在service文件中,可以定义进程启动时的环境变量,配置文件(Profile)中的Environment=PASSWORD="你设定的访问密码"对该变量进行了修改。
之后使用命令systemctlenablecode-server完成开机启动的配置,并使用以下的命令控制守护进程。
#关闭开机启动systemctldisablecode-server#启动服务systemctlstartcode-server#停止服务systemctlstopcode-server#重启服务systemctlrestartcode-server#查看服务状态systemctlstatuscode-server2.内网穿透如果你的服务器本来就有公网ip地址,那么完全不需要该步骤,但由于笔者使用的服务器在学校的实验室里,没有公网ip地址,因此如果需要公网使用,需要配置内网穿透服务。
笔者现在使用的内网穿透工具是frp,网络上配置frp的教程也有很多,这不是本文的重点,code-server需要通过内网穿透工具进行端口映射,把上文中code-server配置的端口,映射到有公网ip地址的服务器上的一个端口,这样,访问公网服务器上的该端口,就可以访问到code-server。
这一步完成之后,我们就可以通过公网服务器ip地址+端口,访问code-server服务了。
下面给出了笔者的nginx配置,注意由于code-server使用了ws协议,因此需要在nginx中建立一个upstream(下文中的upstreamwss_code),如果直接在server中写死,可能在cdn进行回源时会存在问题。
由于code-server在浏览器加载时,需要请求服务器端的一些资源文件,实测大约需要传输10多M资源,由于笔者的服务器只有5M的带宽,访问速度较慢,因此笔者使用cdn来尝试对code-server的访问进行加速。
笔者选用的CDN是腾讯云的CDN,配置完需要注意这些事项:
至此,就完成了code-server的搭建,你真正的拥有了一个全平台可用的云端代码编写环境,还可以直接安装vscode应用商店中的海量扩展插件(甚至支持vim插件)。