目录
- 1、前言
- 2、部署流程
- 2.1 前置准备
- 2.2 运行docker安装Code-Server
- 3、运行Code-Server
- 3.1 配置运行环境
- 3.2 运行Python
- 3.3 运行C++
1、前言
云服务器需要配置C++开发环境,了解到有code-server这个VsCode提供的云端服务,因此选择在云服务器上部署。
2、部署流程
2.1 前置准备
首先你的服务器需要有docker这个服务,安装教程见VPS配置aliyundriver-webdav以及使用Aria2以及Rclone挂载阿里云盘实现离线下载器。
2.2 运行docker安装Code-Server
docker run -d --name code-server -p 1234:8080 --security-opt seccomp=unconfined --restart=unless-stopped \
-v "/mnt/AliyunDriver/BackUpFiles/VscodeWeb/.config:/home/coder/.config" \
-v "/mnt/AliyunDriver/BackUpFiles/VscodeWeb:/home/coder/project" \
-u "$(id -u):$(id -g)" \
-e "DOCKER_USER=$USER" \
codercom/code-server:latest
这里注意几个参数-p 1234:8080
和--security-opt seccomp=unconfined
以及--restart=unless-stopped
。
- -p是映射端口,将容器中的8080端口映射到主机的1234,后面使用这个端口号,服务器IP:1234的形式就可以访问code-server。
- –security-opt seccomp=unconfined 允许容器执行全部的系统调用,否则gdb会失效,原因暂时未知。
- –restart=unless-stopped,让容器除非停止状态的时候停止,其它时刻都重启。
如果没有配置--security-opt seccomp=unconfined
,会导致gdb报下面的错误:
&"warning: GDB: Failed to set controlling terminal: Invalid argument\n"
Unexpected GDB output from command "-exec-run". During startup program exited with code 127.
有的回答说和export SHELL= /bin/bash
有关,在这里是不对的,这里是容器启动的code-server,所以应该和SHELL的环境变量没有太大的关系。
3、运行Code-Server
3.1 配置运行环境
现在输入ip地址还不能直接进去,服务设置了密码。
使用下例指令进入docker容器:
docker exec -it code-server bash
编辑配置文件:
vi ~/.config/code-server/config.yaml
修改passward。
执行docker restart code-server
,输入上面配置的IP地址和端口号就可以进去Code-Server服务了。
进去之后和我们电脑使用的VsCode非常相似,首先安装中文语言包。
点击插件按钮进入扩展市场,搜索chinese
。
安装下面这个插件,按照提示重启就会变成中文界面。
3.2 运行Python
Code-Server运行Python非常简单,新建.py文件后会自动提示下载python和jupyter,基本没什么流程就可以直接运行了,因此这里不重点叙述。
需要注意的是jupyter notebook
只会显示为空,因为我这里使用的是IP访问,是不安全的,会限制WEB视图以及复制粘贴功能,需要加密证书才可以正常使用。有使用反向代理或者是生成伪证书的方式来处理,这里还没研究,先记录下来。后续选择重新docker部署了jupyter notebook。
3.3 运行C++
配置C++稍微繁琐一些,首先安装gcc以及gdb。执行:
sudo apt-get update
然后使用:
sudo apt-get install build-essential gdb
安装gdb,这里安装的gdb是linux版本的,安装后可以通过gcc -v看到当前gcc 版本。
环境搭载还需要下载C/C++插件,这个插件在Code-Server上不能自动搜索到,所以通过下面链接下载,下载后通过网页直接传送到Code-Server,然后在文件右键安装扩展VSIX。
C/C++插件下载链接。
配置好运行环境之后就可以愉快的写C++了,新增一个.cpp文件后,点击左上角的三条横线,然后选择配置默认环境,选择C/C++:g++ 编译活跃文件
,然后vscode会自动生成一个task.json文件。
task.json文件我们需要替换为下面这个:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
内容差不多相同,只需要注意
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"]
替换后面为"${fileDirname}/${fileBasenameNoExtension}"
。
这时候点击运行C++代码已经会生成可执行文件了。
然后再配置调试文件lauch.json
。
选择添加gdb调试,会自动生成文件lauch.json。
我们需要修改的还是类似项目位置,注意修改:
"program": "${fileDirname}/${fileBasenameNoExtension}"
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
}
]
}
可以看到已经正常启动而且能够调试了。
参考文章:
1.如何在 Linux 系统中的 VS Code 上配置 C/C++ 环境