快速部署 - [OneinStack]

使用OneinStack 搭建环境,并使用简易化脚本快速部署本项目

本教程需要面板程序版本>2.7.0方可使用! 请使用root账户进行操作!

一丶搭建环境

环境部署

apt update && apt install wget curl git vim -y

部署OneinStack & 网页环境

如果害怕遇到网络中断,SSH断连等问题,可以自行谷歌nohup/screen的用法

前往 OneinStack官网 选择合适的软件,再复制安装命令到SSH上执行

  • 环境安装要求,请参考 => 面板要求

  • Tips: 软件版本在面板支持的情况下,尽可能挑选最新稳定版本用于生产环境;

  • MySQL 数据库可以不安装在和面板同一机器上,可以选择云服务商的数据库进行托管或者在其他服务器安装进行分离使用;

可参考选项
# 本案例的数据库密码:ProxyPanel2023

wget -c http://mirrors.oneinstack.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 12 --phpcache_option 1 --php_extensions fileinfo,redis --phpmyadmin  --db_option 2 --dbinstallmethod 1 --dbrootpwd ProxyPanel2023 --redis  --reboot 
搭建完成

二丶网站搭建

SSH连接到VPS后输入下方命令,开始创建网站。

/root/oneinstack/vhost.sh
  1. 三个选项分别是 1. 只使用HTTP, 2. 使用自己的证书,以及 3. 申请Let's Encrypt免费证书

  2. 输入网站域名

  3. 输入网站目录,直接回车网站目录默认位于/data/wwwroot/网站域名

  4. 是否需要添加更多域名

  5. 是否需要HTTP重定向到HTTPS

  6. 输入证书钥匙长度,默认2048

  7. 输入邮箱申请证书

自动申请完证书后,还有几步

  1. 是否需要盗链保护;

  2. 是否需要添加伪静态规则; 选择 laravel

  3. 添加哪种伪静态规则;

  4. 是否允许记录访问日志;

PHP 删除禁用函数

sed -i '/disable_functions/s/putenv,//g; /disable_functions/s/pcntl_alarm,//g; /disable_functions/s/pcntl_signal,//g; /disable_functions/s/symlink,//g; /disable_functions/s/proc_[^,]*,//g' /usr/local/php/etc/php.ini && service php-fpm restart

修改网站运行目录

# 编辑 网站Nginx的配置文件
# 使用前请将{网站域名}替换为实际目录,不知道的可以 ls /usr/local/nginx/conf/vhost/ 看看目录下的文件都有啥

sudo sed -i 's/\(root .*\);/\1\/public;/g' /usr/local/nginx/conf/vhost/网站域名.conf && systemctl restart nginx
编辑网站Nignx配置文件

三丶创建数据库

登录数据库

首先使用以下命令登录mysql,并输入数据库密码

mysql -u root -p

创建数据库

# 创建了名为ProxyPanel的数据库
create database ProxyPanel default character set utf8mb4 collate utf8mb4_unicode_ci;

# 查看数据库列表
show databases;

创建数据库用户(可选)

如果想偷懒,可跳过创建数据库用户,直接使用root用户

创建数据库用户

# 授予ProxyPanelUser用户在ProxyPanel数据库上的所有权限,密码为ProxyPanelPwd
grant  all  privileges  on  ProxyPanel.*  to  ProxyPanelUser@'localhost' identified by 'ProxyPanelPwd';

最小权限原则,所以我们推荐方法1。其中的数据库名,用户名,密码请酌情修改。

# 完成后,刷新权限
flush privileges;
// 退出数据库
quit

四丶安装面板

cd /data/wwwroot/网站域名
# 例:cd /data/wwwroot/proxypanel.ddo.jp 不清楚可以用 ls /data/wwwroot/ 获取目录信息

git clone https://github.com/ProxyPanel/ProxyPanel.git tmp && cp -r tmp/. . && rm -rf tmp/

再运行以下代码安装面板

sh install.sh

设置广播 Reverb

【广播】 应用于内容的实时同步,目前用于用户支付结果查询,管理节点页面节点连通性,地理位置更新,重启结果等,需要内容实时在页面显示的场景。

大致步骤:

  1. 编辑目录下 .env 文件中 REVERB_ 开头参数;

  2. 清理缓存 php artisan optimize:clear && php artisan optimize

  3. 重新编译前端js和重启reverb,npm run build && supervisorctl restart reverb

  4. 添加/修改网站nginx配置文件

    server {
        ...
    
        location / {
            proxy_http_version 1.1;
            proxy_set_header Host $http_host;
            proxy_set_header Scheme $scheme;
            proxy_set_header SERVER_PORT $server_port;
            proxy_set_header REMOTE_ADDR $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
    
            proxy_pass http://0.0.0.0:8080;
        }
    
        ...
    }

通用修改/存在参数

env参数

BROADCAST_DRIVER

reverb

REVERB_APP_ID

随机数字id

REVERB_APP_KEY

随机字符串

REVERB_APP_SECRET

随机字符串

REVERB_SCHEME

可选,值为http/https

方案A 广播使用与面板同子域名

通知和面板都是使用:proxypanel.ddo.jp;← 域名是为了方便理解使用的案例

  • 配置env,REVERB_PATH, 用于分流正常访问和通知访问;

作用
备注

REVERB_PATH

Reverb 服务器期望接收连接的 URL 路径。在您的配置中为 REVERB_PATH=,表示没有路径前缀。

例如:/eventcastsing

REVERB_HOST

proxypanel.ddo.jp

REVERB_APP_ID=510141
REVERB_APP_KEY=ti12342lbcrgjzazvua6
REVERB_APP_SECRET=kvjczliy123hrylnh56z
REVERB_SCHEME=https
REVERB_HOST=proxypanel.ddo.jp
REVERB_PATH=/eventcastsing

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
VITE_REVERB_PATH="${REVERB_PATH}"
REVERB_SERVER_PATH="${REVERB_PATH}"

修改nginx配置中第4行需要按照REVERB_PATH值修改

server {
    ...

    location /eventcastsing/ {
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header SERVER_PORT $server_port;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        proxy_pass http://0.0.0.0:8080;
    }

    ...
}

方案B 广播使用与面板使用不同子域名

  • 面板使用:proxypanel.ddo.jp;← 域名是为了方便理解使用的案例

    • 通知使用:b.ddo.jp 或者 proxypanel.work.gd

  • 配置env,REVERB_HOST;

作用
备注

REVERB_HOST

proxypanel.work.gd

REVERB_APP_ID=510141
REVERB_APP_KEY=ti12342lbcrgjzazvua6
REVERB_APP_SECRET=kvjczliy123hrylnh56z
REVERB_SCHEME=https
REVERB_HOST=proxypanel.work.gd
REVERB_PATH=

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
VITE_REVERB_PATH="${REVERB_PATH}"
REVERB_SERVER_PATH="${REVERB_PATH}"

五丶设置&优化

每次修改 .env 后,请运行以下代码,重新预加载必要文件 SSH:在网站根目录下,运行以下代码;Laravel 自带缓存常用内容来优化面板运行。

php artisan optimize

在面板文件中,编辑 .env

设置邮件

MAIL_DRIVER=smtp #或使用 mailgun
# SMTP设置
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465 #SMTP端口
MAIL_USERNAME=admin@proxypanel.ml #使用的邮箱地址
MAIL_PASSWORD=password #SMTP授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=admin@proxypanel.ml #用户看到的发件人邮箱地址
MAIL_FROM_NAME=ProxyPanel #发件人名称

# Mailgun设置
MAILGUN_DOMAIN=
MAILGUN_SECRET=

PHP

# 编辑php.ini文件
nano /usr/local/php/etc/php.ini

将 memory_limit 适当的提高, 有助于提高网站运行稳定性

# 编辑完成,重启nginx
service php-fpm restart

系统

添加SWAP虚拟内存

VPS服务器内存过小,会导致进程被杀掉;适当添加Swap虚拟内存了,可缓解这个现象。

# 查看实际内存
free -h
# 一键添加SWAP脚本
wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh

六丶更新&升级

Master版

参考 升级指南

Release版

下载最新的压缩包,重新安装

最后更新于

这有帮助吗?