点击关注我的TG群组/微信公众号以获取及时更新提醒

MENU

翼龙游戏面板 Pterodactyl Panel 搭建教程 - 前端

2019 年 12 月 01 日 • 阅读: 149 • 技术,教程阅读设置

搭建翼龙时一开始查的是中文教程,发现都是旧版本的,还全是坑,故在解决各种问题后自己写一篇
前后端分两篇写,否则太长了

翼龙面板Pterodactyl官网:https://pterodactyl.io
参考文章:Laravel 的 Nginx 重写规则

介绍

翼龙面板是一个开源的,用于游戏服务器管理的程序,可以方便地在网页界面中创建Minecraft,起源引擎游戏和Teamspeak3服务器。它使用前后端程序,因此可以创建多后端节点,对游戏服务器和服务器节点进行统一管理。对游戏配置文件的自定义支持允许我们自由地配置不同需求的游戏服务器。

环境要求

系统

  • Ubuntu: 支持16.04和18.04版本, 14.04版本也可以,但队列任务执行方法不一样注意自行采坑
  • Centos:支持Centos7,完全不支持Centos6
  • Debian: 支持Debian9,在Debian8下需要升级包括docker在内的一些程序为最新版

环境依赖

  • PHP 7.2或更高并包含以下拓展
  • cli, openssl,gd,mysql,PDO,mbstring,tokenizer,bcmath,xmldom,curl,zip,如果使用nginx则需要fpm
  • Mysql 5.7或者 MariaDB 10.1.3或更高版本
  • Redis
  • curl,tar,unzip,git,composer

环境搭建

  • 首先是创造前端程序需要的环境,这里以OneinStack一键包为例,使用nginx+PHP+Mysql为例。你可以选择传统的交互式界面安装程序,也可以使用官方提供的自动安装脚本,如果后者可以参考如下代码和图。

OneinStack

wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 7 --phpcache_option 1 --php_extensions ioncube,imagick,fileinfo,redis --phpmyadmin  --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --redis  --reboot 
  • 由于需要使用composer所以也可以直接用OneinStack中的拓展包来安装
cd oneinstack
./addons.sh

#######################################################################
#       OneinStack for CentOS/RedHat 6+ Debian 8+ and Ubuntu 14+      #
#                    Install/Uninstall Extensions                     #
#       For more information please visit https://oneinstack.com      #
#######################################################################

What Are You Doing?
        1. Install/Uninstall PHP Composer
        2. Install/Uninstall fail2ban
        3. Install/Uninstall ngx_lua_waf
        4. Install/Uninstall Python3.6
        q. Exit
Please input the correct option: 1

Please select an action:
        1. install
        2. uninstall
Please input a number:(Default 1 press Enter) 1
  • 安装prestissimo。这是一个composer插件,支持并行下载,如需深度配置请查看Github
composer global require hirak/prestissimo
  • 修改PHP配置文件
vi /usr/local/php/etc/php.ini

找到disable_function这一行,删除上文所说的需要的拓展(当然你全删了也可以),随后重启PHP

service php-fpm restart
  • 创建vhost,以下假定目录为/data/wwwroot/gaming,由于翼龙面板使用了Laravel,所以我们需要在nginx配置文件中加入以下Laravel伪静态文件,否则之后会出404错误,也可以顺带设置一下自己的证书。
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
# 去除末尾的斜杠,SEO更加友好
if (!-d $request_filename)
{
    rewrite ^/(.+)/$ /$1 permanent;
}
# 去除index action
if ($request_uri ~* index/?$)
{
    rewrite ^/(.*)/index/?$ /$1 permanent;
}

# 根据laravel规则进行url重写
if (!-e $request_filename)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}

程序安装

下载

cd /data/wwwroot/gaming
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/download/v0.7.15/panel.tar.gz
tar --strip-components=1 -xzvf panel.tar.gz
rm -rf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
chown www:www -R /data/wwwroot/gaming
  • 这个时候,你已经下载好最新的翼龙面板程序。在这个时候请先使用自己的工具为程序手动创建一个Mysql数据库,因为很快就需要使用到。

安装

  • 创建默认的环境配置文件,安装核心依赖,生成专有加密密钥
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force   ## 如果不是首次安装程序,请忽略这一行

安全提示

请备份.env文件中的APP_KEY,它是程序的数据加密密钥,如果密钥丢失则无法解密数据库,这是网站恢复或迁移时所必须的。

错误

  • 如果出现这样的错误,请仔细阅读红色区域中的错误信息,查看是哪一个模块不存在,然后去PHP配置文件中将其从禁用列表中删除

设定环境

程序设置

php artisan p:environment:setup

所需信息如下:

  • Egg Author Email: 填写自己的邮箱,如果创建了自定义游戏服务器配置文件时,这个邮箱会作为作者邮箱使用
  • Application URL: 网站域名
  • Application Timezone: 程序时区,建议和所用服务器的时区统一
  • Cache Driver: Redis(程序推荐的,也是我们一开始就准备好的)
  • Session Driver: Redis
  • Queue Driver: Redis
  • Enable UI based setting editor: Yes, 基于UI的编辑器
  • Redis Host: 留空直接回车
  • Redis Password: 留空直接回车(OneinStack的设置,如果没有使用请根据自己情况修改)
  • Redis Port: 留空直接回车

数据库设置

php artisan p:environment:database

所需信息如下:

  • Database Host: 数据库地址,默认本地
  • Database Port: 数据库端口,默认3306
  • Database Name: 数据库名,让你们提前创建的
  • Databse Username: 数据库用户名,自己设置
  • Database Password: 数据库用户密码
  • 完成后开始导入默认数据
php artisan migrate --seed

邮件设置

  • 程序发邮件的设定,建议提前准备好smtp配置文件,一共就几个很简单的我就懒得写了。主要原因是这一步是可以跳过的,等网站创建好了后可以直接去网页后台设置,效果一样,自行决定。
php artisan p:environment:mail

添加用户

  • 为程序添加第一个账户
php artisan p:user:make

所需信息如下:

  • Is this user an administrator: Yes,设为管理员
  • Email Address: 用户邮箱
  • User Name: 用户名,和前一条邮箱都可以用作登陆
  • First Name, last name: 自己设
  • Password: 密码,需要至少8位并且包含大小写和数字

停用ReCAPTCHA

  • ReCAPTCHA被用在了网页登陆页面,如果需要考虑网络条件差的人使用,则可以考虑停用ReCAPTCHA
  • .env文件中加入RECAPTCHA_ENABLED=false后刷新缓存即可
php artisan cache:clear
php artisan view:clear

设置网站文件权限

  • 刚刚的操作又创建和修改了很多文件,所以重新设置一下权限
chown www:www -R /data/wwwroot/gaming
chmod -R 755 /data/wwwroot/gaming

创建任务队列

Crontab

  • 创建队列任务,保证程序可以保证邮件操作之类的任务
crontab -e

加入以下内容

  * * * * php /data/wwwroot/gaming schedule:run >> /dev/null 2>&1

Queue Worker

  • /etc/systemd/system中创建一个名为pteroq.service的文件,内容如下:
# Pterodactyl Queue Worker File
# ----------------------------------

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and group.
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /data/wwwroot/gaming queue:work --queue=high,standard,low --sleep=3 --tries=3

[Install]
WantedBy=multi-user.target
  • 如果你使用的是Centos,请把After=redis-server.service修改为After=redis.service以保证redis在队列任务开始前工作
  • 如果你使用的不是redis,请删除After=这一行全部内容
  • 最后我们需要设置redis开机启动
systemctl enable --now redis-server
systemctl enable --now pteroq.service

收尾工作

  • 进入nginx的网站配置文件,修改网站目录为/data/wwwroot/gaming/public
  • 重启系统(或者你一个个重启crontab, nginx, php和那些之前修改过配置文件的程序)
  • 这个时候,你的前端程序应该已经可以正常工作了
最后编辑于: 2019 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码