CentOS7部署code-server并配置Nginx反向代理

简介

VS Code是一款功能非常强大、拥有丰富插件的跨平台(Windows,Mac,Linux)开源免费的编辑器,非常好用。最近在学习Python过程中,更是感受到了它的强大,其功能不亚于专业的IDE。

code-server是VS Code运行在远程服务器上,然后通过浏览器访问即可使用VS Code,本篇文章详细介绍了如何远程部署code-server以及过程中遇到的问题及对应的解决方案。

Github地址:https://github.com/cdr/code-server

Github上的演示

CentOS部署coder-server

cdr/code-server部署方式有两种,可以使用docker部署,或者直接下载二进制文件即可运行。这里我使用二进制进行部署。

我直接使用远程服务器部署,可以随时使用任何电脑来写代码,非常方便。当然也可以使用Windows10 WSL或者本地Linux部署。

  1. 使用ssh连接远程服务器

  2. Releases · cdr/code-server下载最新版本的code-server

1
2
3
wget https://github.com/cdr/code-server/releases/download/2.1478-vsc1.38.1/code-server2.1478-vsc1.38.1-linux-x86_64.tar.gz

tar xzvf code-server1.1156-vsc1.33.1-linux-x64.tar.gz
  1. 启功code-server
1
2
cd code-server1.1156-vsc1.33.1-linux-x64/
./code-server

但是很不幸,控制台输出错误(亲测Ubuntu18可直接启动),错误信息:

1
2
3
4
[root@localhost code-server1.939-vsc1.33.1-linux-x64]# ./code-server
./code-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./code-server)
./code-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./code-server)
./code-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./code-server)

具体解决方法查看最下面的参考1,我使用参考文章的方法一解决的。具体步骤如下:

  • 获取libstdc++.so.6.0.25版本库:
1
2
3
cd /opt
wget https://adbin.top/packages/lib64.tar.gz
tar xzvf lib64.tar.gz
  • 备份原来的libstdc++.so.6,并链接刚刚解压的libstdc++.so.6文件
1
2
3
cd /usr/lib64
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /opt/lib64/libstdc++.so.6.0.25 libstdc++.so.6
  • 完成后即可解决libstdc++.so.6的问题,进入目录启动code-server,控制台输出:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    (node:29316) [DEP0005] DeprecationWarning: Buffer() is deprecated due to securit                                                                                                             y and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or                                                                                                              Buffer.from() methods instead.
    INFO code-server v1.1156-vsc1.33.1
    INFO Additional documentation: http://github.com/cdr/code-server
    INFO Initializing {"data-dir":"/root/.local/share/code-server","extensions-dir" :"/root/.local/share/code-server/extensions","working-dir":"/root/code-server1.1 156-vsc1.33.1-linux-x64","log-dir":"/root/.cache/code-server/logs/20190915051238 441"}
    INFO Starting webserver... {"host":"0.0.0.0","port":8443}
    WARN No certificate specified. This could be insecure.
    WARN Documentation on securing your setup: https://github.com/cdr/code-server/b lob/master/doc/security/ssl.md
    INFO
    INFO Password: fb4110db1c8215010522d8ab
    INFO
    INFO Started (click the link below to open):
    INFO https://localhost:8443/
    INFO
    INFO Starting shared process [1/5]...
    WARN stderr {"data":"(node:29330) [DEP0005] DeprecationWarning: Buffer() is dep recated due to security and usability issues. Please use the Buffer.alloc(), Buf fer.allocUnsafe(), or Buffer.from() methods instead.\n"}
    INFO Connected to shared process

浏览器输入https://IP:8443或者https://域名:端口即可访问,访问密码为控制台输出的Password后的字段。

  1. 注意必须使用https进行访问
  2. SSL证书为code server自签发的证书,可能会被浏览器提示不安全,直接访问即可(后面会解决)
  3. 记得放行8443端口,我是使用宝塔面板控制的,在”首页-安全”里面放行即可
  4. 重新启动后,密码会重新生成
  5. 推荐使用国内的或低延迟的服务器部署

访问成功后,截图如下:

到这里,我们就基本完成了code-server的部署。

存在的问题

虽然我们已成功部署了code-server服务,但有几个问题仍然不可避免!

  • 问题1:我们使用ssh连接的方式启动code-server,一旦断开ssh连接,那么code-server就不可以再使用了
  • 问题2:code-server自签的证书被浏览器提示不安全
  • 问题3:域名+端口的访问方式实在是太麻烦,而且还会暴露端口,不安全

那么接下来我们一一来解决这些问题。问题2、3我是使用宝塔面板来操作的,详细点击

优化code-server服务

我们针对上述三个问题来进行解决。

  1. 问题1:我们使用ssh连接的方式启动code-server,一旦断开ssh连接,那么code-server就不可以再使用了
    这里我使用的方式是借用tmux,tmux是一款优秀的终端复用软件,它比Screen更加强大:tmux/tmux: tmux source code
    我们在centOS安装tmux:sudo yum install tmux ,tmux的使用教程可查看参考2.
    安装完成后,我们使用tmux来启动code-server
1
2
3
4
5
6
7
8
9
10
11
12
# 启用一个名为codeserver的会话
tmux new -s codeserver
# 在tmux中启动code-server
./code-server
# 断开tmux会话,下次还可以接着用
# 或者使用快捷键Ctrl+b + d,三次按键就可以断开当前会话,这里我们只能使用快捷键
tmux detach(这里只能使用快捷键 Ctrl+b +d)
# 重新进入codeserver会话,有两种方式
tmux a # 默认进入第一个会话
tmux a -t codeserver # 进入到名称为codeserver的会话
# 查看会话列表
tmux ls

这样我们就完美解决了这个问题,不再需要一直登录ssh了。

  1. 问题2:code-server自签的证书被浏览器提示不安全

必须先添加SSL证书,然后设置反向代理。

该步骤结合第三步,先添加一个站点,设置好域名,不需要任何环境,php版本设置为纯静态,然后在面板的SSL中申请Let’s Encrypt免费SSL证书即可。

  1. 问题3:域名+端口的访问方式实在是太麻烦,而且还会暴露端口,不安全

这里我们改变默认端口进行访问,并且使用Nginx反向代理:code-server/quickstart.md ,使用宝塔面板来操作。

修改端口:我们可以选择合适的端口开启code-server,如: ./code-server --port 28865

添加Nginx反向代理:

注意,这里有一个很重要的事情,在反向代理的配置文件中,按如下方式设置配置文件,否则登录完成后一片全黑,不能正常显示。

这是官方推荐的Nginx反向代理配置模板:

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
listen [::]:80;
server_name code.example.com code.example.org;
location /some/path/ { # Or / if hosting at the root.
proxy_pass http://localhost: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了,而且也没有证书不安全的提示,完美解决了上述问题。

这样我们就可以愉快地在浏览器上使用VsCode了,使用浏览器第一次登录后,需要等待一段时间,再次使用基本都是秒开的,这一点非常不错,赶紧去体验一番了。

参考:
centos7 ./code-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found 解决方法
Tmux使用手册 | louis blog

坚持原创技术分享,您的支持将鼓励我继续创作!
0%