程师言上线与管理使用手册
从本地文件夹到真实网站,一步一步照做。
这份手册按“小白操作”写,默认你的项目文件夹在 C:\Users\21246\Desktop\teach,服务器上的网站目录统一放在 /var/www/chengshiyan。
不要跳步骤。每完成一节,就按本节末尾的检查点确认一次。
看到黑色代码框,先看它上面写的是“在你电脑里操作”还是“在服务器里操作”。电脑里的命令输到 Windows PowerShell;服务器里的命令要先 SSH 登录服务器,再输到那个服务器窗口。
命令不是输到浏览器地址栏里的。浏览器地址栏只输入 http://127.0.0.1:8765、https://你的域名 这种网址。
复制命令后,在黑色或蓝色命令窗口里点一下,按 Ctrl + V 粘贴,再按回车。看到“把 xxx 改成你的 xxx”,就不要原样复制,要换成你自己的域名、服务器 IP 或密码。
如果命令执行后没有红色报错,通常就是成功。它可能显示很多英文,这很正常;本手册会告诉你关键看哪一行。
Windows PowerShell:在你自己的电脑里打开,用来进入 C:\Users\21246\Desktop\teach、本地启动网站、上传文件、SSH 登录服务器。
服务器窗口:你在 PowerShell 输入 ssh root@服务器IP 并登录成功后,看到类似 root@xxx:~# 的窗口。安装 Node、Nginx、PM2、启动正式网站,都在这里输入。
1. 现在项目里有什么
当前文件夹已经清理过,只保留上线需要的文件。
下面这张表不用背。你只要知道:大部分文件都要上传,真正不能公开的是 .env 和 data/ 里的真实数据。
| 文件 | 作用 | 是否上传服务器 |
|---|---|---|
index.html | 网站主页面 | 上传 |
deploy-check.html | 部署前检查页,帮你看服务器配置有没有明显问题 | 上传 |
deploy-check.js | 部署前检查页的小助手,负责读取检查结果 | 上传 |
app.js | 网页会动、能搜索、能评价,主要靠它 | 上传 |
styles.css | 控制颜色、排版、手机适配和下拉框样子 | 上传 |
server.js | 网站的“管家”,负责账号、评价、举报、后台、自动备份 | 上传 |
package.json | 告诉服务器怎么启动这个网站 | 上传 |
ecosystem.config.cjs | 让 PM2 知道怎么长期运行网站 | 上传 |
deploy/nginx-chengshiyan.conf | Nginx 配置模板,改成你的域名后可以用 | 上传或照着复制 |
scripts/predeploy-check.js | 上线前自动检查网站有没有明显问题 | 上传 |
.env.example | 配置参考,复制成 .env 后填后台口令等信息 | 上传,可复制成 .env |
.gitignore | 提醒工具不要把真实数据和密码一起发出去 | 上传 |
DEPLOY.md | 简短版上线说明 | 可上传 |
manual.html | 你正在看的完整手册 | 上传 |
terms.html | 用户协议页面 | 上传 |
privacy.html | 隐私政策页面 | 上传 |
chengshiyan-icon.svg | 程师言原创网站图标 | 上传 |
campus-wallpaper-v2.png | 现在网站正在用的背景图 | 上传 |
wechat-qr-masked.png | 已经遮住姓名的捐赠收款码 | 上传 |
campus-wallpaper.png | 旧背景图,留着当备用 | 可上传 |
mm_facetoface_collect_qrcode_1780199600248.png | 原始收款码,页面不用它,只留本地备用 | 不要公开上传更稳 |
服务器上会自己生成 data/chengshiyan.sqlite。这个文件就像网站的账本,里面有账号、手机号、评价和回复。以后备份它,但不要放到公开下载目录,也不要发给别人。
服务器还会自己生成 data/backups/。这里是自动备份,像“存档”。不要删,也不要公开。
.env 也不要公开上传到网盘或代码仓库,它里面会放管理员口令和密钥。
同学可以查老师、搜课程、看首页热榜、看公共课专区、看新生选课指南、看课程主页、写细分评价、回复别人、收藏老师、关注课程或学院、收到站内小提醒。你可以进后台处理举报、删名申请、反馈纠错、禁言或封禁账号,还能下载备份。
设置里可以控制公共课专区是否显示、首页是否优先显示公共课、手机底部是否放公共课入口,也可以选择常看的公共课方向,比如高数、大学英语、体育、思政、计算机基础。
收藏老师或关注课程以后,如果有新评价,用户右上角的小铃铛会亮。别人回复自己的评价、给评价点“有用/同感/我也上过”,也会形成站内互动。
老师详情、课程主页和评价都可以打开分享卡片,再复制分享文字,适合发到班群或 QQ 群。分享文字会带上“非官方个人项目”的说明,避免别人误会成学校官方平台。
个人主页会显示评价数、回复数、被互动数和徽章,例如“第一条评价”“公共课观察员”“认真回复者”。首页贡献榜会把认真写评价、认真回复的人展示出来,徽章和贡献榜只是鼓励同学贡献内容,不代表权限,也不会影响老师排名。
高等数学、大学英语、体育等公共课有些并不是学生自由选老师,网站会把它们作为“课程体验和老师评分参考”,不承诺一定能按网站信息选到老师。
评价不是匿名的,会显示账号昵称,并能点进评价者主页查看他写过的公开评价和回复。
如果发现课程、老师、页面或功能有问题,可以点顶部“反馈/纠错”。反馈会进入管理员后台,方便你统一处理。
顶部导航现在有一个滑块。点“找老师/排行榜、公共课/指南、加老师、写评价、反馈/纠错”等入口时,滑块会移动到当前入口,表示你现在所在的页面。
手机竖屏也做了单独适配:顶部按钮会自动缩小,底部有“首页、找老师、公共课、写评价、我的”快捷导航;写评价会分成几步,老师卡片、弹窗、个人主页和捐赠页会按手机宽度重新排列,避免文字挤在一起。
几个后面会反复出现的词
chengshiyan.cn。它会指向你的服务器。server.js 跑起来的软件,可以理解成网站后端的发动机。2. 选择上线路线
路线 A:国内大陆服务器
优点:国内访问快,长期正规。
缺点:必须做 ICP 备案,流程慢一些。
适合你最终正式使用。
路线 B:香港或海外服务器
优点:通常不需要 ICP 备案,可以更快上线。
缺点:国内访问可能慢,后续接国内 CDN 仍可能要备案。
适合先测试,不建议当长期最终版。
如果你想认真做给同学用,建议走路线 A:买国内云服务器,先备案,再正式上线。
3. 买域名和服务器
3.1 买域名
- 打开阿里云、腾讯云或华为云。
- 搜索一个域名,例如
chengshiyan.cn、ahpushiping.cn。 - 尽量选择
.cn或.com。 - 购买后做“域名实名认证”。备案前通常必须完成实名认证。
3.2 买服务器
- 选择云服务器 ECS / CVM / 轻量应用服务器都可以。
- 地区选国内大陆,比如华东、华南、华北。
- 系统选
Ubuntu 22.04 LTS或Ubuntu 24.04 LTS。 - 配置新手够用:1 核 1G 或 2 核 2G。
- 安全组开放端口:
22、80、443。测试时也可以临时开放8765。 - 记下服务器公网 IP,例如
123.123.123.123。
云服务器 root 密码、云账号密码、域名账号都要保存到你自己的密码管理器或纸质备份里。不要发给别人。
4. 备案完整流程
只要你用国内大陆服务器公开提供网站访问,通常就需要 ICP 备案。备案不是在你的网站里做,是在云厂商的“备案系统”里做,最终由通信管理局审核。
4.1 备案前准备
- 域名已购买并完成实名认证。
- 服务器已购买,并且服务器和备案接入商一致。比如阿里云服务器就在阿里云备案,腾讯云服务器就在腾讯云备案。
- 身份证正反面照片。
- 手机号,能接收短信核验。
- 网站名称,建议写成个人学习交流类名称,不要写成官方、学校、教务、门户等容易误解的名字。
- 网站说明:由安工程 25 级电子专业学生个人搭建,非官方,仅用于学习交流、课程体验分享和选课辅助。
4.2 备案系统怎么填
- 进入云厂商控制台,找到“ICP备案”或“网站备案”。
- 选择“首次备案”或“新增网站”,按你的情况选。
- 主体类型选择“个人”。
- 填写个人姓名、身份证号、手机号、地址。
- 填写域名,例如
你的域名.cn。 - 填写网站名称。建议不要出现“安徽工程大学官方”“教务系统”“学校平台”等字样。
- 网站备注可以写:由安工程 25 级电子专业学生个人搭建的课程评价与学习交流网站,非官方平台;页面设计、功能代码、交互文案、网站名称和图标均为本人原创;仅供学生学习交流和选课参考,拒绝人身攻击和违法内容。
- 按要求上传身份证、人脸核验或幕布照片,具体以云厂商页面为准。
- 提交初审。
4.3 短信核验和等待审核
- 云厂商初审通过后,工信部系统会发短信核验。
- 收到短信后,按短信链接或备案系统提示完成核验。
- 然后等待管局审核。时间不固定,几天到二十个工作日都有可能。
- 备案期间不要把未备案域名公开接入国内服务器,否则可能被拦截或影响审核。
4.4 备案成功后
- 你会得到备案号,例如
皖ICP备xxxxxxxx号。 - 把备案号放到网站底部。当前网站底部已经留了“备案号:上线备案后在这里填写”,备案号下来后把这句话换成真实备案号即可。
- 按当地要求做公安联网备案。一般在网站开通后按要求办理,具体看当地公安网安平台和云厂商提示。
你的网站涉及“老师评价”。上线后一定要坚持实名或账号化管理、举报和删除申请机制。辱骂、造谣、隐私泄露、人身攻击要及时处理。
5. 本地最终测试
这一节是在你自己的电脑里操作,不是在服务器里操作。目标是:先确认这个文件夹里的网站能打开。
如果你电脑里还没装 Node.js,npm start 会提示找不到命令。你可以先跳到第 7.2 节看服务器安装方式;本地电脑也可以去 Node.js 官网安装 24 版本或更新版本。
Win 键,输入 PowerShell,点“Windows PowerShell”。会弹出一个蓝色或黑色窗口,里面通常有一行 PS C:\Users\你的名字>。cd C:\Users\21246\Desktop\teach
成功后,窗口左边的路径会变成类似 PS C:\Users\21246\Desktop\teach>。如果提示“找不到路径”,说明文件夹位置不对,要确认项目是不是还在桌面 teach 文件夹里。
npm start
如果启动成功,窗口会显示类似 程师言已启动:http://127.0.0.1:8765。这时候 PowerShell 窗口会一直停在那里,不会回到新的一行,这是正常的,表示网站正在运行。不要关这个窗口。
如果显示 npm 不是内部或外部命令、npm: command not found,说明这台电脑没有装 Node.js。
http://127.0.0.1:8765/index.html
看到程师言首页、声明弹窗、搜索框,就说明本地页面能打开。
再把下面这个网址复制到浏览器地址栏,打开部署前检查页:
http://127.0.0.1:8765/deploy-check.html
这里会用中文告诉你后端、配置、数据文件夹、备份目录和关键文件有没有问题。它不会显示你的真实后台口令和登录密钥。
本地测试结束后,回到 PowerShell 窗口,按 Ctrl + C 可以停止网站。如果它问你是否终止,输入 Y 再回车。
先让网站自己检查一遍
先确保你已经按 Ctrl + C 停掉了刚才的 npm start。然后仍然在 PS C:\Users\21246\Desktop\teach> 这个 PowerShell 窗口里输入下面命令:
npm run predeploy
它会自动检查核心文件、页面资源、部署检查页、健康检查、安全提示、验证码登录、评价、重复评价拦截、收藏、关注、评价互动、反馈提交、后台处理反馈、后台编辑老师、徽章和通知。检查用的是临时数据,不会弄乱你正式网站的数据。
如果最后看到 Predeploy check passed 或 67/67 checks passed,说明这一轮自动检查通过。以后每次上传服务器前、本地大改之后,都先跑一次。
如果看到 FAIL,先不要上线。把红色失败信息复制下来,再回来对照“常见问题排查”。
你要测试什么
- 打开网站有声明弹窗。
- 能用手机号、昵称、密码登录或注册。
- 能添加老师。
- 能评价老师。
- 写评价时能选择讲课清楚、作业压力、考试友好、课堂氛围等细分项。
- 手机竖屏写评价时能点“下一步 / 上一步”,最后能看到提交前确认。
- 同一个账号不能评价同一位老师第二次。
- 点击热门课程能打开课程主页;高数等公共课会提示“仅作评分参考”。
- 首页公共课专区和贡献榜能显示内容,点进去能打开课程或个人主页。
- 设置里能打开/关闭公共课入口,能选择常看公共课方向。
- 课程搜索入口能搜到课程,能打开课程主页,能关注或分享课程。
- 点分享时能看到分享卡片,并能复制分享文字。
- 点顶部导航时,导航下面的小滑块会滑到当前入口。
- 评价下面的“有用”“我也上过”“同感”能点击,刷新后在线账号仍保留。
- 个人主页能看到徽章、被互动数和自己的收藏/通知。
- 能在评价下面回复。
- 能提交删除申请。
- 能提交“反馈/纠错”,后台能看到这条反馈。
- 后台输入管理员口令能看到删除申请。
- 后台能处理反馈,能编辑线上新增老师的信息。
- 后台顶部能看到“今日待办”和“新手提示”,按钮旁边有说明。
- 网站底部能看到非官方声明、使用手册、用户协议、隐私说明和备案占位。
- 手机竖屏打开时,顶部、搜索、老师卡片、底部导航、弹窗不要挤在一起。
6. 上传文件到服务器
6.1 服务器上创建目录
先用 SSH 登录服务器。Windows PowerShell 里输入:
ssh root@你的服务器公网IP
例如:
ssh root@123.123.123.123
登录后创建网站目录:
mkdir -p /var/www/chengshiyan
cd /var/www/chengshiyan
6.2 要上传哪些文件
从你的电脑 C:\Users\21246\Desktop\teach 上传下面这些到服务器 /var/www/chengshiyan。如果用 WinSCP,直接把这些文件和文件夹拖过去即可:
.env.example
.gitignore
AGENTS.md
DEPLOY.md
manual.html
terms.html
privacy.html
chengshiyan-icon.svg
index.html
deploy-check.html
deploy-check.js
app.js
styles.css
server.js
package.json
ecosystem.config.cjs
scripts
deploy
campus-wallpaper-v2.png
campus-wallpaper.png
wechat-qr-masked.png
data 文件夹不要上传,这是网站运行后自己生成的数据箱。.env 也不要从电脑上传,服务器上自己复制 .env.example 来创建。
原始收款码 mm_facetoface_collect_qrcode_1780199600248.png 页面已经不用了,公开服务器上不放它更稳。
6.3 用 WinSCP 上传,最适合小白
- 下载并安装 WinSCP。
- 新建站点,协议选 SFTP。
- 主机名填服务器公网 IP。
- 用户名填
root。 - 密码填服务器 root 密码。
- 左侧打开
C:\Users\21246\Desktop\teach。 - 右侧打开
/var/www/chengshiyan。 - 把上面列出的文件拖到右侧。
上传完成后,右侧服务器窗口里应该能看到 index.html、server.js、package.json、scripts、deploy 这些名字。
6.4 用命令上传
如果你会用命令,也可以在 PowerShell 里上传整个文件夹:
scp -r C:\Users\21246\Desktop\teach\* root@你的服务器公网IP:/var/www/chengshiyan/
7. 服务器安装环境
这一节全部在“服务器窗口”里操作,不是在你电脑本地的项目 PowerShell 里操作。
如果你还没登录服务器,先在 Windows PowerShell 输入下面这一行,把 你的服务器公网IP 换成云服务器控制台里看到的公网 IP:
ssh root@你的服务器公网IP
登录成功后,窗口左边通常会变成类似 root@xxx:~#。只有看到这种服务器提示符,才开始执行下面的命令。
不要一次复制整章。复制一个黑色代码框,按回车,等它跑完,再复制下一个。
7.1 更新系统
在服务器窗口里复制下面两行,按回车。这一步像给服务器先更新一下系统软件。执行时间可能几分钟,中途如果问你 Y/n,一般输入 Y 再回车。
apt update
apt upgrade -y
7.2 安装 Node.js 24
Node.js 是运行网站后端的工具。程师言用到了 Node 24,所以版本太低不行。下面命令仍然是在服务器窗口里输入,不是在浏览器里输入。
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
这一步会刷很多英文。等它停下来,并且重新出现 root@xxx:~#,说明这一步跑完了。
apt install -y nodejs
安装结束后,如果没有红色报错,并且又回到 root@xxx:~#,就继续检查版本。
node -v
npm -v
如果第一行显示类似 v24.11.0、v24...,就对了。第二行会显示 npm 版本,例如 11...。
如果提示 node: command not found 或 npm: command not found,说明安装没成功,重新执行本节第 1 步和第 2 步。
7.3 安装 Nginx、解压工具、Certbot
这一步仍然在服务器窗口里输入。Nginx 负责让别人通过域名访问你的网站。Certbot 负责申请 HTTPS 小锁。
apt install -y nginx unzip certbot python3-certbot-nginx
它跑完后,看到窗口又回到 root@xxx:~#,说明可以继续。
7.4 安装 PM2
这一步仍然在服务器窗口里输入。PM2 负责让网站一直运行。你关闭 SSH 窗口后,网站也不会跟着停。
npm install -g pm2
如果这一步没有红色报错,并且又回到 root@xxx:~#,就继续下一节。
8. 启动网站
8.1 创建 .env
这一节仍然是在服务器窗口里操作。先确认窗口左边是类似 root@xxx:~#,不是 PS C:\Users...。
先进入服务器上的网站目录:
cd /var/www/chengshiyan
成功后,窗口左边可能会变成类似 root@xxx:/var/www/chengshiyan#。这表示你已经站在网站文件夹里。
复制环境变量模板。只需要执行一次,如果提示文件已存在,可以跳过:
cp .env.example .env
打开编辑器:
nano .env
执行后,整个窗口会变成一个文本编辑界面。你重点改这两行:ADMIN_PASSCODE 是你进后台用的密码,SESSION_SECRET 是网站内部用的登录安全密钥,越乱越好。其他备份、举报、锁定设置可以先保持默认。
PORT=8765
ADMIN_PASSCODE=你自己的后台强密码
SESSION_SECRET=一串很长很乱的随机字符至少32位
在 nano 里保存的方法:先按 Ctrl + O,再按回车;退出的方法:按 Ctrl + X。
ADMIN_PASSCODE 和 SESSION_SECRET 都只放在服务器 .env 里,不要写到网页、群公告或公开文档里。SESSION_SECRET 上线后不要随便改,乱改可能导致旧账号登录失败。
8.2 直接测试启动
还是在服务器窗口里,并且确认你已经在 /var/www/chengshiyan 目录。如果不确定,就先执行:
cd /var/www/chengshiyan
然后输入下面命令测试启动:
npm start
如果看到类似:
程师言已启动:http://127.0.0.1:8765
说明后端起来了。这时候命令窗口会停住不动,这是正常的,表示网站正在运行。先按 Ctrl + C 停掉它,然后改用 PM2 常驻运行。
如果你想在浏览器检查临时启动效果,可以在自己电脑浏览器地址栏打开:
http://服务器IP:8765/deploy-check.html
看到部署检查页,说明后端和页面文件基本能访问。正式域名配好以后,也可以打开 https://你的域名/deploy-check.html 再看一次。
如果这里报错,先不要继续配域名。常见原因是文件没上传全,或者服务器 Node 版本不是 24。
8.3 用 PM2 常驻运行
PM2 命令也在服务器窗口里输入,不是在浏览器里输入。先确认目录:
cd /var/www/chengshiyan
启动网站:
pm2 start ecosystem.config.cjs
如果看到一个表格,并且里面有 chengshiyan、状态是 online,说明 PM2 已经把网站拉起来了。
保存当前启动列表,防止服务器重启后忘记启动:
pm2 save
设置开机自启:
pm2 startup
pm2 startup 执行后,可能会输出一整行很长的命令,通常以 sudo env PATH=... 开头。把它整行复制,再粘贴回服务器窗口,按回车执行。
ecosystem.config.cjs 是我给你准备好的 PM2 启动文件。它会固定运行 server.js,并在程序异常退出时自动拉起来。
8.4 检查运行状态
看网站有没有在运行。服务器窗口里输入:
pm2 list
如果表格里看到 chengshiyan,并且状态是 online,说明网站后端正在运行。
看运行日志。服务器窗口里输入:
pm2 logs chengshiyan
日志会一直刷,按 Ctrl + C 可以退出日志界面。退出日志不会关闭网站。
也可以在服务器窗口里试一下健康检查:
curl http://127.0.0.1:8765/healthz
如果看到 "ok":true,说明网站后端是活的。
9. 域名、Nginx、HTTPS
9.1 域名解析
这一步的意思是:告诉互联网“你的域名应该去找哪台服务器”。
- 打开域名控制台。
- 找到 DNS 解析。
- 添加 A 记录。
- 主机记录填
@,记录值填服务器公网 IP。 - 如果你要用
www.你的域名,再加一条主机记录www,记录值同样填服务器公网 IP。
| 主机记录 | 记录类型 | 记录值 | 意思 |
|---|---|---|---|
@ | A | 47.86.199.196 | 让 chengshiyan.top 打开你的服务器 |
www | A | 47.86.199.196 | 让 www.chengshiyan.top 也打开你的服务器 |
TTL 保持默认就行。保存后不是立刻全世界都生效,通常几分钟,慢的时候可能几小时。先打开 http://47.86.199.196 确认网站能访问,再等域名解析生效。
9.2 配置 Nginx
项目里已经有一个模板:deploy/nginx-chengshiyan.conf。你可以打开它,把 example.com 改成你的真实域名,然后放到服务器的 Nginx 配置目录。
创建配置文件:
nano /etc/nginx/sites-available/chengshiyan
如果你已经把项目上传到了 /var/www/chengshiyan,也可以直接复制模板:
cp /var/www/chengshiyan/deploy/nginx-chengshiyan.conf /etc/nginx/sites-available/chengshiyan
nano /etc/nginx/sites-available/chengshiyan
打开后,把里面的 example.com 和 www.example.com 改成你的域名。
保存退出还是同样的方法:Ctrl + O,回车,Ctrl + X。
启用配置:
ln -s /etc/nginx/sites-available/chengshiyan /etc/nginx/sites-enabled/chengshiyan
nginx -t
systemctl reload nginx
nginx -t 如果显示 successful 或 ok,说明配置没有写错。然后打开 http://你的域名 看看能不能访问。
9.3 开 HTTPS
certbot --nginx -d 你的域名 -d www.你的域名
按提示输入邮箱、同意协议。成功后访问:
https://你的域名
浏览器地址栏出现小锁,说明 HTTPS 成功。
10. 管理员怎么操作
管理员后台不是给普通同学看的。普通人访问网站时不会在导航里看到后台入口;你自己需要用管理员口令解锁。
10.1 设置管理员密码
管理员密码在服务器 /var/www/chengshiyan/.env 里:
ADMIN_PASSCODE=你自己的后台强密码
改完后重启:
pm2 restart chengshiyan
10.2 进入后台
- 打开后台地址:
https://你的域名/#admin。例如你的域名是chengshiyan.com,就打开https://chengshiyan.com/#admin。 - 普通用户顶部导航不会显示后台入口;只有输入管理员口令解锁后,导航里才会临时显示“后台”。
- 输入
ADMIN_PASSCODE。 - 如果口令连续输错,网站会临时锁一会儿。这是为了防止别人一直乱试你的后台密码。
- 点“进入后台”。
- 进入后先看顶部统计卡片,重点看“待处理举报”和“待审核删名”。
- 再看“今日待办”,它会告诉你先处理举报、删名申请、反馈纠错、隐藏内容还是新增评价抽查。
- 继续看“新手提示”,它会用普通话告诉你后台每天按什么顺序处理。
- 每个后台按钮旁边都有短说明;看不准时先别点“隐藏内容”或“封禁”。
- 处理完以后点“锁定后台”。
不要把后台口令写在网站页面、QQ群公告或公开文档里。建议只存在你自己的密码本里。怀疑泄露时,马上改 .env 里的 ADMIN_PASSCODE,然后执行 pm2 restart chengshiyan。
10.3 管理账号状态
- 后台“账号管理”可以按昵称、手机号或用户 ID 搜索,也可以按“正常 / 已禁言 / 已封禁”筛选。
- “禁言”适合轻度违规:用户还能登录和查看内容,但不能新增老师、评价、回复或举报。
- “封禁”适合严重违规:用户会被踢出登录状态,不能继续登录或提交内容。
- 误操作时点“恢复正常”。每次禁言、封禁、恢复都会写入操作日志。
- “删除账号”是强操作:会删除这个账号,并连带删除他写过的所有评价、回复和互动记录。点之前先下载数据备份。
- 删除账号时,后台会要求你二次确认并手动输入“删除账号”,这是为了防止误点。
- 账号很多时,用“上一页 / 下一页”翻页,不需要一次加载所有账号。
10.4 处理删除申请
- 用户在“删除申请”页面提交后,后台会出现申请卡片。
- 你看老师姓名、学院、课程、原因、证据链接和联系方式。
- 如果合理,点“通过”。
- 如果证据不足或恶意提交,点“驳回”。
- 处理完以后点“锁定后台”。
10.5 处理内容举报
- 用户举报评价或回复后,后台会出现“内容举报”卡片。
- 举报多时可以按“待处理 / 已隐藏 / 已处理 / 已忽略”筛选,并用分页按钮逐页处理。
- 如果同一条内容被 3 个不同账号举报,网站会先把它藏起来,避免继续扩散。你之后再到后台判断是否真的违规。
- 如果是误报,点“恢复显示”;如果确实有问题,就继续保持隐藏。
- 如果内容确实有人身攻击、隐私泄露、广告或恶意抹黑,点“隐藏内容”。
- 如果你已经线下处理或记录,点“标记已处理”。
- 如果举报无效,点“忽略”。
10.6 处理反馈和纠错
- 用户点顶部“反馈/纠错”提交后,后台会出现“反馈与纠错”卡片。
- 你可以按“全部反馈 / 待处理 / 已解决 / 已忽略”筛选。
- 如果反馈说的是课程缺失、老师信息错误、页面 bug,先确认问题,再去改对应文件或后台老师维护。
- 处理好了点“标记已解决”。如果是重复反馈、无效反馈或看不懂的问题,点“忽略”。
- 反馈处理也会写入管理员操作日志,方便你以后知道自己处理过什么。
10.7 维护线上新增老师
- 后台“老师维护”可以搜索同学在线新增的老师。
- 点“编辑信息”,可以改老师姓名、职称、所属学院、授课课程、标签和简介。
- 这里主要改“同学后来新增”的老师。网站自带的演示老师属于代码里的基础数据,如果要大改,建议先收集反馈,再统一更新代码。
- 保存后,老师列表、评价下拉框和课程主页会同步用新信息。
10.8 下载和恢复备份
- 进入后台后,点“下载数据备份”。
- 浏览器会下载一个
chengshiyan-db-日期.json文件。 - 下载备份也会写入管理员操作日志。
- 这个文件包含账号、手机号、评价、举报和后台记录,只能你自己保存,不要发给别人,不要放到公开网盘。
- 后台还有“恢复备份说明”按钮。它不会直接覆盖数据,只会告诉你恢复前怎么先停网站、先备份当前数据、再找最近存档,避免误点一下就把数据弄没。
10.9 查看操作日志
- 后台底部“最近操作日志”会显示管理员登录、后台口令输错、禁言/封禁/删除账号、处理反馈、编辑老师、处理举报、自动隐藏内容、处理删除申请、下载备份等记录。
- 日志只用于你自己复盘维护行为,不会记录管理员口令。
- 如果发现异常时间出现“下载备份”或大量处理记录,立刻修改
ADMIN_PASSCODE并重启服务。
10.10 管理数据文件
真实数据在:
/var/www/chengshiyan/data/chengshiyan.sqlite
你可以把它理解成网站的“总账本”。账号、老师、评价、回复、删除申请、举报、后台记录都在里面。不要直接乱改。需要改之前先备份:
cp /var/www/chengshiyan/data/chengshiyan.sqlite /var/www/chengshiyan/data/chengshiyan.backup.$(date +%F-%H%M%S).sqlite
如果服务器上还有旧版 data/db.json,新版第一次启动会自动迁移到 SQLite,迁移后主要备份 chengshiyan.sqlite。
自动备份在:
/var/www/chengshiyan/data/backups/
这里像“存档箱”,默认一天存一次,保留最近 7 份。正常情况下不用你手动打开它;真出问题时,再从这里找最近的备份。
11. 日常维护和备份
网站上线后,不是传上去就永远不用管。你每天花 3 到 5 分钟看一眼后台,就能避免很多麻烦。
11.1 每天看一次
- 打开
https://你的域名/#admin,输入管理员口令。 - 先看后台“今日待办”。
- 看后台有没有删除申请。
- 看有没有新的反馈/纠错,尤其是课程缺失、老师信息错误、页面 bug。
- 看有没有待处理举报、恶意评价和人身攻击。
- 看“最近操作日志”有没有异常备份或异常处理记录。
- 看网站能不能打开。
11.2 每周做一次
- 下载一次后台备份,保存到你电脑或云盘。
- 随机打开几个老师页面,看评价、回复、收藏、手机端显示是否正常。
- 随机打开首页公共课专区、贡献榜和新生选课指南,看手机竖屏是否舒服。
- 随机点几条评价的“有用/同感/我也上过”,确认不会重复刷数。
- 打开课程搜索,搜“高数”“英语”“电路”等常见课,确认能跳到课程主页。
- 打开一次分享卡片,复制老师或课程分享文字,确认不会出现手机号、后台地址或管理员口令。
- 检查
pm2 logs chengshiyan有没有连续报错。
11.3 备份怎么做
网站会自动把数据存到 data/backups/,默认一天一份,最近 7 份会留下来。你可以把它理解成游戏存档:平时不用管,出事了可以回档。
如果你想更放心,每周再手动复制一份:
mkdir -p /var/backups/chengshiyan
cp /var/www/chengshiyan/data/chengshiyan.sqlite /var/backups/chengshiyan/chengshiyan-$(date +%F).sqlite
更稳一点,把备份下载到你电脑,或者传到云盘。
11.4 更新网站代码
- 先备份
data/chengshiyan.sqlite。 - 把新版本文件上传覆盖旧文件,但不要删除
data/和.env。 - 先运行自动检查,确认没问题。
- 重启网站。
cd /var/www/chengshiyan
npm run predeploy
pm2 restart chengshiyan
如果 npm run predeploy 没通过,先不要重启线上网站,先修失败项。
11.5 如果没有 Codex 辅助,你自己怎么维护
正式网站:https://chengshiyan.top
管理员后台:https://chengshiyan.top/#admin
使用手册:https://chengshiyan.top/manual.html
部署检查页:https://chengshiyan.top/deploy-check.html
第一步:打开能输命令的地方
- 在 Windows 桌面左下角点开始菜单。
- 输入
PowerShell。 - 点开蓝色图标的 Windows PowerShell。
- 看到蓝色窗口后,命令就输入在这里,不是输入到浏览器里。
第二步:登录服务器
在 PowerShell 里复制下面这一整行,然后按回车:
ssh -i "$env:USERPROFILE\.ssh\chengshiyan_aliyun_rsa" -o IdentitiesOnly=yes root@47.86.199.196
如果第一次连接,它可能问你 yes/no,输入 yes 再回车。成功后你会看到类似:
root@iZj6ce16rx0th6rv9gnt99Z:~#
看到 root@ 开头,就说明你已经进了服务器。后面的命令都在这个服务器窗口里输入。
第三步:网站打不开时,按这个顺序检查
先进入网站文件夹:
cd /var/www/chengshiyan
看网站程序是不是在线:
pm2 list
你要看表格里有没有 chengshiyan,并且状态是 online。如果不是 online,先重启:
pm2 restart chengshiyan
再看网站自己的健康接口:
curl http://127.0.0.1:8765/healthz
如果出现 "ok":true,说明网站后端是活的。
然后检查门卫 Nginx:
nginx -t
如果最后显示 test is successful,说明 Nginx 配置没写坏。重启 Nginx:
systemctl restart nginx
最后回浏览器打开 https://chengshiyan.top。如果还打不开,打开部署检查页看提示。
第四步:看报错,不要慌
如果网站还是不正常,输入:
pm2 logs chengshiyan --lines 80
这个命令会显示最近 80 行日志。重点看有没有红色英文、Error、Cannot、permission、port 这些词。
日志窗口会一直滚动。看完以后按键盘 Ctrl + C 退出日志,回到能继续输入命令的状态。
第五步:每次改东西前,先备份数据
评价、账号、回复都在这个文件里:
/var/www/chengshiyan/data/chengshiyan.sqlite
备份一份到服务器的备份箱:
mkdir -p /var/backups/chengshiyan
cp /var/www/chengshiyan/data/chengshiyan.sqlite /var/backups/chengshiyan/chengshiyan-$(date +%F-%H%M%S).sqlite
ls -lh /var/backups/chengshiyan | tail
看到最后几行里出现新的 .sqlite 文件,就说明备份成功。
第六步:不用 Codex 时怎么更新网站文件
- 先在你电脑本地改文件,例如
index.html、styles.css、app.js、manual.html。 - 如果只是改文字或样式,通常上传对应文件就行。
- 如果改了账号、后台、评价、举报这些功能,通常要上传
server.js、app.js、index.html、styles.css。 - 用 WinSCP 登录服务器,左边打开
C:\Users\21246\Desktop\teach,右边打开/var/www/chengshiyan。 - 把改过的文件从左边拖到右边,选择覆盖。
- 不要拖
data/文件夹覆盖服务器。 - 不要拖本地
.env去覆盖服务器。
上传后回到服务器窗口,执行:
cd /var/www/chengshiyan
npm run check
npm run predeploy
pm2 restart chengshiyan
如果 npm run check 或 npm run predeploy 报错,先不要重启;把报错复制保存,再慢慢查。
第七步:忘了管理员口令怎么办
管理员口令不在网页里,在服务器的 .env 文件里。进入服务器后输入:
cd /var/www/chengshiyan
nano .env
打开后,用方向键找到 ADMIN_PASSCODE= 这一行,把等号后面的内容改成新口令。
保存方法:按 Ctrl + O,再按回车;退出方法:按 Ctrl + X。
改完一定要重启网站:
pm2 restart chengshiyan
第八步:证书和域名平时不用动
现在 HTTPS 证书已经配置了自动续期。你每个月想检查一次,可以输入:
certbot certificates
certbot renew --dry-run
看到 VALID 或 successful,就是正常。
不要在阿里云里点“释放实例”“更换操作系统”“删除域名”“转出域名”。
不要在服务器里随便执行带 rm -rf 的命令,尤其不要删 /var/www/chengshiyan/data。
不要把 .env、data/chengshiyan.sqlite、后台备份文件发到群里或上传公开网盘。
真遇到不确定的报错,先截图,先备份,再处理。
12. 常见问题排查
| 问题 | 原因 | 怎么解决 |
|---|---|---|
| 网站打不开 | 服务没启动、安全组没开、Nginx 没配好 | 先执行 pm2 list,再看云服务器安全组是否开放 80/443 |
| 部署检查页打不开 | server.js 没运行,或 deploy-check.html 没上传 | 先执行 pm2 list,再确认服务器 /var/www/chengshiyan 里有 deploy-check.html |
| 部署检查提示 .env 不存在 | 还没在服务器上创建真实配置文件 | 进入 /var/www/chengshiyan,执行 cp .env.example .env,然后 nano .env 修改 |
| 部署检查提示口令或密钥像默认值 | ADMIN_PASSCODE 或 SESSION_SECRET 没认真改 | 去服务器 .env 里改成自己的强口令和长密钥,然后重启 |
| 部署检查提示数据目录不可写 | 服务器没有权限写入 data 文件夹 | 确认网站文件在 /var/www/chengshiyan,必要时让当前运行用户拥有这个目录 |
| 502 Bad Gateway | Nginx 找不到 Node 后端 | 执行 pm2 logs chengshiyan,确认 server.js 在 8765 端口运行 |
| 端口被占用 | 8765 已经被另一个程序占了 | 先执行 pm2 list 看是不是重复启动;不懂时重启服务器或把 .env 里的 PORT 和 Nginx 模板一起改 |
| 域名访问不到 | DNS 没生效或解析错 IP | 检查 A 记录是否指向服务器公网 IP,等待几分钟到数小时 |
| HTTPS 申请失败 | 域名没解析到服务器,或 80 端口没开放 | 先保证 http://你的域名 能打开,再执行 Certbot |
| 管理员密码不对 | .env 写错,或改完没重启 | 检查 /var/www/chengshiyan/.env,执行 pm2 restart chengshiyan |
| 后台提示稍后再试 | 后台口令连续输错,网站先把入口锁一会儿 | 等 15 分钟再试;如果确实忘了口令,就去服务器 .env 里重新设置并重启 |
| 用户登录失败 | 密码错、验证码过期或你改过 SESSION_SECRET | 刷新验证码重试;上线后不要随意改 SESSION_SECRET |
| 提交评价失败 | 内容含明显辱骂、隐私号码或广告引流词 | 把评价改成课程体验、作业考试、授课方式等事实描述 |
| 反馈提交不了 | 标题没填、说明太短,或内容里有隐私号码/辱骂词 | 把问题写成“哪里错了、希望怎么改”,不要写攻击性内容 |
| 手机底部导航挡住按钮 | 浏览器缓存旧样式,或页面没刷新到新版 | 手机浏览器强制刷新;如果还挡住,先用电脑检查 styles.css 是否上传了新版 |
| 公共课入口不见了 | 设置里关闭了公共课专区或手机公共课入口 | 打开设置里的“列表偏好”,重新开启公共课专区和手机公共课入口 |
| 后台搜不到某位老师 | 老师是网站内置演示数据,不是同学线上新增数据 | 先用“反馈/纠错”记录,后面统一改代码里的基础数据 |
| 评价突然看不见 | 同一条内容被多人举报后,网站先自动藏起来 | 进后台看“内容举报”,确认违规就保持隐藏;确认没问题就按处理结果恢复或忽略 |
| 数据突然没了 | 误删 data/chengshiyan.sqlite 或部署时覆盖了 data 目录 | 先看 data/backups/ 有没有最近存档,再恢复 chengshiyan.sqlite |
| 备案被退回 | 网站名称、内容说明或材料不符合要求 | 按云厂商退回原因修改,不要写官方、学校、教务等误导性表述 |
13. 后续升级路线
- 先保持当前手机号 + 密码 + 站内验证码方案稳定运行,观察真实同学会怎么用。
- 把当前分享卡片继续升级成可下载图片海报,让同学能直接发朋友圈或班群。
- 增加“新生选课榜”“公共课避坑/推荐榜”的学期版本,让每学期都能刷新热度。
- 继续优化管理员“待办清单”,加入异常高频账号提醒。
- 增加课程纠错通过后的“已修正记录”,让同学看到反馈确实被处理。
- 接短信验证码,让手机号真正可信。
- 接 QQ 互联登录,需要申请 QQ 互联网站应用和后端回调。
- 用户量变大后,把 SQLite 升级成 MySQL 或 PostgreSQL。
- 把当前敏感词检测升级为更完整的分级审核规则。
- 增加更细的管理员账号权限和登录日志导出。
- 备案号和公安备案号办下来后,把网站页脚里的占位文字替换成真实编号。
14. 官方参考链接
备案政策和材料要求会变化,正式提交前以工信部、当地通信管理局和你所用云厂商页面为准。