尝试一下code-server

以前一直在想,要是能在专门弄一台服务器用来编程就爽了。
找了很久,一般就vim加各种插件或者用同步的方式使远程和本地代码一样。
如今vscode有几个解决方案了,决定尝试一波code-server。

vscode

一般人应该都认识了吧,就不多说了

目前vscode的远程解决方案

vscode remote

了解一下,后面补

visual studio online

了解一下,后面补

主要是由azure提供云服务,要钱,还有点贵。

https://azure.microsoft.com/zh-cn/pricing/details/visual-studio-online/

也可以自托管

https://docs.microsoft.com/en-us/visualstudio/online/how-to/vscode#self-hosted

code-server

本文章就是第一次使用code-server写的

非vscode官方出品的一款远程ide。

gayhub

需要自己用服务器搭建

搭建完成后,就可以在任意有网络的地方用浏览器敲代码了(不知有没有限制浏览器)

code-server使用

安装及启动

参见 gayhub

本屌选择的二进制安装

  1. 简单,一句代码就启动
  2. 本屌有洁癖,自从使用docker以来,开发环境都转移到一个个容器中去了
  3. 本屌喜欢用命令行终端

    像git这类,以及运行代码等都是直接使用命令行

    综合1和2,方便在vscode的终端中直接进入宿主而非容器中

    如果用容器安装,打开终端时就直接进入容器了

  4. 这样的话,要考虑安全性

    • 运行code-server的用户权限不能高
    • 禁止该用户su root,能敲代码能运行就行了
    • 项目只涉及到数据库的用户信息,也不应该有高权限,就给一般的crud。千万别暴露生产环境的敏感信息

综上就以下几句命令就装好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载
# wget xxx( 在这里找 [releases](https://github.com/cdr/code-server/releases) )
wget https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz


# 解压
tar -zxvf xxx

# cd
cd xxx

# 运行(免密))
# --auth none 是不用登录的意思,我目前装把code-server 装在本地,所以这么搞。放线上肯定要登录的
./code-server --auth none

看看有哪些指令

1
./code-server --help

常用的:
–auth
–port
–host
–cert
–cert-key

所以,正常情况下,放在远程服务器上的命令为

1
2
export PASSWORD=xxxxxx
./code-server --auth password [--port xxx --cert xxx --cert-key xxx]

codiing

  1. 连上code-server

    打开chrome,localhost:8080,就看到了我们熟悉的画面

  2. 装扩展

    我这边默认情况下,连不上marketplace,科学上一下网就行了

    我装了个 jetbrains ide keymap

  3. 打开项目目录

    点explorer里的open filder,然后找到项目目录就行了

  4. 愉快的coding

    默认自动保存的修改的代码

运行代码

我习惯了docker运行,一般的项目下都带了个docker-compose.yml

然后,宿主机肯定是装了docker和docker-compose的

所以,在浏览器的vscode上打开终端,然后 docker-compose up 就运行起来了

作为服务启动

一般用systemd管理服务,本屌一般用debian

在 /etc/systemd/system/ 目录新增一个service文件,比如名为(code-server.service),录入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[Unit]
Description=code-server
After=network.target
After=syslog.target

[Service]

# 工作目录,也就是code-server的目录,可以不要。如果不要,则ExecStrt中的code-server就要写完全路径
WorkingDirectory=/path/to

# 环境变量,将PASSWORD= 后面改为自己的
Environment="PASSWORD=thisispassword"

# 装/path/to 改为你的code-server的完整路径,后面的参数根据自己的需要添加
# ExecStart=./code-server --auth password [--port xxx --cert xxx --cert-key xxx [other args]]
# 这一句与注释中那一句的区别就是,多作了一步加载用户的环境变量,(这里不要选.bashrc,了解了一下,.bashrc一般管交互)
ExecStart=/bin/bash --login -c 'source ~/.bash_profile && ./code-server --auth password [--port xxx --cert xxx --cert-key xxx [other args]]'

# 用户,由谁运行,不加这行会以root运行,很危险的
User=debian
Type=simple
LimitNOFILE=65535
Restart=always

[Install]
WantedBy=multi-user.target graphical.target

修改好了 code-server.service 文件以后,执行以下命令

1
2
3
4
5
6
7
8
9
10
systemctl daemon-reload

# 启动code-server
systemctl start code-server.service

# 关闭code-server
systemctl stop code-server.service

# 随系统启动
systemctl enable code-server.service

ok,完工

与平常的不同

  1. 一份代码多处运行???

    no,以前就是到处写代码到处运行,每次换电脑就要装一次ide。
    在没用dokcer之前,还要装一次运行环境

    即使有了dokcer,也要把docker安装上,国内这速度。。。

    现在,只要装个chrome,理论上就可以敲代码了和运行程序了

    不管人在哪里,代码都在同一个地方,运行环境也只在同一个地方

  2. 数据库的同步问题也解决了

    因为公司穷,没有公网的开发用的数据库,数据库都在自己的电脑上。
    然后数据改了后,就要到处同步结构

    现在,这个问题就不用考虑了,爽

  3. 习惯在linux上开发和运行程序的问题

    因为大多时候,我们开发的程序都是在linux上运行,几年来,已经习惯了在linux上做开发

    有时,会有winform做客户端的需求,这时切换到win上面去,真是完全适应不了了后端的开发

    1. 拿php有些功能不能在win上面跑

    2. win下的docker超难用

    3. powershell 和 shell 差得也不是一点半点

      现在解决了开发和运行问题后,那么切到win上面去做其它的,应该也会变得简单

  1. 网络延迟问题目前还没测

    因为目前,code-server也架设在本地,不知放在公司时,延迟大不大。这个后面再说

  1. 浏览器快捷键问题

    除了已发现的ctrl+ v的问题,可能还有其它的快捷键和浏览器冲突。

    只是目前没有深度使用,还没有发现

    据说可以通过打包成chrome app来解决,这个后面再尝试一下

遇到的坑

  • 最大的坑,ctrl+v 不能用

    这就很尴尬了,没这个组合键,还怎么敏捷开发呢。得找一下原因,不知是否某扩展所致

    1
    command 'editor.action.clipboardPasteAction' not found

    刚刚做了测试,把jetbrains ide keymap (0.1.8) 插件禁用了后,就能正常使用了。

    应该是浏览器上editor.action.clipboardPasteAction不支持

    解决办法:

    ctrl + shift + p

    搜 “keyboard shortcuts”

    点 open key boart shortcuts

    在 keyboard shortcuts 里再搜 “ctrl + v”

    找到 command里为 “editor.action.clipboardPasteAction”

    点击右键,remove keybinding

    解决666

  • 安装扩展要科学上网

    反正我没科学上网的时候,半天加载不出来扩展列表

  • 单个实例不能多用户使用

    目前,单个实例只能一个用户使用

    如果团队使用的话,可以考虑由不同用户运行多个实例,监听不同端口

    不过一个实例几百m,很吃内存,希望能解决这个问题吧

0%