Blessing Skin是什么

你是否因在离线模式下运行的Minecraft服务器中丢失自定义皮肤而感到困惑?现在,借助Blessing Skin的帮助,你可以轻松地找回它们!
Blessing Skin是一个网络应用程序,在这里你可以上传、管理和分享你的自定义皮肤和披风!与修改资源包不同,游戏中的每个人都可以看到彼此的不同皮肤(当然,他们也应在同一个网站上注册)。
Blessing Skin是一个用PHP编写的开源项目,这意味着你可以自由地在自己的网络服务器上部署它!

简而言之,它是一个适用于 Minecraft服务器 的,可让用户上传、管理和分享他们的 Minecraft 皮肤和披风的 Web 应用程序
配合某些插件可以做到 让玩家仅可使用皮肤站账号进入服务器

Github地址:bs-community/blessing-skin-server

官方文档地址:Blessing Skin 手册 | Blessing Skin 用户手册

开始安装

我的环境是一个 1H512M 的 Ubuntu 22.04,磁盘存储仅有5GB
但是这样的环境也能搭成功,可见Blessing Skin之轻量
其实是没钱买更高配的机子,大家别学我

需要准备的东西:

  • 一台能够搭建网站的服务器
  • 一个自己的域名
  • 一台电脑
  • 一个脑子

系统更新

先换源,如果你的机子是海外的可以不用换

sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/http:/https:/g' /etc/apt/sources.list

更换为清华源,其中 中间那行是更换 安全更新 的源。由于镜像站更新有时不及时,使用镜像源的安全更新源可能会导致你无法及时获取到最新的安全更新,介意的可以不换

然后一套连招更新系统

# 更新软件源 && 更新软件包 && 删除旧软件包
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

安装一些小工具

sudo apt install vim git zip -y

安装PHP及其相关拓展

sudo apt install apache2 php php-gd php-mbstring php-xml php-zip php-pgsql -y

验证php版本:

php -v

下载 blessing-skin-server

记得到 GitHub Releases 页面确认最新版的下载链接

wget https://github.com/bs-community/blessing-skin-server/releases/download/6.0.2/blessing-skin-server-6.0.2.zip

下不动的可以在前面加个镜像:

wget https://mirror.ghproxy.com/github.com/bs-community/blessing-skin-server/releases/download/6.0.2/blessing-skin-server-6.0.2.zip

解压缩

sudo mkdir /var/www/blessing-skin
sudo unzip blessing-skin-server-6.0.2.zip -d /var/www/blessing-skin/

修改文件权限

sudo chown -R www-data:www-data /var/www/blessing-skin

生成密钥

cd /var/www/blessing-skin/
sudo cp .env.example .env
sudo php artisan key:generate

配置 Apache

编写配置文件

如果你希望给你的皮肤站启用 HTTPS,那么请跳到 配置SSL证书(HTTPS)

sudo vim /etc/apache2/sites-available/blessing-skin.conf

在编辑器中粘贴如下内容:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/blessing-skin/public

  <Directory /var/www/blessing-skin/public>
    AllowOverride All
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

配置SSL证书(HTTPS)(推荐)

这里我们使用 Let’s Encrypt 来创建一个免费证书

  1. 安装 Python

    apt install python3 pip
  2. pip换源

    pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
  3. 安装必要依赖

    pip install setuptools-rust
  4. 安装证书生成工具

    pip install certbot
  5. 设置域名解析
    若想使用Let's Encrypt签发证书,就必须将涉及的域名先解析到服务器才行。
    例如我们将预申请SSL证书域名 和 服务器IP地址的信息整理如下:

    预申请SSL证书域名服务器IP地址
    yourdomain.com114.51.41.9

在申请证书之前,须将该域名yourdomain.com的A记录解析到114.51.41.9
在申请SSL证书的时候,我们需要在114.51.41.9服务器上操作certbot才行。

  1. 生成证书
    先停止Apache服务(因为Apache会占用80端口)
    sudo systemctl stop apache2
    随后使用
    certbot certonly --standalone -d yourdomain.com
    上述命令的意思是,启动独立的web服务进行身份验证,为yourdomain.com申请/续订SSL证书,但是不需要自动安装。

在此过程中,会弹出很多的选项,让我们输入,大概流程为:

  • 会让我们输入邮件地址,将用于续订和安全通知。
  • 会让我们确定是否向ACME server注册。
  • 是否分享你的邮件让EFF共享。
    如果申请成功后,会在/etc/letsencrypt/live/下,以域名为目录,里面存储的证书信息,并且会告知过期时间是多久。

以我的为例,我的域名是 skin.mc.qiusyan.top,所以它生成的证书会在 /etc/letsencrypt/live/skin.mc.qiusyan.top 目录下

它会自动生成两个文件:privkey.pemfullchain.pem

执行以下指令:

# 创建证书文件夹
mkdir /var/www/blessing-skin/ssl

# 将证书文件复制进去,自行修改对应目录
cp /etc/letsencrypt/live/skin.mc.qiusyan.top/fullchain.pem /var/www/blessing-skin/ssl/
cp /etc/letsencrypt/live/skin.mc.qiusyan.top/privkey.pem /var/www/blessing-skin/ssl/

随后执行如下操作:

  1. 修改文件权限

    sudo chown www-data:www-data -R /var/www/blessing-skin/ssl
  2. 启用 Apache2 的 SSL 模块

    sudo a2enmod ssl
  3. 编辑 /etc/apache2/sites-available/blessing-skin.conf 配置文件
    注意:第十二行处的 ServerName后的域名需要修改为你自己的皮肤站域名

    <IfModule mod_ssl.c>
      <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
      </VirtualHost>
      <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/blessing-skin/public
        
        # 此处修改为你自己的皮肤站域名
        ServerName your_domain.com
        SSLCertificateFile /var/www/blessing-skin/ssl/fullchain.pem
        SSLCertificateKeyFile /var/www/blessing-skin/ssl/privkey.pem
    
        <Directory /var/www/blessing-skin/public>
          AllowOverride All
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
    </IfModule>
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
  4. 重启 Apache2 服务使配置生效

    sudo systemctl restart apache2.service

配置站点

# 禁用默认站点
sudo a2dissite 000-default.conf

# 启用 blessing-skin 站点
sudo a2ensite blessing-skin.conf

# 启用 rewrite 模块
sudo a2enmod rewrite

# 重新加载 Apache 服务使配置生效
sudo systemctl restart apache2.service

安装 & 配置 Postgresql

# 安装 postgresql
sudo apt install postgresql -y

# 切换到数据库用户
sudo su postgres

# 进入数据库管理工具
psql

# 设置数据库密码,牢记你的密码,后面会用到
\password

# 创建皮肤站数据库
CREATE DATABASE blessingskin;

# 退出管理工具
\q

修改 /etc/postgresql/14/main/postgresql.conf 文件第 60 行取消注释,允许本地登入数据库。

listen_addresses = 'localhost'          # what IP address(es) to listen on;

重启服务使配置生效:

sudo systemctl restart postgresql.service

安装 Redis (可选)

sudo apt install redis php-redis

配置请参考 配置文件介绍 - Redis 相关

运行安装向导

现在访问主机 IP 可以看到欢迎页面了,记得选择数据库类型为 PostgreSQL:

恭喜,你的皮肤站已经部署完成!
更多的内容就自己去探索吧~
善用官方文档与搜索引擎:Blessing Skin 手册 | Blessing Skin 用户手册

备份 & 恢复相关

咳咳,这一段其实才是我写这篇文章的初衷
写一下备份&恢复相关的步骤免得自己忘了

好的,假设你有一个已经架设好了的 Blessing Skin 皮肤站,然而现在遇到了一个问题使得你需要 备份你的数据并且日后要恢复正常运行,那么就往下看

备份数据

备份数据库

先切换到 postgres 用户并且切换到对应目录:

sudo su postgres
cd

然后使用 pg_dump 命令备份数据库:

pg_dump -U postgres blessingskin > blessingskin_backup.sql

此处指令的 blessingskin 为你要导出的数据库名称,blessingskin_backup.sql 是备份后的文件名称

导出之后可以使用 pwd 指令来查看当前目录,你的备份文件也会在这里。随后使用 Filezilla 之类的 SFTP 软件将其下载到本地即可。

备份站点文件

记得先切换回原用户

切换到你的皮肤站站点目录的上一级目录

cd /var/www

将其打包 or 压缩

  • 打包

    tar -cvf blessingskin.tar blessingskin
  • 压缩

    使用7z指令压缩需要安装 p7zip-full 软件包

    7z a -t7z -r blessingskin.7z /var/www/blessingskin

二者选其一即可。
随后将打包后的文件下载到本地就完成备份了。

如果你的服务器是像我那样的小破机子就只能用打包了,用不了7z压缩
不是都说了不要学我吗啊喂

恢复数据

你的环境应该是全新的

准备工作

# 换源
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/http:/https:/g' /etc/apt/sources.list

# 更新软件源 && 更新软件包 && 删除旧软件包
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

# 安装工具
sudo apt install vim git zip p7zip-full -y

# 安装php及其相关拓展
sudo apt install apache2 php php-gd php-mbstring php-xml php-zip php-pgsql -y

# 安装postgres
sudo apt install postgresql -y

# 切换到数据库用户
sudo su postgres

# 进入数据库管理工具
psql

# 设置数据库密码,建议和之前的密码一样,如果不记得了可以去查看皮肤站站点文件内.env文件中的DB_PASSWORD配置项
\password

# 创建皮肤站数据库,建议和之前的数据库名称一样,如果不记得了可以去查看皮肤站站点文件内.env文件中的DB_DATABASE配置项
CREATE DATABASE blessingskin;

# 退出管理工具
\q

随后进入数据库恢复工作:

记得先将你的备份文件 blessingskin_backup.sql 上传到 /var/lib/postgresql目录下

# 切换到数据库用户
sudo su postgres

# 切换到对应工作目录
cd

# 恢复备份
psql -U postgres -d blessingskin -f blessingskin_backup.sql

# blessingskin 是你想将备份文件导入的数据库的名称,blessingskin_backup.sql是你备份的文件

然后进入 /var/www 目录下,并且将你的 皮肤站站点文件备份 上传至此
解压缩至当前目录:

  • .tar 文件
    # blessingskin.tar 请自行更改为对应文件名
    tar -xvf blessingskin.tar 
  • .7z 文件
    # blessingskin.7z 请自行更改为对应文件名
    7z x blessingskin.7z -r -o/var/www/blessingskin

接下来的步骤就是配置 Apache 了,按照 配置 Apache 来就行了
配置完Apache之后,恢复工作就大功告成了!

有啥问题的可以在当前页面留言~ 💖

参考链接