【Linux】浏览器写代码!部署code-server远程vscode网页

news2024/11/17 17:47:45

部署code-server远程vscode网页,在浏览器上写代码!

参考文档 https://developer.aliyun.com/article/876967#slide-7

本文首发于 慕雪的寒舍

1.什么是code-server?

注意,这不是在linux系统上安装vscode软件(和windows一样的vscode客户端)

开源仓库 https://github.com/coder/code-server

code-server是一个社区项目(非微软官方)其作用是在你的linux主机(云服务器)上部署一个可以在浏览器上访问的vscode页面,类似官方的vscode.dev

微软官方推出的vscode网页版 https://vscode.dev/

它可以通过浏览器的api访问你电脑上的本地文件,此时浏览器就是一个vscode客户端

image-20230309214517648

code-server同理,其访问的是你linux服务器上的文件,作用类似于vscode插件remote ssh,让我们可以用浏览器,在任何电脑、平板上进行远程开发,无须下载vscode客户端或者ssh软件!

image-20230309223145036

1.1 官方的vscode-server?

微软官方确实有一个vscode-server,在官网可以下载。我测试了之后,发现它是打了一个隧道,通过vscode.dev的子域名访问,会转发到你的主机上。

image-20230309230334118

在我这里的测试,发现压根连不上微软的服务器。想想其实也很正常,因为vscode-server的文档页面连中文都没有,再加上微软的服务器,国内用不了也是意料之中

2.安装

2.1 下载安装包

截至本文创作时间23-03-09,code-server的最新版本是4.10.1,可以用下面的命令获取到linux下的安装包

wget https://github.com/cdr/code-server/releases/download/v4.10.1/code-server-4.10.1-linux-amd64.tar.gz 

如果上面这个命令你无法访问,可以去github的releases里面手动下载安装包

https://github.com/coder/code-server/releases/

我的系统是amd64,即x86架构。在github里面也是找linux amd64的包进行安装

$ uname -a
Linux 1c2261732150 5.10.120 #0 SMP Fri Jan 6 08:05:47 2023 x86_64 x86_64 x86_64 GNU/Linux

如果你使用的是树莓派等设备,请用uname -a确认你的系统架构,并下载对应的包


github的release下载慢,可以用下面这个网站加速(用迅雷下,速度起飞)

https://doget.nocsdn.com/#/

下载完成后,将压缩包用xftp传输到服务器上

2.2 解压

使用下面的命令解压刚刚下载好的压缩包

tar -zxvf code-server-4.10.1-linux-amd64.tar.gz

给解压出来的文件夹改个短名字vsc

mv code-server-4.10.1-linux-amd64 vsc

cd进入这个文件夹

cd vsc

ls -l,基本文件如下

total 792
drwxr-xr-x   8 muxue muxue   4096 Mar  4 12:26 .
drwx------   6 muxue muxue   4096 Mar  9 22:42 ..
drwxr-xr-x   2 muxue muxue   4096 Mar  4 12:26 bin
drwxr-xr-x   3 muxue muxue   4096 Mar  4 12:26 lib
-rw-r--r--   1 muxue muxue   1084 Mar  3 17:13 LICENSE
drwxr-xr-x 243 muxue muxue  12288 Mar  4 12:26 node_modules
-rw-r--r--   1 muxue muxue 480100 Mar  4 12:26 npm-shrinkwrap.json
drwxr-xr-x   5 muxue muxue   4096 Mar  3 17:13 out
-rw-r--r--   1 muxue muxue   5235 Mar  4 12:24 package.json
-rwxr-xr-x   1 muxue muxue   4877 Mar  3 17:13 postinstall.sh
-rw-r--r--   1 muxue muxue   3056 Mar  3 17:13 README.md
drwxr-xr-x   3 muxue muxue   4096 Mar  3 17:14 src
-rw-r--r--   1 muxue muxue 180977 Mar  3 17:13 ThirdPartyNotices.txt
drwxr-xr-x   2 muxue muxue   4096 Mar  3 17:14 typings
-rw-r--r--   1 muxue muxue  76688 Mar  4 12:26 yarn.lock

直接进入bin文件夹,我们需要用的可执行文件就在里头

$ ls
code-server

这个code-server就是我们要的可执行文件

2.3 启动code-server

export PASSWORD="配置一个密码"
code-server --port 8888 --host 0.0.0.0 --auth password

上面这个命令,启动之后,会创建一个端口为8888的web服务,此时使用ip:8888的方式,应该就可以访问到你的code-server服务了!

[2023-03-09T14:52:07.081Z] info  Wrote default config file to ~/.config/code-server/config.yaml
[2023-03-09T14:52:07.516Z] info  code-server 4.10.0 ac1fba8bde0c3f29bf6bc27d3d7d75cb2390a7c2
[2023-03-09T14:52:07.517Z] info  Using user-data-dir ~/.local/share/code-server
[2023-03-09T14:52:07.532Z] info  Using config file ~/.config/code-server/config.yaml
[2023-03-09T14:52:07.532Z] info  HTTP server listening on http://0.0.0.0:8888/
[2023-03-09T14:52:07.532Z] info    - Authentication is enabled
[2023-03-09T14:52:07.532Z] info      - Using password from $PASSWORD
[2023-03-09T14:52:07.532Z] info    - Not serving HTTPS

出现下面的页面,那就是安装成功了!输入你刚刚设置的密码,就可以像使用vscode一样使用code-server了!

image-20230309225342649

2.4 配置文件

首次启动了之后,会在你的用户路径下生成一个.config/code-server文件夹,里面有一个config.yaml

$ ls .config/code-server
config.yaml

打开这个文件,可以在里面配置code-server的密码,以及https访问。其余的配置项我还没有关注过,可以去看看github上的文档

bind-addr: 127.0.0.1:8080
auth: password
password: 64f1881b805917a449d80874
cert: false

默认的密码巨长,改成你自己的即可。在这里还可以修改默认绑定的ip和端口,后续启动code-server,就不需要手动指定了,直接运行即可

./code-server

2.5 tmux后台运行

nohup运行code-server有一点问题,所以要用tmux

如果没有这个软件,先安装

sudo yum install tmux

创建一个新会话,你可以理解为这是一个脱离于bash的独立shell页面,即便当前bash退出了,code-server也不会退出

tmux new -s vscode_online

开启新会话后,进入vsc的bin目录,启动code-server,命令是不变的

./code-server

image-20230310082417260

随后直接关掉当前bash,此时就已经实现了code-server的后台运行

# 接入会话
tmux a -t vscode_online

# 结束会话
tmux kill-session -t vscode_online

3.一些问题

3.1 nginx转发遇到1006错误

我在采用nginx转发的时候,遇到了这个问题

image-20230309221146320

个人猜测,这大概率是因为我在config.yaml里面配置了code-server的https导致的

cert: false # 关闭https

将cert修改回false,再次测试,发现还是有这个问题!

实际上,如果你进行了nginx转发,并不需要配置code-server的https

保持默认的http即可


后来发现是我的nginx转发设置有问题,正确的转发配置如下

location / {
	proxy_pass   http://127.0.0.1:8888;
	proxy_set_header Host $host;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection upgrade;
	proxy_set_header Accept-Encoding gzip;
}

下面给出一个nginx的https的完整配置文件!

server {
    listen 443 ssl;
    server_name  www.example.com;  # 域名
    # 注意证书文件位置,是从/etc/nginx/下开始算起的
    ssl_certificate cert/example.com.crt; 
    ssl_certificate_key cert/example.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    client_max_body_size 1024m;

    location / {
       	proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
        # 当下是直接用yum安装的nginx,可以直接用本地ip访问
        # 如果是docker安装的nginx,需要改为公网ip
        proxy_pass http://127.0.0.1:8888;
    }
}
# 强制重定向http -> https
server {
    listen 80; # 监听80端口
    server_name  www.example.com;  # 域名
    #把http的域名请求转成https
    return 301 https://$host$request_uri; 
}

3.2 C/C++插件

由于code-server是一个第三方项目,所以一些官方的插件(如pylance)直接在code-server的插件商店里面搜是没有的

我们需要去微软的vscode官网上下载插件的VSIX文件,使用本地文件的方式进行安装

https://marketplace.visualstudio.com/VSCode

image-20230309230141057

不过,pylance用这个办法依旧无法安装。看来有些插件只有官方的vsc才能安装

3.3 本地文件

如果你用过vscode的remote-ssh插件连过你这个服务器,用户目录下面会有两个文件夹

.vsc
.vscode-server

这两个文件夹是vscode的插件remote-ssh生成的,和本文安装的code-server无关!

3.4 tmux常用语句

tmux new  创建默认名称的会话(在tmux命令模式使用new命令可实现同样的功能,其他命令同理,后文不再列出tmux终端命令)

tmux new -s mysession  创建名为mysession的会话

tmux ls  显示会话列表

tmux a  连接上一个会话

tmux a -t mysession  连接指定会话mysession

tmux rename -t s1 s2  重命名会话s1为s2

tmux kill-session  关闭上次打开的会话

tmux kill-session -t s1 关闭会话s1

tmux kill-session -a -t s1  关闭除s1外的所有会话

tmux kill-server  关闭所有会话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虹科分享 | 如何主动保护个人信息 | 网络安全评级

网上报税和支付越来越流行,针对毫无防备的纳税人的税务欺诈也越来越频繁。以下是一些需要避免的常见网上税务骗局: 网络钓鱼诈骗 骗子利用电子邮件、短信或电话伪装成相关机构或报税软件提供商,诱骗人们提供他们的个人信息,或点击…

走进梦龙冰淇淋的生产线 揭晓“灯塔工厂”背后的秘密

作为一家积极履行社会责任的公司,联合利华和路雪在今年3月携手京东“青绿计划”,推出了包含梦龙、可爱多、千层雪、和路雪等多款可持续组合装产品,这一助力实现双碳目标的举措也引发了消费者的关注。其实,自联合利华太仓食品生产基…

我们都被 ChatGPT 给骗了?

引言: 用过 ChatGPT 的人都知道,当你与 chatgpt 对话的时候,它是“逐字输出”的,就像真的有个人在跟你打字一样。其实,这种技术并没有那么神奇,这种技术叫做“实时文本生成”或“逐字输出”技术&#xff0…

分布式事务Seata-AT模式

承接上文分布式事务-二阶段提交 Seata是开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务,包含AT、TCC、 SAGA、XA四种事务模式,为用户打造一站式的分布式解决方案。 Seata提供的4种事务模式都是由2PC(二阶段提交…

【C++的内联函数】

文章目录 一、什么是内联函数二、内联函数的优缺点三、使用内联函数的注意事项 一、什么是内联函数 用关键字inline修饰的函数叫做内联函数。 C编译器编译时会自动在被调用的地方展开。 二、内联函数的优缺点 内联函数的优点: 没有函数栈帧创建,提升…

干货分享 | 如何在业余时间学习数据分析?

从社会学背景的数分小白到独揽公司市场部的数据分析,和大家简单分享我的数据分析升级打怪之路。 简单说就是两点【培养数据分析思维】【提升数据分析技能】 思维的培养主要靠书籍和课程 以下是一些对我影响较大的书籍,按照【入门、进阶、高阶】简单做了…

torch.nn.Multiheadattention介绍

初始化参数: class torch.nn.MultiheadAttention(embed_dim, num_heads, dropout0.0, biasTrue, add_bias_kvFalse, add_zero_attnFalse, kdimNone, vdimNone, batch_firstFalse, deviceNone, dtypeNone) 允许模型共同关注来自不同表示子空间的信息。 多头注意力…

C#连接数据库失败,ORA-28040: No matching authentication protocol

C#连接数据库失败 1.原先使用的是oracle11,后来升级数据库到oracle19c,启动程序,数据库连接时报错"ORA-28040: No matching authentication protocol" 2.原因分析:最近服务器数据库版本升级到了19c,网上查了…

【技巧】如何以“只读方式”打开PPT文稿?附两个方法

以“只读方式”打开PPT文稿,可以防止意外修改文稿。今天小编就来介绍一下以“只读方式”打开PPT的两种方法。 方法一:无密码的“只读”模式 1、打开PowerPoint程序,点击菜单中的【文件】选项,再依次点击【打开】-【浏览】。接着在…

FL Studio水果萝卜编曲中文版软件V21版本详细功能介绍

FL Studio十分出色的数字音乐工作软件,其功能大致和Cubase相仿,FL Studio拥有自带的音频插件,并且随着软件的不断更新,使得FL studio不仅仅能够制作电子音乐,同时也能够承担古典、流行等风格的音乐。同时,F…

MySQL:创建数据库,数据表,主键和外键

目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表: 主键约束: 单字段主键: 多字段联合主键: 外键约束&…

《编码——隐藏在计算机软硬件背后的语言》精炼——第11章(门)

“The only source of knowledge is experience.” - Albert Einstein 引言 编码是一种处理并表达信息的方式,它包括摩斯电码、盲文、二进制语言等等,当然作为计算机类的经典书籍,这本书简述了计算机中以二进制数为基础的编码方式&#xff0…

5自由度并联机械臂实现搬运功能

1. 功能说明 本文示例将实现R306样机5自由度并联机械臂搬运牛奶到指定地点的功能。该机械臂由1个5自由度并联机械臂和1个单轴丝杠平台构成,机械臂通过并联的方式同时控制同一个端点的运动。其驱动系统采用大扭矩舵机和小扭矩舵机、执行末端为夹持机构。 2. 并联机械…

SEO优化中的外链与反链是什么意思?它们之间有什么区别?

在SEO优化中,外链和反链是两个非常重要的概念。虽然它们听起来很相似,但实际上却有着很大的区别。那么,什么是外链和反链?它们之间有什么区别呢?本文将为您详细介绍。 一、什么是外链 外链,也被称为入站链…

C++---区间DP---环形石子合并(每日一道算法2023.4.24)

注意事项: 本题是"区间dp—石子合并"的扩展题,dp思路完全一样,就不多详细讲了,可以去那篇文章看,这题主要讲一下如何处理环形。 题目: 将 n 堆石子绕圆形操场排放,现要将石子有序地合…

ES的索引结构与算法解析

作者:京东物流 李洪吉 提到ES,大多数爱好者想到的都是搜索引擎,但是明确一点,ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎,还是有明确搜…

DAY03_循环语句

1:for循环结构 来,继续啊,下面我们来学习循环结构语句,循环结构有三种语句,分别是: for循环 while循环 do…while循环 这三种循环可以做相同的事情,当然它们也有小的区别,至于它…

【LeetCode】322. 零钱兑换

322. 零钱兑换(中等) 思路 由于题目提到 「每种硬币的数量是无限的」,所以这道题本质上完全背包问题,我直接使用了空间压缩的写法。dp[j] 表示当前区间在 [0, i]的硬币可以表示成 j 的最小数量。注意,这里把 dp数组初始…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了,下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装,选择安装目录,注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

4.23学习周报

文章目录 前言文献阅读摘要简介方法结果结论 时间序列预测学习总结 前言 本周阅读文献《A novel hybrid model for water quality prediction based on synchrosqueezed wavelet transform technique and improved long short-term memory》,文献主要提出一种新型混…