很多时候我们需要进行编程的学习时电脑不在身边,使用手机进行编程存在一些问题。比如手机不支持termux、以及使用termux安装寄生于手机的ubantu过程较为繁琐、增加手机的耗电量等问题,本文通过使用linux系统部署vscode以解决以上问题。

注:vscode的web端无法使用github copilot等插件!!!

vscode项目地址:

https://github.com/microsoft/vscode

成果示意图:

开始之前请先确保以下条件:

  • 具有管理员权限的非 root或root用户。

  • 域名指向服务器IP地址。

使用安装程序脚本安装vscode

首先,运行以下命令以确保代码服务器可以安装在您的系统 上。

curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run

接着使用以下代码安装代码服务器:

curl -fsSL https://code-server.dev/install.sh | sh

安装完成后,使用以下“systemctl”命令启动并启用代码服务器。(非root用户需要使用sudo)

systemctl enable --now code-server@$USER

其中的$USER需要更换为自己的ssh用户名

最后,使用以下命令检查代码服务器服务以确保该服务正在运行。

默认的监听端口为8080

systemctl status code-server@$USER

配置vscode密码

设置vscode密码可以有助于减少非法入侵者的访问。

使用“nano”编辑器打开默认的vscode配置文件~/.config/code-server/config.yaml

nano ~/.config/code-server/config.yaml

在nano编辑器中修改如下配置:

bind-addr: 127.0.0.1:8080
auth: password
password: 0e0cb3af923c659366334664
cert: false

bind-addr中修改ip为0.0.0.0,以确保外网访问。

password:中的内容修改为自己想设置的密码。

保存文件并退出编辑器。(“i”进行编辑后,"esc"退出编辑,"ctrl+Q"进行保存,"ctrl+X"退出nano编辑器)

现在运行以下命令以重新启动vscode并应用您的更改。

systemctl restart code-server@$USER

将Nginx设置为反向代理

在确保vscode web安全的情况下,可以通过nginx反代将域名指向我们的服务器ip+端口。使用以下“apt”命令安装 Nginx Web 服务器。输入“Y”确认安装。

apt install nginx -y

安装完成后,使用“nano”编辑器创建新的服务器块配置“/etc/nginx/sites-available/code-server.conf”。

nano /etc/nginx/sites-available/code-server.conf
server {
listen 80;
listen [::]:80;
server_name code.howtoforge.local;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}

修改以上配置文件并确保server_name code.howtoforge.local已经被修改。

完成后,保存文件并退出编辑器。

接下来,运行以下命令激活“code-server.conf”服务器块并验证您的 Nginx 配置。

ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/
nginx -t

如果您正确并且具有正确的 Nginx 配置,您将看到输出“语法正确 - 测试成功”

现在运行以下命令来重新启动 Nginx Web 服务器并应用更改。然后,检查 Nginx 状态以确保 Web 服务器正在运行。

systemctl restart nginx
systemctl status nginx

您可以看到 Nginx Web 服务器正在作为代码服务器应用程序的反向代理运行。

随后访问nginx反代的域名即可实现访问vscode web。