程师言上线与管理使用手册

从本地文件夹到真实网站,一步一步照做。

这份手册按“小白操作”写,默认你的项目文件夹在 C:\Users\21246\Desktop\teach,服务器上的网站目录统一放在 /var/www/chengshiyan

不要跳步骤。每完成一节,就按本节末尾的检查点确认一次。

你可以怎么用这份手册

看到黑色代码框,先看它上面写的是“在你电脑里操作”还是“在服务器里操作”。电脑里的命令输到 Windows PowerShell;服务器里的命令要先 SSH 登录服务器,再输到那个服务器窗口。

命令不是输到浏览器地址栏里的。浏览器地址栏只输入 http://127.0.0.1:8765https://你的域名 这种网址。

复制命令后,在黑色或蓝色命令窗口里点一下,按 Ctrl + V 粘贴,再按回车。看到“把 xxx 改成你的 xxx”,就不要原样复制,要换成你自己的域名、服务器 IP 或密码。

如果命令执行后没有红色报错,通常就是成功。它可能显示很多英文,这很正常;本手册会告诉你关键看哪一行。

先分清两个窗口

Windows PowerShell:在你自己的电脑里打开,用来进入 C:\Users\21246\Desktop\teach、本地启动网站、上传文件、SSH 登录服务器。

服务器窗口:你在 PowerShell 输入 ssh root@服务器IP 并登录成功后,看到类似 root@xxx:~# 的窗口。安装 Node、Nginx、PM2、启动正式网站,都在这里输入。

1. 现在项目里有什么

当前文件夹已经清理过,只保留上线需要的文件。

下面这张表不用背。你只要知道:大部分文件都要上传,真正不能公开的是 .envdata/ 里的真实数据。

文件作用是否上传服务器
index.html网站主页面上传
deploy-check.html部署前检查页,帮你看服务器配置有没有明显问题上传
deploy-check.js部署前检查页的小助手,负责读取检查结果上传
app.js网页会动、能搜索、能评价,主要靠它上传
styles.css控制颜色、排版、手机适配和下拉框样子上传
server.js网站的“管家”,负责账号、评价、举报、后台、自动备份上传
package.json告诉服务器怎么启动这个网站上传
ecosystem.config.cjs让 PM2 知道怎么长期运行网站上传
deploy/nginx-chengshiyan.confNginx 配置模板,改成你的域名后可以用上传或照着复制
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。它会指向你的服务器。
备案:国内大陆网站常见的审核登记流程,不是在代码里做,而是在云厂商备案系统里做。
Node.js:让 server.js 跑起来的软件,可以理解成网站后端的发动机。
PM2:守着网站运行的小工具。服务器重启或程序崩了,它能帮你把网站拉起来。
Nginx:站在最前面的门卫。用户访问你的域名时,它把请求转交给真正的网站程序。
.env:放后台密码和密钥的小纸条,只能放服务器上,不能公开。
data:网站真实数据的箱子,账号、评价、回复都在里面。更新代码时不要删它。

2. 选择上线路线

路线 A:国内大陆服务器

优点:国内访问快,长期正规。

缺点:必须做 ICP 备案,流程慢一些。

适合你最终正式使用。

路线 B:香港或海外服务器

优点:通常不需要 ICP 备案,可以更快上线。

缺点:国内访问可能慢,后续接国内 CDN 仍可能要备案。

适合先测试,不建议当长期最终版。

如果你想认真做给同学用,建议走路线 A:买国内云服务器,先备案,再正式上线。

3. 买域名和服务器

3.1 买域名

  1. 打开阿里云、腾讯云或华为云。
  2. 搜索一个域名,例如 chengshiyan.cnahpushiping.cn
  3. 尽量选择 .cn.com
  4. 购买后做“域名实名认证”。备案前通常必须完成实名认证。

3.2 买服务器

  1. 选择云服务器 ECS / CVM / 轻量应用服务器都可以。
  2. 地区选国内大陆,比如华东、华南、华北。
  3. 系统选 Ubuntu 22.04 LTSUbuntu 24.04 LTS
  4. 配置新手够用:1 核 1G 或 2 核 2G。
  5. 安全组开放端口:2280443。测试时也可以临时开放 8765
  6. 记下服务器公网 IP,例如 123.123.123.123
账号密码要保存好

云服务器 root 密码、云账号密码、域名账号都要保存到你自己的密码管理器或纸质备份里。不要发给别人。

4. 备案完整流程

只要你用国内大陆服务器公开提供网站访问,通常就需要 ICP 备案。备案不是在你的网站里做,是在云厂商的“备案系统”里做,最终由通信管理局审核。

4.1 备案前准备

  • 域名已购买并完成实名认证。
  • 服务器已购买,并且服务器和备案接入商一致。比如阿里云服务器就在阿里云备案,腾讯云服务器就在腾讯云备案。
  • 身份证正反面照片。
  • 手机号,能接收短信核验。
  • 网站名称,建议写成个人学习交流类名称,不要写成官方、学校、教务、门户等容易误解的名字。
  • 网站说明:由安工程 25 级电子专业学生个人搭建,非官方,仅用于学习交流、课程体验分享和选课辅助。

4.2 备案系统怎么填

  1. 进入云厂商控制台,找到“ICP备案”或“网站备案”。
  2. 选择“首次备案”或“新增网站”,按你的情况选。
  3. 主体类型选择“个人”。
  4. 填写个人姓名、身份证号、手机号、地址。
  5. 填写域名,例如 你的域名.cn
  6. 填写网站名称。建议不要出现“安徽工程大学官方”“教务系统”“学校平台”等字样。
  7. 网站备注可以写:由安工程 25 级电子专业学生个人搭建的课程评价与学习交流网站,非官方平台;页面设计、功能代码、交互文案、网站名称和图标均为本人原创;仅供学生学习交流和选课参考,拒绝人身攻击和违法内容。
  8. 按要求上传身份证、人脸核验或幕布照片,具体以云厂商页面为准。
  9. 提交初审。

4.3 短信核验和等待审核

  1. 云厂商初审通过后,工信部系统会发短信核验。
  2. 收到短信后,按短信链接或备案系统提示完成核验。
  3. 然后等待管局审核。时间不固定,几天到二十个工作日都有可能。
  4. 备案期间不要把未备案域名公开接入国内服务器,否则可能被拦截或影响审核。

4.4 备案成功后

  1. 你会得到备案号,例如 皖ICP备xxxxxxxx号
  2. 把备案号放到网站底部。当前网站底部已经留了“备案号:上线备案后在这里填写”,备案号下来后把这句话换成真实备案号即可。
  3. 按当地要求做公安联网备案。一般在网站开通后按要求办理,具体看当地公安网安平台和云厂商提示。
内容风险提醒

你的网站涉及“老师评价”。上线后一定要坚持实名或账号化管理、举报和删除申请机制。辱骂、造谣、隐私泄露、人身攻击要及时处理。

5. 本地最终测试

这一节是在你自己的电脑里操作,不是在服务器里操作。目标是:先确认这个文件夹里的网站能打开。

先提醒一句

如果你电脑里还没装 Node.js,npm start 会提示找不到命令。你可以先跳到第 7.2 节看服务器安装方式;本地电脑也可以去 Node.js 官网安装 24 版本或更新版本。

1
打开 PowerShell:按键盘左下角 Win 键,输入 PowerShell,点“Windows PowerShell”。会弹出一个蓝色或黑色窗口,里面通常有一行 PS C:\Users\你的名字>
2
把下面这一行复制到 PowerShell 窗口里,按回车。它的意思是进入你的网站文件夹。
cd C:\Users\21246\Desktop\teach

成功后,窗口左边的路径会变成类似 PS C:\Users\21246\Desktop\teach>。如果提示“找不到路径”,说明文件夹位置不对,要确认项目是不是还在桌面 teach 文件夹里。

3
在同一个 PowerShell 窗口里输入下面这一行,按回车启动网站。
npm start

如果启动成功,窗口会显示类似 程师言已启动:http://127.0.0.1:8765。这时候 PowerShell 窗口会一直停在那里,不会回到新的一行,这是正常的,表示网站正在运行。不要关这个窗口。

如果显示 npm 不是内部或外部命令npm: command not found,说明这台电脑没有装 Node.js。

4
打开浏览器,把下面这个网址复制到浏览器最上面的地址栏,按回车。注意:网址放浏览器,命令放 PowerShell。
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 passed67/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 上传,最适合小白

  1. 下载并安装 WinSCP。
  2. 新建站点,协议选 SFTP。
  3. 主机名填服务器公网 IP。
  4. 用户名填 root
  5. 密码填服务器 root 密码。
  6. 左侧打开 C:\Users\21246\Desktop\teach
  7. 右侧打开 /var/www/chengshiyan
  8. 把上面列出的文件拖到右侧。

上传完成后,右侧服务器窗口里应该能看到 index.htmlserver.jspackage.jsonscriptsdeploy 这些名字。

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,所以版本太低不行。下面命令仍然是在服务器窗口里输入,不是在浏览器里输入。

1
先复制这一行,按回车。它会告诉服务器去哪里安装 Node 24。
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -

这一步会刷很多英文。等它停下来,并且重新出现 root@xxx:~#,说明这一步跑完了。

2
再复制这一行,按回车,正式安装 Node.js。
apt install -y nodejs

安装结束后,如果没有红色报错,并且又回到 root@xxx:~#,就继续检查版本。

3
检查 Node 和 npm 是否安装成功。还是在服务器窗口里输入:
node -v
npm -v

如果第一行显示类似 v24.11.0v24...,就对了。第二行会显示 npm 版本,例如 11...

如果提示 node: command not foundnpm: 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_PASSCODESESSION_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 域名解析

这一步的意思是:告诉互联网“你的域名应该去找哪台服务器”。

  1. 打开域名控制台。
  2. 找到 DNS 解析。
  3. 添加 A 记录。
  4. 主机记录填 @,记录值填服务器公网 IP。
  5. 如果你要用 www.你的域名,再加一条主机记录 www,记录值同样填服务器公网 IP。
以你现在这个网站为例,阿里云解析里这样填
主机记录记录类型记录值意思
@A47.86.199.196chengshiyan.top 打开你的服务器
wwwA47.86.199.196www.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.comwww.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 如果显示 successfulok,说明配置没有写错。然后打开 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 进入后台

  1. 打开后台地址:https://你的域名/#admin。例如你的域名是 chengshiyan.com,就打开 https://chengshiyan.com/#admin
  2. 普通用户顶部导航不会显示后台入口;只有输入管理员口令解锁后,导航里才会临时显示“后台”。
  3. 输入 ADMIN_PASSCODE
  4. 如果口令连续输错,网站会临时锁一会儿。这是为了防止别人一直乱试你的后台密码。
  5. 点“进入后台”。
  6. 进入后先看顶部统计卡片,重点看“待处理举报”和“待审核删名”。
  7. 再看“今日待办”,它会告诉你先处理举报、删名申请、反馈纠错、隐藏内容还是新增评价抽查。
  8. 继续看“新手提示”,它会用普通话告诉你后台每天按什么顺序处理。
  9. 每个后台按钮旁边都有短说明;看不准时先别点“隐藏内容”或“封禁”。
  10. 处理完以后点“锁定后台”。
后台口令怎么保管

不要把后台口令写在网站页面、QQ群公告或公开文档里。建议只存在你自己的密码本里。怀疑泄露时,马上改 .env 里的 ADMIN_PASSCODE,然后执行 pm2 restart chengshiyan

10.3 管理账号状态

  1. 后台“账号管理”可以按昵称、手机号或用户 ID 搜索,也可以按“正常 / 已禁言 / 已封禁”筛选。
  2. “禁言”适合轻度违规:用户还能登录和查看内容,但不能新增老师、评价、回复或举报。
  3. “封禁”适合严重违规:用户会被踢出登录状态,不能继续登录或提交内容。
  4. 误操作时点“恢复正常”。每次禁言、封禁、恢复都会写入操作日志。
  5. “删除账号”是强操作:会删除这个账号,并连带删除他写过的所有评价、回复和互动记录。点之前先下载数据备份。
  6. 删除账号时,后台会要求你二次确认并手动输入“删除账号”,这是为了防止误点。
  7. 账号很多时,用“上一页 / 下一页”翻页,不需要一次加载所有账号。

10.4 处理删除申请

  1. 用户在“删除申请”页面提交后,后台会出现申请卡片。
  2. 你看老师姓名、学院、课程、原因、证据链接和联系方式。
  3. 如果合理,点“通过”。
  4. 如果证据不足或恶意提交,点“驳回”。
  5. 处理完以后点“锁定后台”。

10.5 处理内容举报

  1. 用户举报评价或回复后,后台会出现“内容举报”卡片。
  2. 举报多时可以按“待处理 / 已隐藏 / 已处理 / 已忽略”筛选,并用分页按钮逐页处理。
  3. 如果同一条内容被 3 个不同账号举报,网站会先把它藏起来,避免继续扩散。你之后再到后台判断是否真的违规。
  4. 如果是误报,点“恢复显示”;如果确实有问题,就继续保持隐藏。
  5. 如果内容确实有人身攻击、隐私泄露、广告或恶意抹黑,点“隐藏内容”。
  6. 如果你已经线下处理或记录,点“标记已处理”。
  7. 如果举报无效,点“忽略”。

10.6 处理反馈和纠错

  1. 用户点顶部“反馈/纠错”提交后,后台会出现“反馈与纠错”卡片。
  2. 你可以按“全部反馈 / 待处理 / 已解决 / 已忽略”筛选。
  3. 如果反馈说的是课程缺失、老师信息错误、页面 bug,先确认问题,再去改对应文件或后台老师维护。
  4. 处理好了点“标记已解决”。如果是重复反馈、无效反馈或看不懂的问题,点“忽略”。
  5. 反馈处理也会写入管理员操作日志,方便你以后知道自己处理过什么。

10.7 维护线上新增老师

  1. 后台“老师维护”可以搜索同学在线新增的老师。
  2. 点“编辑信息”,可以改老师姓名、职称、所属学院、授课课程、标签和简介。
  3. 这里主要改“同学后来新增”的老师。网站自带的演示老师属于代码里的基础数据,如果要大改,建议先收集反馈,再统一更新代码。
  4. 保存后,老师列表、评价下拉框和课程主页会同步用新信息。

10.8 下载和恢复备份

  1. 进入后台后,点“下载数据备份”。
  2. 浏览器会下载一个 chengshiyan-db-日期.json 文件。
  3. 下载备份也会写入管理员操作日志。
  4. 这个文件包含账号、手机号、评价、举报和后台记录,只能你自己保存,不要发给别人,不要放到公开网盘。
  5. 后台还有“恢复备份说明”按钮。它不会直接覆盖数据,只会告诉你恢复前怎么先停网站、先备份当前数据、再找最近存档,避免误点一下就把数据弄没。

10.9 查看操作日志

  1. 后台底部“最近操作日志”会显示管理员登录、后台口令输错、禁言/封禁/删除账号、处理反馈、编辑老师、处理举报、自动隐藏内容、处理删除申请、下载备份等记录。
  2. 日志只用于你自己复盘维护行为,不会记录管理员口令。
  3. 如果发现异常时间出现“下载备份”或大量处理记录,立刻修改 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 更新网站代码

  1. 先备份 data/chengshiyan.sqlite
  2. 把新版本文件上传覆盖旧文件,但不要删除 data/.env
  3. 先运行自动检查,确认没问题。
  4. 重启网站。
cd /var/www/chengshiyan
npm run predeploy
pm2 restart chengshiyan

如果 npm run predeploy 没通过,先不要重启线上网站,先修失败项。

11.5 如果没有 Codex 辅助,你自己怎么维护

先记住 4 个地址

正式网站:https://chengshiyan.top

管理员后台:https://chengshiyan.top/#admin

使用手册:https://chengshiyan.top/manual.html

部署检查页:https://chengshiyan.top/deploy-check.html

第一步:打开能输命令的地方

  1. 在 Windows 桌面左下角点开始菜单。
  2. 输入 PowerShell
  3. 点开蓝色图标的 Windows PowerShell
  4. 看到蓝色窗口后,命令就输入在这里,不是输入到浏览器里。

第二步:登录服务器

在 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 行日志。重点看有没有红色英文、ErrorCannotpermissionport 这些词。

日志窗口会一直滚动。看完以后按键盘 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 时怎么更新网站文件

  1. 先在你电脑本地改文件,例如 index.htmlstyles.cssapp.jsmanual.html
  2. 如果只是改文字或样式,通常上传对应文件就行。
  3. 如果改了账号、后台、评价、举报这些功能,通常要上传 server.jsapp.jsindex.htmlstyles.css
  4. 用 WinSCP 登录服务器,左边打开 C:\Users\21246\Desktop\teach,右边打开 /var/www/chengshiyan
  5. 把改过的文件从左边拖到右边,选择覆盖。
  6. 不要拖 data/ 文件夹覆盖服务器。
  7. 不要拖本地 .env 去覆盖服务器。

上传后回到服务器窗口,执行:

cd /var/www/chengshiyan
npm run check
npm run predeploy
pm2 restart chengshiyan

如果 npm run checknpm 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

看到 VALIDsuccessful,就是正常。

这几件事不要乱点、不要乱敲

不要在阿里云里点“释放实例”“更换操作系统”“删除域名”“转出域名”。

不要在服务器里随便执行带 rm -rf 的命令,尤其不要删 /var/www/chengshiyan/data

不要把 .envdata/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_PASSCODESESSION_SECRET 没认真改去服务器 .env 里改成自己的强口令和长密钥,然后重启
部署检查提示数据目录不可写服务器没有权限写入 data 文件夹确认网站文件在 /var/www/chengshiyan,必要时让当前运行用户拥有这个目录
502 Bad GatewayNginx 找不到 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. 后续升级路线

  1. 先保持当前手机号 + 密码 + 站内验证码方案稳定运行,观察真实同学会怎么用。
  2. 把当前分享卡片继续升级成可下载图片海报,让同学能直接发朋友圈或班群。
  3. 增加“新生选课榜”“公共课避坑/推荐榜”的学期版本,让每学期都能刷新热度。
  4. 继续优化管理员“待办清单”,加入异常高频账号提醒。
  5. 增加课程纠错通过后的“已修正记录”,让同学看到反馈确实被处理。
  6. 接短信验证码,让手机号真正可信。
  7. 接 QQ 互联登录,需要申请 QQ 互联网站应用和后端回调。
  8. 用户量变大后,把 SQLite 升级成 MySQL 或 PostgreSQL。
  9. 把当前敏感词检测升级为更完整的分级审核规则。
  10. 增加更细的管理员账号权限和登录日志导出。
  11. 备案号和公安备案号办下来后,把网站页脚里的占位文字替换成真实编号。

14. 官方参考链接

备案政策和材料要求会变化,正式提交前以工信部、当地通信管理局和你所用云厂商页面为准。