Ubuntu下部署code-server——浏览器里的vscode

2023-05-16

背景

最近闲来无事,无意间看到了知乎上一篇介绍vscode的vs online插件的文章,于是心血来潮想要试一试,后来发现居然还要绑定信用卡,然而我并没有他所要求的那种信用卡,况且没有梯子的我连接其网站还特别慢。无奈上GitHub看看有没有什么替代品,于是就发现了一个叫做code-server的项目,能够支持远程部署自己的vscode,不要求远程服务器上要有图形界面,命令行即可,就可以在浏览器中愉快的写代码啦。

步骤

1. 准备服务器

首先是一个服务器,考虑到目前的code-server只支持Linux和Darwin,身为服务器好像也没什么选择了。另外一定得要是64位的,32位的已经被放弃支持了。

笔者的服务器是Ubuntu 16.04版本,在阿里云上面(这里不得不提一句,如果是学生朋友的话阿里云有云翼计划服务,9.9一个月的服务器,一年只要100+,虽然只有1核,但是部署code-server还是够了的(虽然官方建议2核及以上...))。

登录服务器之后获取root权限。(考虑到之后的监听本地地址的原因,笔者这里监听本地地址0.0.0.0需要root权限才可以)

2. 下载项目

GitHub上的地址在 https://github.com/cdr/code-server ,进去之后选择releases

进入到release界面之后选择下载最新的release版本,笔者这里的是2.1698-vsc1.41.1

使用 wget 命令从相应的链接上下载压缩包到本地,然后解压缩,发现有几个文件,分别是:

  1. code-server 是一个二进制文件,也就是我们待会要执行的服务。
  2. LICENSE.txt 和 README.md以及ThirdPartyNotices.txt都是自带的一些说明性的文件,不用管它。
  3. 其他的是笔者自己创建的文件和文件夹,不用管。

所以从上面来看,其实真正重要的只有code-server这个文件,那么我们现在就可以部署啦!

3. 部署

按照官方文档的步骤,部署其实很简单,只需要

./code-server

即可,不过这样子有几个问题:

  1. 只能够监听本地地址,也就是 127.0.0.1 ,从外网无法访问。这样子和玩具无异。
  2. 默认监听端口为 8080。这个倒是没什么,不过如果你每次从浏览器访问都想写 IP:8080 的话...
  3. 使用随机生成的密码进行登录。这个实在是太麻烦了,倒不是说不用密码,密码肯定得要上的,但是每次随机生成的密码实在是太乱了,一串乱码,如果每次登录都要输入这么一长串玩意,估计每次登录都要上服务器看一看密码才行,如果靠某些东西把密码记录下来的话未免也太麻烦了,如果能够用自定义密码就好了。

那么针对以上事项,做出相应对策:

  1. 监听地址可以传入参数 --host 0.0.0.0 改为监听本地地址。
  2. 监听端口可以传入参数 --port 80 改为监听http的默认访问端口,这样从浏览器访问时只需要填写IP即可。
  3. 传入 PASSWORD 环境变量,来定义自定义密码。

于是,我们的启动命令就变成了:

export PASSWORD="你自己的密码" && ./code-server --host 0.0.0.0 --port 80

就ok了。进入浏览器访问服务器公网ip,然后就会发现已经成功运行啦,现在就可以随时随地改需求啦!(误)

没错,本文就是在浏览器里通过code-server写哒!

注意事项

最后,有一些注意的事项需要说明一下:

  1. code-server的插件市场和vscode的插件市场是不共用的,所以有些vscode里面的插件在code-server里面可能无法找到,不过可以通过VSIX的形式进行安装。

    可以去vscode的插件市场下载vsix的插件然后通过这种方式进行安装。

  2. 用上面的方法进行部署之后直接退出和服务器的连接是可行的,不过服务器上会始终运行一个终端,在阿里云里面通过网页上的远程连接方式连接之后如果断开连接终端是默认关掉的,这样终端中所运行的code-server服务也会随之消失,如果要使其成为后台运行的服务,需要使用 nohup 命令和命令末尾加 & 的方式来启动后台进程。

     export PASSWORD="你自己的密码" && nohup ./code-server --host 0.0.0.0 --port 80 &
    
  3. 有时候code-server会莫名其妙的终止进程(笔者至今还没发现原因),所以只好搞了个定时检测进程的脚本,通过cron服务做定时检测,检测当前是否有目标进程,如果没有的话则启动相应进程。

  4. 默认采用http协议连接,保密性不是很好,按照官方文档的描述,可以通过https进行连接,不过得先为服务器申请一个证书......

结论

啊,终于到结论部分了,结论其实没什么好说的,当前的code-server能够支持用户自己部署,且特别方便,不像vscode还需要注册Azure账号完了还要绑定信用卡......不过你要是问我更支持官方还是更支持同人的话,我当然会回答更支持官方了。随着5g时代的到来,感觉远程开发会成为下一个开发工具的热点。目前无论是vs online也好code-server也好,都只是这方面的一个探索,希望以后能够出现真正稳定快速的远程开发工具吧,这样不仅可以“一次编写,到处部署”,还可以“一次部署,到处编写”了,真正做到了随时随地部署,随时随地改需求。(误)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu下部署code-server——浏览器里的vscode 的相关文章

  • Linux yum安装redis

    1 安装redis数据库 yum install redis 2 下载fedora的epel仓库 yum install epel release 3 启动redis服务 systemctl start redis 4 查看redis状态
  • Centos 开启X11 Forwarding,实现无桌面环境运行GUI软件

    文章目录 修改SSH配置文件sshd config安装 X11 Forwarding 相关软件重启 sshd 服务 xff0c 并重新SSH连接验证 我们新安装Centos时可能会选择最小安装 xff0c 不安装桌面环境 xff0c 但是后
  • Python pyttsx3|文本朗读(各种语言)

    Python文字转语音 程序员 xff0c 在其他人眼中往往都是高冷的存在 xff0c 在他们的眼中能用代码解决的问题绝对不考虑其他的方法 xff0c 本文让我们用Python来提升一下高冷的档次 xff0c 让我们用代码来 说话 安装py
  • Spring Security 出现 'login.html?error' is not a valid redirect URL 异常

    原因是这个URL地址要以 打头 例如 xff1a 报错的代码 xff1a http span class token punctuation span span class token function formLogin span spa
  • 5. Python3的基本类型(元组)

    Python3的基本类型 xff08 元组 xff09 1 Python 的元组与列表相似 xff0c 不同之处 xff1a 元组不能修改 xff0c 元组使用小括号 xff0c 列表使用方括号 2 元组的创建 xff1a 只需要在括号中添
  • group by内部排序

    规则 xff1a 第一 xff0c 凡是在group by后面出现的字段 xff0c 必须同时在select后面出现 xff1b 第二 xff0c 凡是在select后面出现的 同时未在聚合函数中出现的字段 xff0c 必须同时出现在gro
  • 李宏毅机器学习(四)Spatial Transformer Layer

    学习内容 架构 xff1b 目的就是克服CNN的旋转和缩放不变性的缺点的 xff01 前情提要 CNN is not invariant to scaling and rotation xff1b CNN对缩放和旋转不是不变的 xff1b
  • python修改pip安装镜像源

    pip 默认的安装源安装真的很慢 xff0c 所以我们可以换成国内的一些优质的安装源 通用临时方法 pip install package name i https pypi tuna tsinghua edu cn simple 永久修改
  • 深入理解 Java 线程池的实现原理

    文章目录 1 线程状态2 线程池2 1 线程池的作用2 2 线程池的实现2 2 1 线程池内部状态 1 线程状态 既然要说线程 xff0c 我们就先来了解一下线程的几种状态 xff1a span class token keyword pu
  • windows server安装域控及原理(小白向)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 安装环境一 安装域控二 说明一下遗留的问题总结 这个是一系列的博客文章 xff0c 域控只是开始 安装环境 windwos任意s
  • 详述 Redis 选择单线程模型的原因以及 I/O 多路复用

    文章目录 Redis 选择单线程模型的原因概述设计单线程模型可维护性并发处理性能瓶颈 引入多线程删除操作 总结 Redis 和 IO 多路复用几种 I O 模型Blocking I OI O 多路复用 Reactor 设计模式I O 多路复
  • 新一代垃圾回收器 ZGC 的探索与实践

    文章目录 GC之痛CMS 与 G1 停顿时间瓶颈标记阶段停顿分析清理阶段停顿分析复制阶段停顿分析 ZGC原理全并发的 ZGCZGC 关键技术ZGC 并发处理演示 ZGC 调优实践调优基础知识理解 ZGC 重要配置参数理解 ZGC 触发时机理
  • 详述 Spring 中 Bean 的作用域、事务的隔离级别以及传播行为

    文章目录 Bean 作用域XML 声明singletonprototyperequestsessionglobalSession 注解声明 事务隔离级别事务传播行为 Bean 作用域 Spring IOC 容器创建一个 Bean 实例时 x
  • 饿了么交易系统 5 年演化史

    作者介绍 xff1a 杨凡 xff0c 花名挽晴 xff0c 饿了么高级架构师 xff0c 2014 年加入饿了么 xff0c 2018 年随饿了么被阿里巴巴收购一同加入阿里巴巴 xff0c 4 年团队管理经验 xff0c 4 年主要从事饿
  • 带你了解「美团、百度和滴滴」的分布式 ID 生成系统

    文章目录 美团背景常见方法介绍UUID类snowflake方案数据库生成 Leaf 方案实现Leaf segment 数据库方案双 buffer 优化Leaf 高可用容灾 Leaf snowflake 方案弱依赖 ZooKeeper解决时钟
  • Spring Cloud 优雅下线以及灰度发布

    文章目录 前言优雅下线常见的下线方式优雅的下线方式 灰度发布蓝绿部署滚动部署金丝雀部署 前言 在生产环境中 xff0c 如何保证在服务升级的时候 xff0c 不影响用户的体验 xff0c 这个是一个非常重要的问题 如果在我们升级服务的时候
  • 详述 IntelliJ IDEA 遇到 Maven 项目 pom.xml 文件没有识别的解决方法

    文章目录 问题现象解决方法 问题现象 有的时候 xff0c 我们可能会遇到 IDEA 没有识别 Maven 项目pom xml的问题 xff0c 其表现出来的现象就是 xff1a 究其原因 xff0c 就是 IDEA 把pom xml文件当
  • Spring Boot 自定义 Swagger2 请求 URL 路径的两种方法

    文章目录 前言方法一 xff1a 修改应用根路径方法二 xff1a 引入 Swagger2 前端代码总结 前言 首先 xff0c 把 Swagger2 的依赖引进来 xff1a span class token comment lt swa
  • 使用 Apollo 为静态变量赋值的方法

    Apollo xff08 阿波罗 xff09 是携程框架部门研发的分布式配置中心 xff0c 能够集中化管理应用不同环境 不同集群的配置 xff0c 配置修改后能够实时推送到应用端 xff0c 并且具备规范的权限 流程治理等特性 xff0c
  • 记一次 Gorm 批量插入遇到的问题以及解决方案

    文章目录 问题现象解决方案 问题现象 最初 xff0c 我们用的是老版本的 Gorm xff0c 但是因为老版本不支持批量插入的功能 xff0c 所以我们将 Gorm 做了升级 xff0c 升级到1 21 9版本 https github

随机推荐