一、方案适配说明(腾讯云轻量专属)
腾讯云轻量应用服务器仅支持官方 Ubuntu 20.04 x86_64 镜像,无法直接重装 NOI Linux 2.0 原生ISO镜像。本方案采用纯净Ubuntu20.04 一键复刻 NOI Linux 2.0 完整竞赛环境,100%对齐考场编译器、软件、系统配置,同时保留原有多用户隔离、网页桌面登录核心能力,完全适配学生多人同时在线训练、互不干扰的需求。
适配优势:无需重装系统、无需本地镜像、云端一键部署,兼容腾讯云轻量所有机型,完美适配云服务器无头运行场景,保留全部NOI竞赛特性+多用户网页桌面功能。
二、腾讯云轻量服务器初始化配置
1. 服务器镜像选择
- 镜像类型:官方 Ubuntu 20.04 LTS 64位(x86_64)
- 机型推荐:2核4G及以上(支持6人同时在线)4核8G及以上(支持12人同时在线)
- 推荐服务器购买地址:
- https://curl.qcloud.com/uPZS3iOO
鼠标滑动一下后,网页顶部蓝色导航栏 点 同价续费 进入同价续费专区,选2H4GB5M 188 元套餐 , 系统镜像选 Ubuntu20.04,地域选离自己近的。
比赛结束不用后可以点 创建自定义镜像 备份系统,重新安装干净镜像 部署其他业务比如OJ 教务管理系统 或者 销毁退还, 可以退回大部分费用。 - 网络配置:开启公网固定IP,放行全部端口(后续精准配置防火墙)
2. 云服务器安全组放行(关键前置)
腾讯云轻量默认安全组会拦截VNC、网页端口,必须提前放行,否则学生无法网页登录:
轻量控制台-防火墙-新建规则,放行以下端口段(TCP协议):
- 5900-5999(VNC桌面端口,多用户隔离核心)
- 6080-6150(noVNC网页访问端口)
- 22(SSH远程连接,运维必备)
放行策略:全部IPv4公网可访问,保存生效。
三、Ubuntu20.04 复刻 NOI Linux 2.0 竞赛环境
以下命令为官方适配脚本,在纯净Ubuntu20.04上完整还原NOI Linux2.0原生环境(GCC/G++、Pascal、调试工具、竞赛编辑器、系统环境变量完全一致)。
全程SSH root/sudo权限执行:
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 基础依赖更新 sudo apt update && sudo apt upgrade -y sudo apt install -y software-properties-common apt-transport-https ca-certificates # 安装NOI全套竞赛编译环境(对齐考场版本) sudo apt install -y gcc g++ fpc lazarus geany gedit gnome-terminal sudo apt install -y libc6-dev make gdb valgrind # 锁定编译器版本,严格匹配NOI Linux2.0 Ubuntu20.04版本 sudo apt-mark hold gcc g++ fpc |
环境校验命令(部署完成后验证):
|------------------------------------------------------|
| Plain Text gcc --version g++ --version fpc --version |
输出版本与官方NOI Linux2.0完全一致即为部署成功。
四、桌面环境与网页远程组件部署(复用原有隔离架构)
此步骤与原有方案完全一致,搭建GNOME原生桌面+noVNC多用户网页桌面,保证学生操作界面和竞赛机一致。
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 安装原生GNOME桌面 & 网页远程组件 sudo apt install -y gnome-core gnome-shell ubuntu-desktop tightvncserver novnc websockify # 关闭系统本地桌面抢占(云服务器无头运行必做,防止端口冲突) sudo systemctl stop gdm3 sudo systemctl disable gdm3 |
五、多用户账号批量创建与隔离配置
完全沿用原有多用户隔离逻辑,每个学生独立账号、独立家目录、独立桌面进程,数据和操作互不干扰。
1. 批量创建学生账号
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 批量创建stu01-stu50 普通权限账号,禁止sudo权限 for i in {01..50} do sudo useradd -m -s /bin/bash stui echo "stui:Noi@2026" | sudo chpasswd # 禁止学生账号提权 sudo usermod -G stui stui done |
2. 通用桌面配置模板(所有学生通用)
以stu01为例配置,其余学生自动复用环境,仅端口不同:
|-------------------------------------------------------------------------------------------------------------------|
| Plain Text # 切换学生账号,初始化VNC网页登录密码 su - stu01 vncpasswd # 创建桌面启动配置,还原NOI原生桌面 mkdir -p ~/.vnc nano ~/.vnc/xstartup |
xstartup写入内容(云服务器专属优化,解决无头黑屏):
|-------------------------------------------------------------------------------------------|
| Plain Text #!/bin/bash unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR gnome-session |
|----------------------------------------------------|
| Plain Text # 赋予执行权限 chmod +x ~/.vnc/xstartup exit |
六、多用户端口映射+网页桌面部署(云服务器稳定版)
严格遵循一用户一端口隔离规则,杜绝冲突,适配腾讯云公网访问。
1. 用户端口对应规则
- stu01:显示端口:1、VNC端口5901、网页端口6081
- stu02:显示端口:2、VNC端口5902、网页端口6082
- 依次顺延,所有端口唯一不重复
2. 单用户启动命令(stu01示例)
|-------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 启动独立虚拟桌面,分辨率适配浏览器 vncserver -geometry 1920x1080 :1 # 开启公网网页转发 websockify -D --web=/usr/share/novnc 6081 localhost:5901 |
学生访问地址:http://腾讯云公网IP:6081,输入VNC密码即可登录独立桌面。
七、开机自启服务配置(云服务器挂机必备)
腾讯云服务器会不定期重启,配置systemd自启服务,断电/重启自动恢复所有学生桌面和网页服务。
1. 创建stu01桌面服务
|------------------------------------------------------------|
| Plain Text sudo nano /etc/systemd/system/vnc-stu01.service |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text Unit Description=NOI VNC Desktop For stu01(TencentCloud) After=network.target Service Type=forking User=stu01 ExecStart=/usr/bin/vncserver -geometry 1920x1080 :1 ExecStop=/usr/bin/vncserver -kill :1 Restart=always Install WantedBy=multi-user.target |
2. 创建网页转发服务
|--------------------------------------------------------------|
| Plain Text sudo nano /etc/systemd/system/novnc-stu01.service |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text Unit Description=noVNC Web For stu01(TencentCloud) After=vnc-stu01.service Service Type=simple ExecStart=/usr/bin/websockify -D --web=/usr/share/novnc 6081 localhost:5901 Restart=always Install WantedBy=multi-user.target |
3. 生效自启配置
|-----------------------------------------------------------------------------------------------------------------------|
| Plain Text sudo systemctl daemon-reload sudo systemctl enable --now vnc-stu01 sudo systemctl enable --now novnc-stu01 |
其他学生账号复制服务文件,修改用户名、端口、显示编号即可批量配置。
八、云服务器专属安全与优化配置
1. 系统权限加固
- 所有学生账号无sudo权限,无法篡改云服务器系统配置
- 仅允许用户读写自身/home目录,杜绝跨用户文件访问
- 关闭系统自动更新,防止环境版本变动导致竞赛适配异常
2. 防火墙精准管控
|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text sudo ufw default deny incoming sudo ufw allow 22/tcp sudo ufw allow 5900:5999/tcp sudo ufw allow 6080:6150/tcp sudo ufw enable && sudo ufw reload |
3. 云服务稳定性优化
- 关闭云服务器休眠、空闲关机策略,保证24小时在线
- 配置日志轮转,避免长期运行日志占满服务器磁盘
- 可选:每日凌晨自动重置学生桌面环境,适配日常训练
九、学生使用方式(完全不变)
- 电脑/平板浏览器输入:http://腾讯云公网IP:对应端口
- 输入老师配置的独立VNC密码
- 直接进入完全对齐NOI Linux2.0的竞赛桌面,编译器、编辑器、终端全部可用
- 各账号桌面、文件、进程完全隔离,互不干扰
十、云服务器常见问题专项排查
- 网页无法访问:优先检查腾讯云轻量防火墙端口放行,本地ufw防火墙是否开启
- 桌面黑屏闪退:云服务器无头环境专属问题,重新执行xstartup配置,确认gdm3已彻底关闭
- 编译版本不匹配:重新执行环境复刻命令,锁定gcc/g++/fpc版本
- 服务器重启后失效:检查systemd服务开机自启状态,确认无端口冲突
- 多人卡顿:轻量机型性能限制,降低桌面分辨率或升级服务器配置
十一、方案总结
本方案完美解决腾讯云轻量Ubuntu20.04无法安装NOI Linux2.0镜像 的问题,通过环境复刻实现100%竞赛环境对齐,同时完整保留原方案多用户网页登录、独立桌面、数据隔离、互不干扰、开机自启的核心能力。适配所有腾讯云轻量机型,部署简单、运维便捷、云端稳定挂机,完全满足信息学竞赛日常训练、模拟测试的多人在线使用需求。
如果搭建过程遇到问题 可以联系我们少量付费提供帮助 。