热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我惊了,原来搭建一款云编辑器这么简单,超详细codeserver教程

手把手教你从零打造一款在线编辑器我曾经在一家在线教育公司做培训

手把手教你从零打造一款在线编辑器

我曾经在一家在线教育公司做培训的时候,发现他们一个很有竞争力的产品,就是NW电子教室(为了隐私,把前面两个字用首字母替代了),学员可以直接通过在线编辑器学习编程。这样的好处是学员无须自己配置繁琐的环境,把注意力都集中在核心知识点上。这个NW电子教室帮助他们从众多在线教育公司中脱颖而出,扩招了不少学生。当时我就在琢磨这个NW电子教室实现的原理,直到后来我遇到了code-server,才发现这一切并没有想象中复杂。
在这里插入图片描述

code-server库介绍:

code-server是一款由美国一个团队开发的在线的VS Code编辑器解决方案,基础版是免费的,也有付费的企业版。关于基础版与付费版,用法与gitlab类似。因为code-server使用了WebSocket协议,所以要使用它,得先准备一台2核CPU+4G内存以上配置的服务器。这里说一下我的心得,读者如果是作为学习目的,可以直接在阿里云官网上按量付费购买阿里云服务器,一台2核心+8G内存的服务器一个小时才0.5元左右,在学习完后,可以立马释放。既能享受云服务器带来的众多功能,又不用花太多钱。

安装:

code-server安装方式有多种:

  1. 通过脚本安装:sudo curl -fsSL https://code-server.dev/install.sh | sh。这种方式是最简单的,也是官方所推荐的。
  2. docker安装:

mkdir -p ~/.config
docker run -it --name code-server -p 127.0.0.1:8080:8080 \
-v "$HOME/.config:/home/coder/.config" \
-v "/data/project:/home/coder/project" \
-u "$(id -u):$(id -g)" \
-e "DOCKER_USER=$USER" \
codercom/code-server:latest

其中$HOME/.config用于存放设置VS Code的配置信息,/data/project是工作目录。
3. 通过源代码安装:需要先手动下载源代码,然后再安装,读者如果感兴趣可以查看官方源代码安装教程:https://coder.com/docs/code-server/latest/install#standalone-releases

小编用的是Ubuntu 20 LST版的操作系统,就用官方推荐的脚本的方式来安装。

安装完成后,我们将code-server添加为服务。执行以下命令:

sudo systemctl enable --now code-server@$USER

他会自动读取当前用户名,将服务设置为code-server@USER。这里不能直接设置服务名为code-server,至于原因,这里还没来得及深究。

然后我们就可以使用systemctl命令控制code-server的启停了:

# 启动code-server
sudo systemctl start code-server@$USER
# 关闭code-server
sudo systemctl stop code-server@$USER

配置code-server

code-server默认情况下会在/home/[username]/.config/code-server/下生成一个config.yaml文件。这个文件默认的配置为:

bind-addr: 127.0.0.1:8080
auth: password
password: 79abcf83e3sf938d0df23c81
cert: false

bind-add代表监听的域名和端口号,默认是限制本机的8000端口访问,如果想要提供外网访问,则可以修改为0.0.0.0:8080auth代表授权方式,默认是用密码,而下面的password字段则是安装后随机生成的密码,读者可以自行修改为自己好记的密码。比如我将文件内容修改为如下:

bind-addr: 0.0.0.0:8080
auth: password
password: 111111
cert: false

修改完配置文件后,记得重新启动。命令为:sudo systemctl restart code-server@$USER

体验:

接下来可以在浏览器中输入:http://[ip]:8080后出现一个登录页面。


输入之前配置文件中默认生成的密码后,即可进入到在线的编辑器页面了。

看到界面,我们有一种非常熟悉的赶脚。这不就是在线版的VS Code吗?

跟本地的VS Code一样,我们点击左边的Extension,然后安装一下汉化包Chinese(Simplified)

汉化完后的效果如下,不能说本地的效果毫不相干,只能说一模一样。

然后我们还可以再配置一下Python开发环境,同样点开扩展,然后搜索Python插件。


安装完后,左下角会出现系统中已经安装好的Python版本,然后点击他,在命令行中就会出现Python解释器。

这里我们创建一个app.py文件,写一个简单的Flask项目。

然后在浏览器中,我们访问:http://[ip]:5000,就能看到刚开发flask项目效果页面了。

实践了一段时间,用一个字来形容,那就是爽!以后只要我服务器开着,在任何时候任何地点任何设备(甚至是手机),我都能愉快的开发了!(o(╥﹏╥)o,无处不在的web狗)。

部署:

code-server是由node.js运行的项目,本身不具备非常强的web能力。因此如果想要真正用于生产环境,最好在前面加上一个nginx,通过sudo apt install nginx即可安装。安装后,在/etc/nginx/conf.d下添加配置文件,比如叫做codeserver.conf。然后填入以下代码:

server {
listen 80;
server_name [云服务器IP地址];
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}

另外还要记得把之前code-server配置中的bind-addr修改为127.0.0.1:8080。那么以后在浏览器中访问http://[ip]即可访问到在线编辑器了。

更多好文请移步公主号:
在这里插入图片描述


版权声明:本文为huangyong1314原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/huangyong1314/article/details/122700049
推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • YOLOV4 Pytorch版本训练自建数据集和预测
    1.程序下载本文程序核心部分完全参考开源代码:https:github.comWongKinYiuPyTorch_YOLOv4。只是从一种学习的角度去写了我的代码仓库,在基础上增加 ... [详细]
  • 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
    原文转载自「刘悦的技术博客」https:v3u.cna_id_202“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即 ... [详细]
  • 打开文件管理器_【教程】模组管理器3.1食用指南
    文编:byakko最近有部分小伙伴反应还不会使用unity模组管理器,现在我就给大家讲一下unity模组管理器——从下载到使用。完整视频版以下是无WiF ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
  • 注:此文章仅仅作为个人使用python过程中,认为好用开源包的记录。1.邮件功能yagmailyagmail是一个高度封装的邮件包,大大减少了发邮件的代码量。2.http请 ... [详细]
  • ROS入门:ORB_Slam2踩坑,RGBD无法获取数据
    ROS入门:ORB_Slam2踩坑,RGBD无法获取数据问题描述:思考:解决方法:ORB_Slam2ROSRG ... [详细]
author-avatar
灬L龙灬_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有