V2Board 搭建教程

环境要求

这里我们推荐使用aaPanel作为环境搭建的入门首选,机器的内存最好是1G,512M是最低要求配置(Swap最小要求1G)。

本文教程是将 aaPanel 作为环境进行配置。

部署

1.配置aaPanel

你需要在 aaPanel 选择你的系统获得安装方式。这里以 Debian 9作为系统环境进行安装。

apt install curl -y && wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh

安装完成后我们登陆 aaPanel 进行环境的安装。

选择使用LNMP的环境安装方式勾选如下信息。

最低要求:

☑️ Nginx 1.17
☑️ MySQL 5.6
☑️ PHP 7.3
☑️ Redis 5.0

个人推荐:

☑️ Nginx Tengine
☑️ MySQL AliSQL
☑️ PHP 7.3
☑️ Redis 5.0

以上环境版本号请选择 Compiled 进行编译安装。

2.安装PHP组件

aaPanel 面板 > App Store > 找到PHP 7.3点击Setting > Install extentions 安装以下组件:

☑️ fileinfo
☑️ opcache
☑️ redis
☑️ imagemagick
☑️ imap
☑️ exif
☑️ intl

3.解除被禁止的函数

aaPanel 面板 > App Store > 找到PHP 7.3点击Setting > Disabled functions 将 putenv proc_open pcntl_alarm pcntl_signal从列表中删除。

4.添加站点

aaPanel 面板 > Website > Add site。

Domain:填入你指向服务器的域名
Database:MySQL utf8mb4
PHP version:PHP-73

Submit 完成创建。

完成创建后访问站点目录删除目录下除.htaccess.user.ini以外的所有文件。

5.安装V2Board

通过SSH登录到服务器后访问站点路径如:/www/wwwroot/domain.com。

以下命令都需要在站点目录进行执行。

执行命令从 Github 克隆到当前目录。

# 默认拉取 V2Board master 分支
git clone -b master https://github.com/v2board/v2board.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

执行命令更新 composer 程序。

composer self-update

执行命令进行包安装。

composer install

安装过程中报错或者无法继续安装的请分配 Swap,如何分配 Swap 请查阅[post]4[/post]

复制.env.example文件为.env。

# domain.com 请更改为站点域名且路径必须存在
cp .env.example .env

打开 .env 文件,修改数据库信息并保存。

DB_HOST=数据库地址
DB_PORT=3306
DB_DATABASE=数据库名
DB_USERNAME=数据库用户名
DB_PASSWORD=数据库密码

每次修改 .env 文件后需要执行以下命令重建缓存

php artisan config:cache

保存后请重新给予目录权限

# domain.com 请更改为站点域名且路径必须存在
chown -R www:www *
chmod -R 755 *

执行命令进行面板的安装。

php artisan v2board:install

输入管理员账号密码。

6.配置站点

编辑添加的站点 > Site directory > Running directory 选择 /public 保存,并且取消勾选Anti-XSS attack (Base directory limit)(open_basedir)。

编辑添加的站点 > 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;
}

禁止访问网站目录下以.开头的文件(可选,会造成证书签发失败,请签发完毕再添加至 URL rewrite 与以上代码共存。)

location ~ /\.
{
    deny all;
}

至此一切就绪,可以访问你的面板了。

7.配置定时任务

aaPanel 面板 > Cron。

# domain.com 请更改为站点域名且路径必须存在
Type of Task:Shell Script
Name of Task:Task Scheduling
Period:N Minutes 1 Minute
Script content:/usr/bin/php /www/wwwroot/domain.com/artisan schedule:run

根据上述信息添加每1分钟执行一次的定时任务。

7.启动队列服务

队列服务将会应用在邮件发送等场景,请务必保证队列服务在后台运行正常。

你可以使用 nohup 让其在后台运行,但是 nohup 无法保证队列服务不会退出。 使用 nohup 方式你需要在站点目录下执行如下命令:

nohup php artisan queue:work --queue=send_email,send_telegram > queue.log 2>&1 &

如果你想让队列服务长期保持稳定的在后台运作,你需要使用 Systemd 的 Buff 加持。

添加 Systemd 配置文件

#以下代码块请更改为站点域名且路径必须存在domain.com并全部一次性复制粘贴回车
cat << EOF >> /etc/systemd/system/queue.service
[Unit]
Description=Queue Service
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/run/queue.pid
ExecStart=/usr/bin/php /www/wwwroot/domain.com/artisan queue:work --queue=send_email,send_telegram
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

启动由 Systemd 守护的队列服务

#重载 Systemd 配置
systemctl daemon-reload
#设置由 Systemd 守护的队列服务开机自启动
systemctl enable queue.service
#启动由 Systemd 守护的队列服务
systemctl start queue.service

至此一切就绪,可以直接投入生产使用了。

前后分离部署教程

前后分离后用户访问的是前端页面,后端仅提供api供前端使用。
将前端html文件托管部署到空间或者服务器,亦或者OSS等支持html的存储服务。
前端分为用户端和管理端:
用户端文件更新仓库为:https://github.com/v2board/v2board-user/releases
管理端文件更新仓库为:https://github.com/v2board/v2board-admin/releases
配置并将 env.example.js 重命名为 env.js 后即完成部署。访问前端域名即可访问。

特别注意

env.js 文件下的 host: '', 应为你分离后的根域名的二级域名,并且解析到与你授权域名相同的记录值。例如你的授权域名的记录值为 1.1.1.1 你在分离后的根域名 233.com 下添加一条二级域名解析为 api.233.com记录值填写与你授权域名相同的记录值 1.1.1.1 然后分离后的根域名解析记录值填写你将前端html文件托管部署到空间或者服务器的CNAME记录值或IP地址,env.js 文件下的 host: '',则填写为 host: 'https://api.233.com',(如果你没有SSL证书请将 https 改为 http)。至此你就可以访问分离后的根域名 233.com 来登录用户端了。管理端同理。