mirror of
https://github.com/cedar2025/Xboard.git
synced 2025-01-22 10:38:14 -05:00
docs: 优化部署、迁移文档、docker增加redis支持
1、优化部署、迁移 2、自动备份命令增加手动备份功能 3、docker部署集成redis
This commit is contained in:
parent
57a1d0ba48
commit
d1b48623d7
3
.docker/.data/.gitignore
vendored
3
.docker/.data/.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
*
|
*
|
||||||
!.gitignore
|
!.gitignore
|
||||||
|
!redis
|
2
.docker/.data/redis/.gitignore
vendored
Normal file
2
.docker/.data/redis/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
5
.docker/services/redis/Dockerfile
Normal file
5
.docker/services/redis/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
FROM redis:7-alpine
|
||||||
|
|
||||||
|
RUN mkdir -p /run/redis-socket && chmod 777 /run/redis-socket
|
||||||
|
COPY ./redis.conf /etc/redis.conf
|
||||||
|
CMD ["redis-server", "/etc/redis.conf"]
|
3
.docker/services/redis/redis.conf
Normal file
3
.docker/services/redis/redis.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
unixsocket /run/redis-socket/redis.sock
|
||||||
|
unixsocketperm 777
|
||||||
|
port 0
|
@ -45,6 +45,7 @@ MAILGUN_DOMAIN=
|
|||||||
MAILGUN_SECRET=
|
MAILGUN_SECRET=
|
||||||
|
|
||||||
# google cloud stoage
|
# google cloud stoage
|
||||||
|
ENABLE_AUTO_BACKUP_AND_UPDATE=false
|
||||||
GOOGLE_CLOUD_KEY_FILE=config/googleCloudStorageKey.json
|
GOOGLE_CLOUD_KEY_FILE=config/googleCloudStorageKey.json
|
||||||
GOOGLE_CLOUD_STORAGE_BUCKET=
|
GOOGLE_CLOUD_STORAGE_BUCKET=
|
||||||
|
|
||||||
|
61
README.md
Normal file
61
README.md
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# 关于Xboard
|
||||||
|
Xborad是基于V2board二次开发,在性能上和功能上都有大部分增强的**面板
|
||||||
|
|
||||||
|
# 免责声明
|
||||||
|
本项目只是本人个人开发维护,本人不保证任何可用性,也不对使用本软件造成的任何后果负责。
|
||||||
|
# 捐赠
|
||||||
|
> 如果本项目帮助到了你,你可以对作者进行捐赠,感谢你的支持
|
||||||
|
|
||||||
|
TRC20: TLypStEWsVrj6Wz9mCxbXffqgt5yz3Y4XB
|
||||||
|
# Xborad 特点
|
||||||
|
基于V2board 二次开发,增加了以下特性
|
||||||
|
- 升级Laravel10
|
||||||
|
- 适配Laravels (提升至10+倍并发)
|
||||||
|
- 适配Webman (比laravels快50%左右)
|
||||||
|
- 修改配置从数据库中获取
|
||||||
|
- 支持Docker部署、分布式部署
|
||||||
|
- 支持根据用户IP归属地来下发订阅
|
||||||
|
- 增加Hy2支持
|
||||||
|
- 增加sing-box下发
|
||||||
|
- 支持直接从cloudflare获取访问者真实IP
|
||||||
|
- 支持根据客户端版本自动下发新协议
|
||||||
|
- 支持线路筛选(订阅地址后面增加 &filter=香港|美国)
|
||||||
|
- 支持Sqlite安装(代替Mysql,自用用户福音)
|
||||||
|
- 使用Vue3 + TypeScript + NaiveUI + Unocss + Pinia重构用户前端
|
||||||
|
- 修复大量BUG
|
||||||
|
|
||||||
|
# **系统架构**
|
||||||
|
|
||||||
|
- PHP8.1+
|
||||||
|
- Composer
|
||||||
|
- MySQL5.7+
|
||||||
|
- Redis
|
||||||
|
- Laravel
|
||||||
|
|
||||||
|
## 性能对比 [查看详情](./docs/性能对比.md)
|
||||||
|
> xboard 无论前端还是后端性能都有巨大的提升
|
||||||
|
|
||||||
|
|场景 | php-fpm(传统) | php-fpm(传统开启opcache) | laravels | webman(docker)|
|
||||||
|
|---- | ---- |---- |----| ---|
|
||||||
|
|首页 | 6请求/秒 | 157请求/秒 | 477请求/秒 | 803请求/秒 |
|
||||||
|
|用户订阅 | 6请求/秒 | 196请求/秒 | 586请求/秒 | 1064请求/秒 |
|
||||||
|
|用户首页延迟| 308ms | 110ms | 101ms | 98ms |
|
||||||
|
|
||||||
|
## 页面展示
|
||||||
|
![示例图片](./docs/images/dashboard.png)
|
||||||
|
|
||||||
|
## 安装 / 更新 / 回滚
|
||||||
|
你可以点击查看下列方式的**安装、更新**步骤
|
||||||
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
|
- [aapanel 部署](./docs/)
|
||||||
|
### 从其他版本迁移
|
||||||
|
#### 数据库迁移
|
||||||
|
1. 先导入原的数据库。(<span style="color:red;">不要走安装步骤</span>)
|
||||||
|
2. 手动写好.env 数据库账号密码
|
||||||
|
3. 根据你的版本查看对应的迁移指南进行迁移
|
||||||
|
- v2board dev 23/10/27的版本 [点击跳转迁移指南](./docs/v2b_dev迁移指南.md)
|
||||||
|
- v2board 1.7.4 [点击跳转迁移指南](./docs/v2b_1.7.4迁移指南.md)
|
||||||
|
- v2board 1.7.3 [点击跳转迁移指南](./docs/v2b_1.7.3迁移指南.md)
|
||||||
|
- v2board wyx2685 [点击跳转迁移指南](./docs/v2b_wyx2685迁移指南.md)
|
||||||
|
|
@ -7,17 +7,20 @@ use Google\Cloud\Storage\StorageClient;
|
|||||||
|
|
||||||
class BackupDatabase extends Command
|
class BackupDatabase extends Command
|
||||||
{
|
{
|
||||||
protected $signature = 'backup:upload-cloud';
|
protected $signature = 'backup:database {upload?}';
|
||||||
protected $description = '备份数据库并上传到 Google Cloud Storage';
|
protected $description = '备份数据库并上传到 Google Cloud Storage';
|
||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
// 判断是否存在必要配置
|
$isUpload = $this->argument('upload');
|
||||||
$requiredConfigs = ['database.connections.mysql', 'cloud_storage.google_cloud.key_file', 'cloud_storage.google_cloud.storage_bucket'];
|
// 如果是上传到云端则判断是否存在必要配置
|
||||||
foreach ($requiredConfigs as $config) {
|
if($isUpload){
|
||||||
if (config($config) === null) {
|
$requiredConfigs = ['database.connections.mysql', 'cloud_storage.google_cloud.key_file', 'cloud_storage.google_cloud.storage_bucket'];
|
||||||
$this->error("❌:缺少必要配置项: $config , 取消备份");
|
foreach ($requiredConfigs as $config) {
|
||||||
return;
|
if (blank(config($config))) {
|
||||||
|
$this->error("❌:缺少必要配置项: $config , 取消备份");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,27 +42,31 @@ class BackupDatabase extends Command
|
|||||||
->dumpToFile($databaseBackupPath);
|
->dumpToFile($databaseBackupPath);
|
||||||
$this->info("2️⃣:Sqlite备份完成");
|
$this->info("2️⃣:Sqlite备份完成");
|
||||||
}
|
}
|
||||||
$this->info("3️⃣:开始将备份上传到Google Cloud");
|
if (!$isUpload){
|
||||||
// Google Cloud Storage 配置
|
$this->info("🎉:数据库成功备份到:$databaseBackupPath");
|
||||||
$storage = new StorageClient([
|
}else{
|
||||||
'keyFilePath' => config('cloud_storage.google_cloud.key_file'),
|
// 传到云盘
|
||||||
]);
|
$this->info("3️⃣:开始将备份上传到Google Cloud");
|
||||||
$bucket = $storage->bucket(config('cloud_storage.google_cloud.storage_bucket'));
|
// Google Cloud Storage 配置
|
||||||
$objectName = 'backup/' . now()->format('Y-m-d_H-i-s') . '_database_backup.sql';
|
$storage = new StorageClient([
|
||||||
// 上传文件
|
'keyFilePath' => config('cloud_storage.google_cloud.key_file'),
|
||||||
$bucket->upload(fopen($databaseBackupPath, 'r'), [
|
]);
|
||||||
'name' => $objectName,
|
$bucket = $storage->bucket(config('cloud_storage.google_cloud.storage_bucket'));
|
||||||
]);
|
$objectName = 'backup/' . now()->format('Y-m-d_H-i-s') . '_database_backup.sql';
|
||||||
|
// 上传文件
|
||||||
// 输出文件链接
|
$bucket->upload(fopen($databaseBackupPath, 'r'), [
|
||||||
|
'name' => $objectName,
|
||||||
\Log::channel('backup')->info("🎉:数据库备份已上传到 Google Cloud Storage: $objectName");
|
]);
|
||||||
$this->info("🎉:数据库备份已上传到 Google Cloud Storage: $objectName");
|
|
||||||
|
// 输出文件链接
|
||||||
|
\Log::channel('backup')->info("🎉:数据库备份已上传到 Google Cloud Storage: $objectName");
|
||||||
|
$this->info("🎉:数据库备份已上传到 Google Cloud Storage: $objectName");
|
||||||
|
\File::delete($databaseBackupPath);
|
||||||
|
}
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
\Log::channel('backup')->error("😔:数据库备份失败" . $e->getMessage());
|
\Log::channel('backup')->error("😔:数据库备份失败 \n" . $e);
|
||||||
$this->error("😔:数据库备份失败" . $e->getMessage());
|
$this->error("😔:数据库备份失败\n" . $e);
|
||||||
|
\File::delete($databaseBackupPath);
|
||||||
}
|
}
|
||||||
// 开始删除本地备份
|
|
||||||
\File::delete($databaseBackupPath);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,20 +52,21 @@ class XboardInstall extends Command
|
|||||||
if (\File::exists(base_path() . '/.env') && $this->getEnvValue('INSTALLED')) {
|
if (\File::exists(base_path() . '/.env') && $this->getEnvValue('INSTALLED')) {
|
||||||
$securePath = admin_setting('secure_path', admin_setting('frontend_admin_path', hash('crc32b', config('app.key'))));
|
$securePath = admin_setting('secure_path', admin_setting('frontend_admin_path', hash('crc32b', config('app.key'))));
|
||||||
$this->info("访问 http(s)://你的站点/{$securePath} 进入管理面板,你可以在用户中心修改你的密码。");
|
$this->info("访问 http(s)://你的站点/{$securePath} 进入管理面板,你可以在用户中心修改你的密码。");
|
||||||
abort(500, '如需重新安装请清空目录下 .env 文件的内容(Docker安装方式不可以删除此文件)');
|
$this->warn("如需重新安装请清空目录下 .env 文件的内容(Docker安装方式不可以删除此文件)");
|
||||||
|
$this->warn("快捷清空.env命令: \"rm .env && touch .env\"");
|
||||||
\Artisan::call('config:cache');
|
\Artisan::call('config:cache');
|
||||||
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选择是否使用Sqlite
|
// 选择是否使用Sqlite
|
||||||
$isSqlite = $this->ask('是否启用Sqlite代替Mysql(默认不启动 y/n)','n');
|
if( $this->ask('是否启用Sqlite(无需额外安装)代替Mysql(默认不启用 y/n)','n') == 'y' ) {
|
||||||
if( $isSqlite == 'y' ) {
|
|
||||||
$sqliteFile = '.docker/.data/database.sqlite';
|
$sqliteFile = '.docker/.data/database.sqlite';
|
||||||
if (!file_exists(base_path($sqliteFile))) {
|
if (!file_exists(base_path($sqliteFile))) {
|
||||||
// 创建空文件
|
// 创建空文件
|
||||||
if (touch(base_path($sqliteFile))) {
|
if (touch(base_path($sqliteFile))) {
|
||||||
echo "sqlite创建成功: $sqliteFile";
|
echo "sqlite创建成功: $sqliteFile";
|
||||||
} else {
|
} else {
|
||||||
echo "sqlite创建成功";
|
echo "sqlite创建失败";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$envConfig = [
|
$envConfig = [
|
||||||
@ -75,15 +76,7 @@ class XboardInstall extends Command
|
|||||||
'DB_HOST' => '',
|
'DB_HOST' => '',
|
||||||
'DB_USERNAME' => '',
|
'DB_USERNAME' => '',
|
||||||
'DB_PASSWORD' => '',
|
'DB_PASSWORD' => '',
|
||||||
'REDIS_HOST' => $this->ask('请输入redis地址(默认: 127.0.0.1)', '127.0.0.1'),
|
|
||||||
'REDIS_PORT'=> $this->ask('请输入redis端口(默认: 6379)', '6379'),
|
|
||||||
'REDIS_PASSWORD' => $this->ask('请输入redis密码(默认: null)', null),
|
|
||||||
'INSTALLED' => 'true'
|
|
||||||
];
|
];
|
||||||
if (!copy(base_path() . '/.env.example', base_path() . '/.env')) {
|
|
||||||
abort(500, '复制环境文件失败,请检查目录权限');
|
|
||||||
}
|
|
||||||
$this->saveToEnv($envConfig);
|
|
||||||
}else{
|
}else{
|
||||||
$envConfig = [
|
$envConfig = [
|
||||||
'APP_KEY' => 'base64:' . base64_encode(Encrypter::generateKey('AES-256-CBC')),
|
'APP_KEY' => 'base64:' . base64_encode(Encrypter::generateKey('AES-256-CBC')),
|
||||||
@ -93,17 +86,27 @@ class XboardInstall extends Command
|
|||||||
'DB_DATABASE' => $this->ask('请输入数据库名', 'xboard'),
|
'DB_DATABASE' => $this->ask('请输入数据库名', 'xboard'),
|
||||||
'DB_USERNAME' => $this->ask('请输入数据库用户名'),
|
'DB_USERNAME' => $this->ask('请输入数据库用户名'),
|
||||||
'DB_PASSWORD' => $this->ask('请输入数据库密码'),
|
'DB_PASSWORD' => $this->ask('请输入数据库密码'),
|
||||||
'REDIS_HOST' => $this->ask('请输入redis地址(默认: 127.0.0.1)', '127.0.0.1'),
|
|
||||||
'REDIS_PORT'=> $this->ask('请输入redis端口(默认: 6379)', '6379'),
|
|
||||||
'REDIS_PASSWORD' => $this->ask('请输入redis密码(默认: null)', null),
|
|
||||||
'INSTALLED' => 'true'
|
|
||||||
];
|
];
|
||||||
if (!copy(base_path() . '/.env.example', base_path() . '/.env')) {
|
|
||||||
abort(500, '复制环境文件失败,请检查目录权限');
|
|
||||||
}
|
|
||||||
$this->saveToEnv($envConfig);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$envConfig['INSTALLED'] = 'true';
|
||||||
|
// 判断是否为Docker环境
|
||||||
|
if (env('docker', false) == 'true' && $this->ask('是否启用Docker内置的Redis(默认启用 y/n)','y') === 'y'){
|
||||||
|
$envConfig['REDIS_HOST'] = '/run/redis-socket';
|
||||||
|
$envConfig['REDIS_PORT'] = 0;
|
||||||
|
$envConfig['REDIS_PASSWORD'] = null;
|
||||||
|
}else{
|
||||||
|
$envConfig['REDIS_HOST'] = $this->ask('请输入redis地址(默认: 127.0.0.1)', '127.0.0.1');
|
||||||
|
$envConfig['REDIS_PORT'] = $this->ask('请输入redis端口(默认: 6379)', '6379');
|
||||||
|
$envConfig['REDIS_PASSWORD'] = $this->ask('请输入redis密码(默认: null)', null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!copy(base_path() . '/.env.example', base_path() . '/.env')) {
|
||||||
|
abort(500, '复制环境文件失败,请检查目录权限');
|
||||||
|
}
|
||||||
|
$this->saveToEnv($envConfig);
|
||||||
|
|
||||||
\Artisan::call('config:clear');
|
\Artisan::call('config:clear');
|
||||||
\Artisan::call('config:cache');
|
\Artisan::call('config:cache');
|
||||||
\Artisan::call('cache:clear');
|
\Artisan::call('cache:clear');
|
||||||
@ -132,7 +135,7 @@ class XboardInstall extends Command
|
|||||||
$defaultSecurePath = hash('crc32b', config('app.key'));
|
$defaultSecurePath = hash('crc32b', config('app.key'));
|
||||||
$this->info("访问 http(s)://你的站点/{$defaultSecurePath} 进入管理面板,你可以在用户中心修改你的密码。");
|
$this->info("访问 http(s)://你的站点/{$defaultSecurePath} 进入管理面板,你可以在用户中心修改你的密码。");
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->error($e->getMessage());
|
$this->error($e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,9 @@ class Kernel extends ConsoleKernel
|
|||||||
// horizon metrics
|
// horizon metrics
|
||||||
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
||||||
// backup Timing
|
// backup Timing
|
||||||
$schedule->command('backup:upload-cloud')->daily();
|
if(env('ENABLE_AUTO_BACKUP_AND_UPDATE', false)){
|
||||||
|
$schedule->command('backup:database',['true'])->daily();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
"nunomaduro/collision": "^7.10",
|
"nunomaduro/collision": "^7.10",
|
||||||
"paragonie/sodium_compat": "^1.20",
|
"paragonie/sodium_compat": "^1.20",
|
||||||
"php-curl-class/php-curl-class": "^8.6",
|
"php-curl-class/php-curl-class": "^8.6",
|
||||||
|
"spatie/db-dumper": "^3.4",
|
||||||
"stripe/stripe-php": "^7.36.1",
|
"stripe/stripe-php": "^7.36.1",
|
||||||
"symfony/yaml": "*",
|
"symfony/yaml": "*",
|
||||||
"zoujingli/ip2region": "^2.0"
|
"zoujingli/ip2region": "^2.0"
|
||||||
|
@ -1,11 +1,23 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
xboard:
|
xboard:
|
||||||
build:
|
# build:
|
||||||
context: .
|
# context: .
|
||||||
|
image: ghcr.io/cedar2025/xboard:latest
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/www/
|
- ./:/www/
|
||||||
# - ./.env:/www/.env
|
- redis-socket:/run/redis-socket # 挂载socket
|
||||||
# - ./.docker/.data/:/www/.docker/.data/
|
environment:
|
||||||
# - ./config/v2board.php:/www/config/v2board.php
|
- docker=true #用于给安装脚本判断是否为docker环境
|
||||||
network_mode: host
|
depends_on:
|
||||||
|
- redis
|
||||||
|
ports:
|
||||||
|
- 7001:7001
|
||||||
|
redis:
|
||||||
|
build:
|
||||||
|
context: .docker/services/redis
|
||||||
|
volumes:
|
||||||
|
- ./.docker/.data/redis:/data/ # 挂载redis持久化数据
|
||||||
|
- redis-socket:/run/redis-socket # 挂载socket
|
||||||
|
volumes:
|
||||||
|
redis-socket:
|
81
docs/aapanel+docker安装指南.md
Normal file
81
docs/aapanel+docker安装指南.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
## Docker-Compose 部署教程
|
||||||
|
本文教你如何在命令行使用aapanel + docker-compose来快速Xboard
|
||||||
|
|
||||||
|
### 部署
|
||||||
|
1. 安装aaPanel
|
||||||
|
|
||||||
|
如果是Centos系统
|
||||||
|
```
|
||||||
|
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel
|
||||||
|
```
|
||||||
|
如果是Ubuntu/Deepin系统
|
||||||
|
```
|
||||||
|
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel
|
||||||
|
```
|
||||||
|
如果是Debian 系统
|
||||||
|
```
|
||||||
|
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel
|
||||||
|
```
|
||||||
|
|
||||||
|
安装完成后我们登陆 aaPanel 进行环境的安装。
|
||||||
|
2. 选择使用LNMP的环境安装方式勾选如下信息
|
||||||
|
☑️ Nginx 任意版本
|
||||||
|
☑️ MySQL 5.7
|
||||||
|
选择 Fast 快速编译后进行安装。
|
||||||
|
<span style="color:yellow">⚠️ :无需安装php 与 redis</span>
|
||||||
|
|
||||||
|
3. 添加站点
|
||||||
|
>aaPanel 面板 > Website > Add site。
|
||||||
|
>>在 Domain 填入你指向服务器的域名
|
||||||
|
>>在 Database 选择MySQL
|
||||||
|
>>在 PHP Verison 选择纯静态
|
||||||
|
|
||||||
|
4. 修改 Mysql访问权限
|
||||||
|
> 不做这一步会导致连不上数据库
|
||||||
|
- aaPanel 面板 > Database 找到你的站点数据库
|
||||||
|
- 点击 Permission
|
||||||
|
- 将访问权限改为ALL(所有人)
|
||||||
|
|
||||||
|
5. 安装 Xborad
|
||||||
|
>通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
||||||
|
>以下命令都需要在站点目录进行执行。
|
||||||
|
```
|
||||||
|
# 删除目录下文件
|
||||||
|
chattr -i .user.ini
|
||||||
|
rm -rf .htaccess 404.html index.html .user.ini
|
||||||
|
```
|
||||||
|
> 执行命令从 Github 克隆到当前目录。
|
||||||
|
```
|
||||||
|
git clone https://github.com/cedar2025/Xboard.git ./
|
||||||
|
```
|
||||||
|
> 执行命令安装依赖包以及Xboard
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard sh init.sh
|
||||||
|
```
|
||||||
|
> 根据提示完成安装
|
||||||
|
> 执行这条命令之后,会返回你的后台地址和管理员账号密码(你需要记录下来)
|
||||||
|
> 你需要执行下面的 **启动xborad** 步骤之后才能访问后台
|
||||||
|
|
||||||
|
6. 启动xboard
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
7. 设置反向代理
|
||||||
|
> 站点设置 > 反向代理 > 添加反向代理
|
||||||
|
>> 在 **代理名称** 填入 Xboard
|
||||||
|
>> 在 **目标URL** 填入 ```http://127.0.0.1:7001```
|
||||||
|
|
||||||
|
🎉: 到这里,你可以已经可以通过域名访问你的站点了
|
||||||
|
|
||||||
|
### 更新
|
||||||
|
1. 更新代码
|
||||||
|
>通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
||||||
|
>以下命令都需要在站点目录进行执行。
|
||||||
|
```
|
||||||
|
sh update.sh
|
||||||
|
```
|
||||||
|
2. 重启Xboard
|
||||||
|
```
|
||||||
|
docker compose restart
|
||||||
|
```
|
||||||
|
🎉: 在此你已完成Xboard的更新
|
169
docs/aapanel安装指南.md
Normal file
169
docs/aapanel安装指南.md
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
## aapanel部署指南
|
||||||
|
> 本文将教你如何使用aapanel进行部署
|
||||||
|
### 安装
|
||||||
|
1. 安装aaPanel
|
||||||
|
|
||||||
|
如果是Centos系统
|
||||||
|
```
|
||||||
|
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel
|
||||||
|
```
|
||||||
|
如果是Ubuntu/Deepin系统
|
||||||
|
```
|
||||||
|
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel
|
||||||
|
```
|
||||||
|
如果是Debian 系统
|
||||||
|
```
|
||||||
|
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel
|
||||||
|
```
|
||||||
|
|
||||||
|
安装完成后我们登陆 aaPanel 进行环境的安装。
|
||||||
|
2. 选择使用LNMP的环境安装方式勾选如下信息
|
||||||
|
☑️ Nginx 任意版本
|
||||||
|
☑️ MySQL 5.7
|
||||||
|
☑️ PHP 8.1 (如果没看到8.1先不选,去App Store安装)
|
||||||
|
选择 Fast 快速编译后进行安装。
|
||||||
|
|
||||||
|
3. 安装扩展
|
||||||
|
> aaPanel 面板 > App Store > 找到PHP 8.1点击Setting > Install extentions选择以下扩展进行安装
|
||||||
|
- redis
|
||||||
|
- fileinfo
|
||||||
|
- swoole4
|
||||||
|
- readline
|
||||||
|
- event
|
||||||
|
|
||||||
|
4. 解除被禁止函数
|
||||||
|
> aaPanel 面板 > App Store > 找到PHP 8.1点击Setting > Disabled functions 将以下函数从列表中删除
|
||||||
|
- putenv
|
||||||
|
- proc_open
|
||||||
|
- pcntl_alarm
|
||||||
|
- pcntl_signal
|
||||||
|
|
||||||
|
5. 添加站点
|
||||||
|
>aaPanel 面板 > Website > Add site。
|
||||||
|
>>在 Domain 填入你指向服务器的域名
|
||||||
|
>>在 Database 选择MySQL
|
||||||
|
>>在 PHP Verison 选择PHP-81
|
||||||
|
|
||||||
|
6. 安装 Xborad
|
||||||
|
>通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
||||||
|
>以下命令都需要在站点目录进行执行。
|
||||||
|
```
|
||||||
|
# 删除目录下文件
|
||||||
|
chattr -i .user.ini
|
||||||
|
rm -rf .htaccess 404.html index.html .user.ini
|
||||||
|
```
|
||||||
|
> 执行命令从 Github 克隆到当前目录。
|
||||||
|
```
|
||||||
|
git clone https://github.com/cedar2025/Xboard.git ./
|
||||||
|
```
|
||||||
|
> 执行命令安装依赖包以及V2board
|
||||||
|
```
|
||||||
|
sh init.sh
|
||||||
|
```
|
||||||
|
> 根据提示完成安装
|
||||||
|
7. 配置站点目录及伪静态
|
||||||
|
> 添加完成后编辑添加的站点 > Site directory > Running directory 选择 /public 保存。
|
||||||
|
> 添加完成后编辑添加的站点 > URL rewrite 填入伪静态信息。
|
||||||
|
```
|
||||||
|
location /downloads {
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php$is_args$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ .*\.(js|css)?$
|
||||||
|
{
|
||||||
|
expires 1h;
|
||||||
|
error_log off;
|
||||||
|
access_log /dev/null;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
8. 配置守护进程
|
||||||
|
>Xboard的系统强依赖队列服务,正常使用XBoard必须启动队列服务。下面以aaPanel中supervisor服务来守护队列服务作为演示。
|
||||||
|
- 1️⃣. aaPanel 面板 > App Store > Tools
|
||||||
|
- 2️⃣. 找到Supervisor进行安装,安装完成后点击设置 > Add Daemon按照如下填写
|
||||||
|
- - 在 Name 填写 Xboard
|
||||||
|
- - 在 Run User 选择 www
|
||||||
|
- - 在 Run Dir 选择 站点目录 在 Start Command 填写 php artisan horizon 在 Processes 填写 1
|
||||||
|
|
||||||
|
>填写后点击Confirm添加即可运行。
|
||||||
|
|
||||||
|
9. 配置定时任务#
|
||||||
|
aaPanel 面板 > Cron。
|
||||||
|
- 在 Type of Task 选择 Shell Script
|
||||||
|
- 在 Name of Task 填写 v2board
|
||||||
|
- 在 Period 选择 N Minutes 1 Minute
|
||||||
|
- 在 Script content 填写 php /www/wwwroot/路径/artisan schedule:run
|
||||||
|
|
||||||
|
根据上述信息添加每1分钟执行一次的定时任务。
|
||||||
|
|
||||||
|
|
||||||
|
### 开启webman
|
||||||
|
> 在上述安装的基础上开启webman提高性能
|
||||||
|
|
||||||
|
1. 配置php.ini
|
||||||
|
> 通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
||||||
|
```
|
||||||
|
cp /www/server/php/81/etc/php-cli.ini cli-php.ini
|
||||||
|
|
||||||
|
sed -i '' 's/^disable_functions=.*/disable_functions=header,header_remove,headers_sent,http_response_code,setcookie,session_create_id,session_id,session_name,session_save_path,session_status,session_start,session_write_close,session_regenerate_id,set_time_limit/' cli-php.ini
|
||||||
|
```
|
||||||
|
2. 添加守护进程
|
||||||
|
>下面以aaPanel中supervisor服务来守护队列服务作为演示。
|
||||||
|
- 1️⃣. aaPanel 面板 > App Store > Tools
|
||||||
|
- 2️⃣. 找到Supervisor进行安装,安装完成后点击设置 > Add Daemon按照如下填写
|
||||||
|
- - 在 Name 填写 webman
|
||||||
|
- - 在 Run User 选择 www
|
||||||
|
- - 在 Run Dir 选择 站点目录 在 Start Command 填写 /www/server/php/81/bin/php -c cli-php.ini webman start 在 Processes 填写 1
|
||||||
|
>填写后点击Confirm添加即可运行。
|
||||||
|
|
||||||
|
3. 添加反向代理
|
||||||
|
> 站点设置 > 反向代理 > 添加反向代理
|
||||||
|
>> 在 **代理名称** 填入 Xboard
|
||||||
|
>> 在 **目标URL** 填入 ```http://127.0.0.1:7010```
|
||||||
|
> 添加添加后 需要点击该反向代理的```配置文件```编辑反向代理规则做以下修改
|
||||||
|
|
||||||
|
```
|
||||||
|
location ~* \.(jpg|jpeg|png|gif|js|css|svg|woff2|woff|ttf|eot|wasm|json|ico)$ {}
|
||||||
|
location ^~ /
|
||||||
|
{
|
||||||
|
proxy_pass http://127.0.0.1:8000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header REMOTE-HOST $remote_addr;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
# proxy_hide_header Upgrade;
|
||||||
|
add_header X-Cache $upstream_cache_status;
|
||||||
|
|
||||||
|
#Set Nginx Cache
|
||||||
|
set $static_filetmMCG7Tk 0;
|
||||||
|
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
|
||||||
|
{
|
||||||
|
set $static_filetmMCG7Tk 1;
|
||||||
|
expires 1m;
|
||||||
|
}
|
||||||
|
if ( $static_filetmMCG7Tk = 0 )
|
||||||
|
{
|
||||||
|
add_header Cache-Control no-cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> 在此你的webman已经成功部署了
|
||||||
|
|
||||||
|
### 更新
|
||||||
|
|
||||||
|
1. 更新代码
|
||||||
|
> 通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
||||||
|
```
|
||||||
|
sh update.sh
|
||||||
|
```
|
||||||
|
2. 重启webman 守护进程(如果启用了webman)
|
||||||
|
- 1️⃣. aaPanel 面板 > App Store > Tools
|
||||||
|
- 2️⃣. 找到Supervisor点击设置,找到名为webman的守护进程点击重启即可
|
||||||
|
|
||||||
|
|
29
docs/config迁移指南.md
Normal file
29
docs/config迁移指南.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#### config/v2board.php 迁移
|
||||||
|
> xboard将配置储存到数据库了, 不再使用file进行储存,你需要对配置文件进行迁移。
|
||||||
|
#### docker-compose 环境
|
||||||
|
1. 在xboard 目录下创建 config文件夹
|
||||||
|
2. 复制旧项目的 v2board.php 到config目录
|
||||||
|
3. 修改docker-compose.yaml 取消下面代码的注释(删除 "#")
|
||||||
|
```
|
||||||
|
# - ./config/v2board.php:/www/config/v2board.php
|
||||||
|
```
|
||||||
|
4. 执行下面的命令即可完成迁移
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
docker compose run -it --rm xboard php artisan migrateFromV2b config
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
#### aapanel 环境
|
||||||
|
1. 将旧的 ```config/v2board.php``` 文件复制到 xboard的 ```config/v2board.php``` 下
|
||||||
|
2. 执行下面的命令,即可完成迁移
|
||||||
|
```
|
||||||
|
php artisan migrateFromV2b config
|
||||||
|
```
|
||||||
|
### aapanel + docker 环境
|
||||||
|
1. 将旧的 ```config/v2board.php``` 文件复制到 xboard的 ```config/v2board.php``` 下
|
||||||
|
2. 执行下面的命令,即可完成迁移
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
docker compose run -it --rm xboard php artisan migrateFromV2b config
|
||||||
|
docker compose up -d
|
||||||
|
```
|
66
docs/docker-compose安装指南.md
Normal file
66
docs/docker-compose安装指南.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
## Docker-Compose 部署教程
|
||||||
|
本文教你如何在命令行使用docker-compose + sqlite来快速部署Xboard
|
||||||
|
如果你需要使用Mysql,你需要自行处理好Mysql的安装。
|
||||||
|
### 部署 (使用docker-compose 2分钟部署)
|
||||||
|
> 在此提供Xboard安装、快速体验Xboard的步骤。
|
||||||
|
使用docker compose + sqlite 快速部署站点(**无需安装Mysql以及redis**)
|
||||||
|
1. 安装docker
|
||||||
|
```
|
||||||
|
curl -sSL https://get.docker.com | bash
|
||||||
|
systemctl enable docker
|
||||||
|
systemctl start docker
|
||||||
|
```
|
||||||
|
2. 获取Docker compose 文件
|
||||||
|
```
|
||||||
|
git clone -b docker-compose --depth 1 https://github.com/cedar2025/Xboard
|
||||||
|
cd Xboard
|
||||||
|
```
|
||||||
|
3. 执行数据库安装命令
|
||||||
|
> 选择 **启用sqlite** 和 **Docker内置的Redis**
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan xboard:install
|
||||||
|
```
|
||||||
|
> 执行这条命令之后,会返回你的后台地址和管理员账号密码(你需要记录下来)
|
||||||
|
> 你需要执行下面的 **启动xborad** 步骤之后才能访问后台
|
||||||
|
|
||||||
|
4. 启动Xboard
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
> 安装完成之后即可访问你的站点
|
||||||
|
5. 访问站点
|
||||||
|
> 启动之后网站端口默认为7001, 你可以配置nginx反向代理使用80端口
|
||||||
|
|
||||||
|
网站地址: http://你的IP:7001/
|
||||||
|
在此你已经成功部署了, 你可以访问网址体验Xboard的完整功能,
|
||||||
|
|
||||||
|
> 如果你需要使用mysql,请自行安装Mysql后重新部署
|
||||||
|
|
||||||
|
### **更新**
|
||||||
|
1. 修改版本
|
||||||
|
```
|
||||||
|
cd Xboard
|
||||||
|
vi docker-compose.yaml
|
||||||
|
```
|
||||||
|
> 修改docker-compose.yaml 当中image后面的版本号为你需要的版本
|
||||||
|
|
||||||
|
2. 更新数据库(可以执行多次都是安全的)
|
||||||
|
```
|
||||||
|
docker compose pull
|
||||||
|
docker compose down
|
||||||
|
docker compose run -it --rm xboard php artisan xboard:update
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
> 即可更新成功
|
||||||
|
|
||||||
|
### **回滚**
|
||||||
|
> 此回滚不回滚数据库,是否回滚数据库请查看相关文档
|
||||||
|
1. 回退版本
|
||||||
|
```
|
||||||
|
vi docker-compose.yaml
|
||||||
|
```
|
||||||
|
> 修改docker-compose.yaml 当中image后面的版本号为更新前的版本号
|
||||||
|
2. 启动
|
||||||
|
```
|
||||||
|
dockcer compose up -d
|
||||||
|
```
|
@ -14,14 +14,40 @@
|
|||||||
- 添加 v2_server_hysteria 数据表
|
- 添加 v2_server_hysteria 数据表
|
||||||
- 添加 v2_server_vless 数据表
|
- 添加 v2_server_vless 数据表
|
||||||
|
|
||||||
### 迁移命令
|
## 迁移之前
|
||||||
|
迁移之前你需要执行正常安装步骤(记得不可选择Sqlite)
|
||||||
|
> sqlite迁移请自行学习相关知识
|
||||||
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
|
- [aapanel 部署](./docs/)
|
||||||
|
|
||||||
|
## 开始迁移
|
||||||
|
> 针对docker与非docker用户提供不同的迁移步骤,你根据你的安装环境选择其一即可。
|
||||||
|
|
||||||
|
### docker 环境
|
||||||
|
> 以下命令需要你打开SSH进入到项目目录进行执行
|
||||||
|
1. 停止Xboard
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
2. 清空数据库
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan db:wipe
|
||||||
|
```
|
||||||
|
3. 执行迁移命令
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan migratefromv2b 1.7.3
|
||||||
|
```
|
||||||
|
## aapanel 环境
|
||||||
|
1. 清空数据库
|
||||||
|
```
|
||||||
|
php artisan db:wipe
|
||||||
|
```
|
||||||
|
2. 执行迁移命令
|
||||||
```
|
```
|
||||||
php artisan migratefromv2b 1.7.3
|
php artisan migratefromv2b 1.7.3
|
||||||
```
|
```
|
||||||
|
|
||||||
>如果你是docker-compose 部署
|
> 上述迁移完成之后你需要进行 配置文件迁移
|
||||||
```
|
## config/v2board.php 配置文件迁移 [点击查看步骤](./config迁移指南.md)
|
||||||
docker compose down
|
> xboard将配置储存到数据库, 不再使用file进行储存,你需要对配置文件进行迁移。
|
||||||
docker compose run -it --rm xboard php artisan migratefromv2b 1.7.3
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
@ -3,17 +3,40 @@
|
|||||||
### 迁移脚本会对你的数据库做以下更改
|
### 迁移脚本会对你的数据库做以下更改
|
||||||
- 添加 v2_server_vless 数据表
|
- 添加 v2_server_vless 数据表
|
||||||
|
|
||||||
### 迁移命令
|
## 迁移之前
|
||||||
#### 手动部署(aapanel)
|
迁移之前你需要执行正常安装步骤(记得不可选择Sqlite)
|
||||||
> 如果你是手动(aapanel)部署的,执行以下命令
|
> sqlite迁移请自行学习相关知识
|
||||||
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
|
- [aapanel 部署](./docs/)
|
||||||
|
|
||||||
|
## 开始迁移
|
||||||
|
> 针对docker与非docker用户提供不同的迁移步骤,你根据你的安装环境选择其一即可。
|
||||||
|
|
||||||
|
### docker 环境
|
||||||
|
> 以下命令需要你打开SSH进入到项目目录进行执行
|
||||||
|
1. 停止Xboard
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
2. 清空数据库
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan db:wipe
|
||||||
|
```
|
||||||
|
3. 执行迁移命令
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan migratefromv2b 1.7.4
|
||||||
|
```
|
||||||
|
## aapanel 环境
|
||||||
|
1. 清空数据库
|
||||||
|
```
|
||||||
|
php artisan db:wipe
|
||||||
|
```
|
||||||
|
2. 执行迁移命令
|
||||||
```
|
```
|
||||||
php artisan migratefromv2b 1.7.4
|
php artisan migratefromv2b 1.7.4
|
||||||
```
|
```
|
||||||
|
|
||||||
#### docker部署
|
> 上述迁移完成之后你需要进行 配置文件迁移
|
||||||
> 如果你是使用的docker 部署,清执行以下命令
|
## config/v2board.php 配置文件迁移 [点击查看步骤](./config迁移指南.md)
|
||||||
```
|
> xboard将配置储存到数据库, 不再使用file进行储存,你需要对配置文件进行迁移。
|
||||||
docker compose down
|
|
||||||
docker compose run -it --rm xboard php artisan migratefromv2b 1.7.4
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
@ -11,17 +11,40 @@
|
|||||||
- 删除 `ignore_client_bandwidth` 字段
|
- 删除 `ignore_client_bandwidth` 字段
|
||||||
- 删除 `obfs_type` 字段
|
- 删除 `obfs_type` 字段
|
||||||
|
|
||||||
### 迁移命令
|
## 迁移之前
|
||||||
#### 手动部署(aapanel)
|
迁移之前你需要执行正常安装步骤(记得不可选择Sqlite)
|
||||||
> 如果你是手动(aapanel)部署的,执行以下命令
|
> sqlite迁移请自行学习相关知识
|
||||||
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
|
- [aapanel 部署](./docs/)
|
||||||
|
|
||||||
|
## 开始迁移
|
||||||
|
> 针对docker与非docker用户提供不同的迁移步骤,你根据你的安装环境选择其一即可。
|
||||||
|
|
||||||
|
### docker 环境
|
||||||
|
> 以下命令需要你打开SSH进入到项目目录进行执行
|
||||||
|
1. 停止Xboard
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
2. 清空数据库
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan db:wipe
|
||||||
|
```
|
||||||
|
3. 执行迁移命令
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan migratefromv2b dev231027
|
||||||
|
```
|
||||||
|
## aapanel 环境
|
||||||
|
1. 清空数据库
|
||||||
|
```
|
||||||
|
php artisan db:wipe
|
||||||
|
```
|
||||||
|
2. 执行迁移命令
|
||||||
```
|
```
|
||||||
php artisan migratefromv2b dev231027
|
php artisan migratefromv2b dev231027
|
||||||
```
|
```
|
||||||
|
|
||||||
#### docker部署
|
> 上述迁移完成之后你需要进行 配置文件迁移
|
||||||
> 如果你是使用的docker 部署,清执行以下命令
|
## config/v2board.php 配置文件迁移 [点击查看步骤](./config迁移指南.md)
|
||||||
```
|
> xboard将配置储存到数据库, 不再使用file进行储存,你需要对配置文件进行迁移。
|
||||||
docker compose down
|
|
||||||
docker compose run -it --rm xboard php artisan migratefromv2b dev231027
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
@ -17,13 +17,40 @@
|
|||||||
- v2_user
|
- v2_user
|
||||||
- 删除字段 `device_limit`
|
- 删除字段 `device_limit`
|
||||||
|
|
||||||
### 迁移命令
|
## 迁移之前
|
||||||
|
迁移之前你需要执行正常安装步骤(记得不可选择Sqlite)
|
||||||
|
> sqlite迁移请自行学习相关知识
|
||||||
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
|
- [aapanel 部署](./docs/)
|
||||||
|
|
||||||
|
## 开始迁移
|
||||||
|
> 针对docker与非docker用户提供不同的迁移步骤,你根据你的安装环境选择其一即可。
|
||||||
|
|
||||||
|
### docker 环境
|
||||||
|
> 以下命令需要你打开SSH进入到项目目录进行执行
|
||||||
|
1. 停止Xboard
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
2. 清空数据库
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan db:wipe
|
||||||
|
```
|
||||||
|
3. 执行迁移命令
|
||||||
|
```
|
||||||
|
docker compose run -it --rm xboard php artisan migratefromv2b wyx2685
|
||||||
|
```
|
||||||
|
## aapanel 环境
|
||||||
|
1. 清空数据库
|
||||||
|
```
|
||||||
|
php artisan db:wipe
|
||||||
|
```
|
||||||
|
2. 执行迁移命令
|
||||||
```
|
```
|
||||||
php artisan migratefromv2b wyx2685
|
php artisan migratefromv2b wyx2685
|
||||||
```
|
```
|
||||||
>如果你是docker-compose 部署
|
|
||||||
```
|
> 上述迁移完成之后你需要进行 配置文件迁移
|
||||||
docker compose down
|
## config/v2board.php 配置文件迁移 [点击查看步骤](./config迁移指南.md)
|
||||||
docker compose run -it --rm xboard php artisan migratefromv2b wyx2685
|
> xboard将配置储存到数据库, 不再使用file进行储存,你需要对配置文件进行迁移。
|
||||||
docker compose up -d
|
|
||||||
```
|
|
204
readme.md
204
readme.md
@ -32,82 +32,23 @@ TRC20: TLypStEWsVrj6Wz9mCxbXffqgt5yz3Y4XB
|
|||||||
- Redis
|
- Redis
|
||||||
- Laravel
|
- Laravel
|
||||||
|
|
||||||
## 性能评测 [点击查看](./docs/性能对比.md)
|
## 性能对比 [查看详情](./docs/性能对比.md)
|
||||||
|
> xboard 无论前端还是后端性能都有巨大的提升
|
||||||
|
|
||||||
|
|场景 | php-fpm(传统) | php-fpm(传统开启opcache) | laravels | webman(docker)|
|
||||||
|
|---- | ---- |---- |----| ---|
|
||||||
|
|首页 | 6请求/秒 | 157请求/秒 | 477请求/秒 | 803请求/秒 |
|
||||||
|
|用户订阅 | 6请求/秒 | 196请求/秒 | 586请求/秒 | 1064请求/秒 |
|
||||||
|
|用户首页延迟| 308ms | 110ms | 101ms | 98ms |
|
||||||
|
|
||||||
## 页面展示
|
## 页面展示
|
||||||
![示例图片](./docs/images/dashboard.png)
|
![示例图片](./docs/images/dashboard.png)
|
||||||
|
|
||||||
## 安装 / 更新 / 回滚
|
## 安装 / 更新 / 回滚
|
||||||
> 这里将给你介绍不同方式的 安装、更新、回滚步骤
|
你可以点击查看下列方式的**安装、更新**步骤
|
||||||
### 安装前准备
|
- [Docker Compose 纯命令行快速部署](./docs/docker-compose安装指南.md)
|
||||||
- 安装前你需要自行安装好Mysql数据库(用户量小的可以忽略,使用Sqlite)
|
- [aapanel + Docker Compose](./docs/aapanel+docker安装指南.md)
|
||||||
- 安装前你需要自行安装好redis <span style="color:red">(必须)</span>
|
- [aapanel 部署](./docs/)
|
||||||
### Docker Compose 方式(推荐)
|
|
||||||
#### **安装部署**
|
|
||||||
1. 安装docker
|
|
||||||
```
|
|
||||||
curl -sSL https://get.docker.com | bash
|
|
||||||
systemctl enable docker
|
|
||||||
systemctl start docker
|
|
||||||
```
|
|
||||||
2. 获取Docker compose 文件
|
|
||||||
```
|
|
||||||
git clone -b docker-compose --depth 1 https://github.com/cedar2025/Xboard
|
|
||||||
cd Xboard
|
|
||||||
```
|
|
||||||
3. 执行数据库安装命令
|
|
||||||
```
|
|
||||||
docker compose run -it --rm xboard php artisan xboard:install
|
|
||||||
```
|
|
||||||
> 执行这条命令之后,会返回你的后台地址和管理员账号密码(你需要记录下来)
|
|
||||||
> 你需要执行下面的 ‘**启动xborad**’ 之后才能访问后台
|
|
||||||
|
|
||||||
4. 启动xboard
|
|
||||||
```
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
> 安装完成之后即可访问你的站点
|
|
||||||
5. 配置nginx代理
|
|
||||||
> 启动之后网站端口为7001, 你可以配置nginx分流使用80端口
|
|
||||||
```
|
|
||||||
location ~ .* {
|
|
||||||
proxy_pass http://127.0.0.1:7001;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **更新**
|
|
||||||
1、 修改版本
|
|
||||||
```
|
|
||||||
cd Xboard
|
|
||||||
vi docker-compose.yaml
|
|
||||||
```
|
|
||||||
> 修改docker-compose.yaml 当中image后面的版本号为你需要的版本
|
|
||||||
|
|
||||||
2、 更新数据库(可以执行多次都是安全的)
|
|
||||||
```
|
|
||||||
docker compose down
|
|
||||||
docker compose run -it --rm xboard php artisan xboard:update
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
> 即可更新成功
|
|
||||||
|
|
||||||
### **回滚**
|
|
||||||
> 需要回滚旧的版本时
|
|
||||||
1、回滚数据库(不可回滚多次,每一次指定都会回滚到上一个版本)
|
|
||||||
```
|
|
||||||
docker compose down
|
|
||||||
docker compose run -it --rm xboard php artisan xboard:rollback
|
|
||||||
```
|
|
||||||
2、回退版本
|
|
||||||
```
|
|
||||||
vi docker-compose.yaml
|
|
||||||
```
|
|
||||||
> 修改docker-compose.yaml 当中image后面的版本号为更新前的版本号
|
|
||||||
3、启动
|
|
||||||
```
|
|
||||||
dockcer compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### 从其他版本迁移
|
### 从其他版本迁移
|
||||||
#### 数据库迁移
|
#### 数据库迁移
|
||||||
1. 先导入原的数据库。(<span style="color:red;">不要走安装步骤</span>)
|
1. 先导入原的数据库。(<span style="color:red;">不要走安装步骤</span>)
|
||||||
@ -118,124 +59,3 @@ dockcer compose up -d
|
|||||||
- v2board 1.7.3 [点击跳转迁移指南](./docs/v2b_1.7.3迁移指南.md)
|
- v2board 1.7.3 [点击跳转迁移指南](./docs/v2b_1.7.3迁移指南.md)
|
||||||
- v2board wyx2685 [点击跳转迁移指南](./docs/v2b_wyx2685迁移指南.md)
|
- v2board wyx2685 [点击跳转迁移指南](./docs/v2b_wyx2685迁移指南.md)
|
||||||
|
|
||||||
#### config/v2board.php 迁移
|
|
||||||
> xboard将配置储存到数据库了, 不再使用file进行储存,你需要对配置文件进行迁移。
|
|
||||||
#### docker-compose 环境
|
|
||||||
1. 在xboard 目录下创建 config文件夹
|
|
||||||
2. 复制旧项目的 v2board.php 到config目录
|
|
||||||
3. 修改docker-compose.yaml 取消下面代码的注释(删除 "#")
|
|
||||||
```
|
|
||||||
# - ./config/v2board.php:/www/config/v2board.php
|
|
||||||
```
|
|
||||||
4. 执行下面的命令即可完成迁移
|
|
||||||
```
|
|
||||||
docker compose down
|
|
||||||
docker compose run -it --rm php artisan migrateFromV2b config
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
#### aapanel 环境
|
|
||||||
1. 将旧的 ```config/v2board.php``` 文件复制到 xboard的 ```config/v2board.php``` 下
|
|
||||||
2. 执行下面的命令,即可完成迁移
|
|
||||||
```
|
|
||||||
php artisan migrateFromV2b config
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 宝塔方式(aaPanel) (不推荐,太麻烦了)
|
|
||||||
1. 安装aaPanel
|
|
||||||
|
|
||||||
如果是Centos系统
|
|
||||||
```
|
|
||||||
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel
|
|
||||||
```
|
|
||||||
如果是Ubuntu/Deepin系统
|
|
||||||
```
|
|
||||||
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel
|
|
||||||
```
|
|
||||||
如果是Debian 系统
|
|
||||||
```
|
|
||||||
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel
|
|
||||||
```
|
|
||||||
|
|
||||||
安装完成后我们登陆 aaPanel 进行环境的安装。
|
|
||||||
2. 选择使用LNMP的环境安装方式勾选如下信息
|
|
||||||
☑️ Nginx 任意版本
|
|
||||||
☑️ MySQL 5.7
|
|
||||||
☑️ PHP 8.1
|
|
||||||
选择 Fast 快速编译后进行安装。
|
|
||||||
|
|
||||||
3. 安装扩展
|
|
||||||
> aaPanel 面板 > App Store > 找到PHP 8.1点击Setting > Install extentions选择以下扩展进行安装
|
|
||||||
- redis
|
|
||||||
- fileinfo
|
|
||||||
- swoole4
|
|
||||||
- readline
|
|
||||||
- event
|
|
||||||
|
|
||||||
4. 解除被禁止函数
|
|
||||||
> aaPanel 面板 > App Store > 找到PHP 7.4点击Setting > Disabled functions 将以下函数从列表中删除
|
|
||||||
- putenv
|
|
||||||
- proc_open
|
|
||||||
- pcntl_alarm
|
|
||||||
- pcntl_signal
|
|
||||||
|
|
||||||
5. 添加站点
|
|
||||||
>aaPanel 面板 > Website > Add site。
|
|
||||||
>>在 Domain 填入你指向服务器的域名
|
|
||||||
>>在 Database 选择MySQL
|
|
||||||
>>在 PHP Verison 选择PHP-81
|
|
||||||
|
|
||||||
6. 安装 Xborad
|
|
||||||
>通过SSH登录到服务器后访问站点路径如:/www/wwwroot/你的站点域名。
|
|
||||||
>以下命令都需要在站点目录进行执行。
|
|
||||||
```
|
|
||||||
# 删除目录下文件
|
|
||||||
chattr -i .user.ini
|
|
||||||
rm -rf .htaccess 404.html index.html .user.ini
|
|
||||||
```
|
|
||||||
> 执行命令从 Github 克隆到当前目录。
|
|
||||||
```
|
|
||||||
git clone https://github.com/cedar2025/Xboard.git ./
|
|
||||||
```
|
|
||||||
> 执行命令安装依赖包以及V2board
|
|
||||||
```
|
|
||||||
sh init.sh
|
|
||||||
```
|
|
||||||
> 根据提示完成安装
|
|
||||||
7. 配置站点目录及伪静态
|
|
||||||
> 添加完成后编辑添加的站点 > Site directory > Running directory 选择 /public 保存。
|
|
||||||
> 添加完成后编辑添加的站点 > URL rewrite 填入伪静态信息。
|
|
||||||
```
|
|
||||||
location /downloads {
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ /index.php$is_args$query_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ .*\.(js|css)?$
|
|
||||||
{
|
|
||||||
expires 1h;
|
|
||||||
error_log off;
|
|
||||||
access_log /dev/null;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
8. 配置守护进程
|
|
||||||
>V2board的系统强依赖队列服务,正常使用V2Board必须启动队列服务。下面以aaPanel中supervisor服务来守护队列服务作为演示。
|
|
||||||
1. aaPanel 面板 > App Store > Tools
|
|
||||||
2. 找到Supervisor进行安装,安装完成后点击设置 > Add Daemon按照如下填写
|
|
||||||
- 在 Name 填写 Xboard
|
|
||||||
- 在 Run User 选择 www
|
|
||||||
- 在 Run Dir 选择 站点目录 在 Start Command 填写 php artisan horizon 在 Processes 填写 1
|
|
||||||
|
|
||||||
>填写后点击Confirm添加即可运行。
|
|
||||||
|
|
||||||
9. 配置定时任务#
|
|
||||||
aaPanel 面板 > Cron。
|
|
||||||
- 在 Type of Task 选择 Shell Script
|
|
||||||
- 在 Name of Task 填写 v2board
|
|
||||||
- 在 Period 选择 N Minutes 1 Minute
|
|
||||||
- 在 Script content 填写 php /www/wwwroot/路径/artisan schedule:run
|
|
||||||
|
|
||||||
根据上述信息添加每1分钟执行一次的定时任务。
|
|
||||||
|
Loading…
Reference in New Issue
Block a user