- bbs1org6天前
1Panel(非 Docker)手动部署 bbs1.org(bbs1org)完整教程
bbs1org 是极简 PHP 论坛,PHP8.1+,支持 SQLite / MySQL / PostgreSQL,无 Composer 依赖,不需要 docker 容器,直接使用 1Panel 的 PHP 运行时 + OpenResty (Nginx) 部署。
官方开发文档:https://bbs1.org/dev_docs⚠️说明:1Panel 本体安装会自带 docker 组件,本教程只是不使用 docker 容器运行 bbs1org 程序,使用原生 PHP 网站运行时部署,不是卸载 docker。
一、前置环境准备(1Panel 后台操作)
1. 安装基础组件【应用商店】
- 登录你的 1Panel 后台
- 进入「应用商店」
- 安装 OpenResty(web 服务 Nginx),保持默认配置
- 数据库三选一:
- 方案 A:MySQL/MariaDB(推荐生产使用)
- 方案 B:PostgreSQL(官方完整支持)
- 方案 C:SQLite,不需要额外安装数据库服务(适合测试,文件型数据库)
- 创建 PHP 运行时:菜单【网站】→【PHP 运行时】→【创建运行时】
- PHP 版本:必须选择 PHP 8.1 / 8.2(bbs1org 最低要求 PHP8.1)
- 扩展模板:选择【自定义】,务必勾选下面扩展:
pdo_mysql/pdo_pgsql/pdo_sqlite、mbstring、curl、zip、gd、fileinfo、opcache- 内存限制建议设置
128M,执行时间120s,确认创建。
SQLite 不需要数据库服务,只要开启
pdo_sqlitePHP 扩展即可。2. 数据库准备(MySQL / PostgreSQL 才需要;SQLite 跳过本节)
- 左侧菜单【数据库】,进入对应数据库(MySQL/PostgreSQL)
- 点击【创建数据库】
- 数据库名:
bbs1org - 字符集:
utf8mb4,排序规则utf8mb4_unicode_ci - 创建独立数据库账号,只赋予本库权限,保存数据库名、账号、密码。
⚠️数据库监听地址保持
127.0.0.1,不要对外开放 3306/5432 公网端口。二、创建网站站点
1Panel 菜单【网站】→【网站】→【创建网站】
- 网站类型:PHP 运行时(重点!不要选容器)
- 域名:填写你的域名(例如 bbs.example.com,没有域名填服务器公网 IP)
- PHP 运行时:选择刚才创建好的 PHP‑8.1 运行实例
- 网站根目录:
/www/wwwroot/bbs1org - SSL:有域名建议后续申请 Let’s Encrypt 证书开启 HTTPS。
- 点击确认创建站点。
进入网站设置,PHP 设置确认所有需要的扩展全部启用。
三、下载 bbs1org 源码,上传到网站目录
方式 1:1Panel 终端命令下载(推荐)
点击网站右侧【终端】,进入站点根目录
/www/wwwroot/bbs1org#下载源码(以官方main分支为例) curl -L -o bbs1org-main.zip https://github.com/bbs1git/bbs1org/archive/refs/heads/main.zip unzip bbs1org-main.zip #把文件全部移动到网站根目录 mv bbs1org-main/* ./ rm -rf bbs1org-main bbs1org-main.zip方式 2:本地下载后通过 1Panel【文件】管理器上传
- github 下载 zip 源码包:https://github.com/bbs1git/bbs1org
- 上传 zip 到网站根目录,面板内解压,将内部所有文件移到根目录,不要套一层子文件夹。
设置目录权限(关键,否则读写报错)
在网站终端执行:
chown -R www:www /www/wwwroot/bbs1org chmod -R 755 /www/wwwroot/bbs1org # data目录必须可写,存放sqlite数据库、缓存、插件数据 chmod -R 770 /www/wwwroot/bbs1org/datadata目录是程序数据目录,sqlite 数据库文件、插件缓存全部存这里,禁止浏览器直接访问 data 文件夹,源码自带 nginx 规则会拦截。四、Nginx 伪静态配置(1Panel 网站设置)
打开网站 →【配置】→【Nginx 配置】,把下面伪静态规则放到
server { }内部,替换原有 location 规则。location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^/data/ { deny all; return 403; } location ~ \.php$ { fastcgi_pass php; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }保存配置,重载 OpenResty 配置,检查配置无报错。
入口文件是
index.php,不要修改文件名,不要把程序放在子目录。五、访问网页完成安装向导
浏览器访问你的域名 / IP,进入安装向导页面
https://bbs.example.com- 环境检测页面:确认全部绿色通过,PHP 版本 >=8.1,所有 PDO 扩展、目录可写全部 ok。
- 数据库配置:
- SQLite 模式:直接选 SQLite,无需账号密码,数据库文件自动生成在
data/db.sqlite - MySQL 模式:数据库地址填
127.0.0.1,数据库名、用户名、密码填写 1Panel 数据库创建的信息,端口默认 3306 - PostgreSQL 模式:地址
127.0.0.1,端口 5432,填写库名账号密码
- 设置超级管理员账号密码、站点名称、站点访问 URL(完整带 https)。
- 提交执行安装,程序自动生成数据表。
- 安装完成,记录后台管理地址,登录后台。
✅安装完成后,后台进入「插件」页面,点击【同步插件】,系统扫描
app/plugins目录插件。六、计划任务 Cron 配置(重要,队列 / 采集 / 定时任务)
bbs1org 依赖定时任务执行 cron 钩子、消息队列、清理缓存,不要依赖网页访问触发任务。
1Panel 菜单【计划任务】→【创建任务】- 任务类型:Shell 脚本
- 执行周期:每 1 分钟
- 脚本内容(替换路径为你的真实网站目录):
cd /www/wwwroot/bbs1org /usr/bin/php index.php cron保存启用任务。
确认 php 路径,你可以在终端执行
which php获取真实 php 路径,替换脚本中的/usr/bin/php。七、安全与后续优化清单
- 网站后台:设置站点 URL,确认
DATA_DIR、PLUGIN_DIR常量正常,全部数据写在data目录,不要硬编码路径。 - 文件管理器确认
data目录不能被公网下载,Nginx 已经 deny /data。 - 开启 HTTPS,全部访问跳转 https。
- PHP 开启 opcache,提升性能。
- 定期在 1Panel 设置网站目录备份(备份整个网站目录 + MySQL 数据库)。
- 更新程序:下载新版本源码覆盖文件,访问后台插件页面同步插件。
常见排错
- 500 错误:查看网站日志,确认 PHP 版本是 8.1+;目录属主是
www:www;data 目录可写。 - 数据库连接失败:MySQL 确认账号 host 是
127.0.0.1,不要用%;确认数据库用户有对应库权限。 - 定时任务不工作:核对 php 的绝对路径;确认脚本 cd 进入网站根目录执行
index.php cron。 - 插件安装不生效:安装插件后,后台插件页面必须点【同步插件】;插件目录权限 www 可读写;plugin.php 头部必须有
if (!defined('APP_ROOT')) exit;。 - SQLite 大数据性能差,正式运营建议切换 MySQL。
开发插件提示
插件目录位置:
/www/wwwroot/bbs1org/app/plugins/你的插件id/,插件开发规范参考官方文档 https://bbs1.org/dev_docs,禁止循环内数据库查询 N+1 问题,插件 id 全部小写,资源全部带插件 ID 前缀避免冲突。最后由 bbs1org 编辑于 2026-10-01 18:18主楼 感谢🙏
加精。就是这一套