UNIT3D:一款基于Laravel框架的全新PT站程序

2020-10-28 15:54:42 浏览数 (1)

对于这个项目或者说这个程序,我就一句话概况一下:技术用的很前卫也很新颖,但是性能稀烂,前端更稀烂。。。不过依旧很有潜力,毕竟是PT程序,要知道现在市面上没有什么像样的PT程序。。。

这里记录一下我的折腾过程。以下操作请使用CentOS7X64,并且机器内存大于2GB。

为了更方便,这里我们使用宝塔,首先安装一下宝塔:

代码语言:javascript复制
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

然后在宝塔内安装LNMP环境,注意PHP版本要7.2,MySQL必须5.7,这也就是为什么我说内存要大于2G的原因,MySQL5.7必要要内存大于1.5G才能正常工作,再加上其他的一些东西2G可能都还少了。

除此之外,你还需要在宝塔后台的“软件管理”安装Redis。

完事之后回到终端,安装Node.js:

代码语言:javascript复制
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum -y install nodejs

安装supervisord,这个待会用来管理程序的各种进程:

代码语言:javascript复制
yum -y install supervisor

先启动并设置开机启动:

代码语言:javascript复制
systemctl start supervisord
systemctl enable supervisord

回到宝塔面板内新建一个站点,并添加Nginx伪静态规则:

代码语言:javascript复制
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

接着你需要把站点的运行目录修改为public,这个很重要Laravel框架的特性。

然后打开phpMyAdmin新建一个数据库,命名为:pt。

现在回到终端内CD到你的站点目录:

代码语言:javascript复制
cd /www/wwwroot/你的站点目录

拉取项目文件并把配置文件重命名:

代码语言:javascript复制
git clone https://github.com/HDInnovations/UNIT3D.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
cp .env.example .env

安装作曲家:

代码语言:javascript复制
curl -sS https://getcomposer.org/installer | php

安装laravel-echo-server:

代码语言:javascript复制
npm install -g laravel-echo-server

然后执行如下命令开始配置:

代码语言:javascript复制
laravel-echo-server init

在这个向导内,我们先暂时按下面的操作来,待会再来修改,这个配置文件随时都可以改的:

代码语言:javascript复制
? Do you want to run this server in development mode? (y/N)
A:N
? Which port would you like to serve from? (6001)
A:回车
? Which database would you like to use to store presence channel members? (Use arrow keys)
A:选择Redis
? Enter the host of your Laravel authentication server. (http://localhost)
A:输入你的站点域名,需要加上http://
? Will you be serving on http or https? 
A:暂时选择http
? Do you want to generate a client ID/Key for HTTP API? (y/N)
A:Yes
? Do you want to setup cross domain access to the API? (y/N)
A:No

走完这个向导后,就会在你的站点目录生成出一个appid和key,复制这些内容待会需要用到。

现在回到面板中,找到“软件管理”-“PHP7.2设置”-“禁用函数”,把下面的这几个函数删除了:

代码语言:javascript复制
popen
proc_open

接着点击安装扩展,安装:fileinfo

现在回到终端内,使用作曲家安装项目所需依赖:

代码语言:javascript复制
composer install
composer require predis/predis

然后再安装node.js依赖:

代码语言:javascript复制
npm install
npm install --save-dev socket.io-client
npm run prod

全部完成之后,你需要编辑这个程序的配置文件:

代码语言:javascript复制
vi .env
vi config/api-keys.php
vi config/app.php
vi config/other.php

1.env这个配置文件内,你需要填写之前生成出来的key/你的站点域名/MySQL数据库信息/SMTP发信设置/管理员账号密码。

2.api-keys.php,如果你没有申请这些key的话,就不用配置这个文件了,这是用来自动显示电影的IMDB等信息的。

3.app.php,在这个配置文件内,你需要填写你的站点名/站点域名,其他都不需要改动。

4.other.php,在这个配置文件内,你可以根据自己的需要修改站点标题/站点主题/以及一些其他设置。

接着我们配置计划任务:

代码语言:javascript复制
crontab -e

写入:

代码语言:javascript复制
* * * * * php /www/wwwroot/你的站点目录/artisan schedule:run    /dev/null 2 &1

然后回到你的站点根目录的上级目录:

代码语言:javascript复制
cd ..

把你的站点根目录下的所有文件所有者进行一次修改,修改为宝塔面板所需的www用户:

代码语言:javascript复制
chown -R www:www 你的站点目录

接着再回到你的站点根目录:

代码语言:javascript复制
cd /www/wwwroot/你的站点目录

导入程序的数据库信息:

代码语言:javascript复制
php artisan key:generate
php artisan migrate --seed

成功之后现在就可以配置supervisord了:

代码语言:javascript复制
vi /etc/supervisord.conf

在文件的尾部写入:

代码语言:javascript复制
[program:unit3d-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /www/wwwroot/你的站点目录/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www
numprocs=2
[program:unit3d-socket-io]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/node /usr/bin/laravel-echo-server start --dir=/www/wwwroot/你的站点目录
autostart=true
autorestart=true
user=root
numprocs=1

重启supervisord并更新配置:

代码语言:javascript复制
systemctl restart supervisord
supervisorctl update

使用如下命令查看进程运行清空,如果一切正常,你应该可以看到三个进程在RUNNING:

代码语言:javascript复制
supervisorctl

打开你的站点域名应该可以看到这个程序的登录界面了:

如果无法正常访问,排查是否把防火墙关闭了(宝塔会默认启动防火墙):

代码语言:javascript复制
systemctl stop firewalld.service
systemctl disable firewalld.service

现在我们这个站点是通过HTTP访问的,如果我们要把UNIT3D放到HTTPS中运行呢?该如何配置?

之前我们通过laravel-echo-server在站点根目录下生成了一个名为laravel-echo-server.json的配置文件,现在你应该首先利用宝塔的SSL证书申请功能为你的站点域名申请一个Let’s Encrypt的SSL证书,并开启强制SSL。然后你申请的这个证书路径,应该如下:

代码语言:javascript复制
/etc/letsencrypt/live/你的域名/cert.pem
/etc/letsencrypt/live/你的域名/privkey.pem

现在编辑laravel-echo-server.json:

1.”authHost”修改你的域名为https,例如:https://www.zalou.cn

2.”sslCertPath”填写你的证书路径

3.”sslKeyPath”填写你的私钥路径

回到终端重启UNIT3D:

代码语言:javascript复制
supervisorctl reload

另外该程序使用socket.io来实现实时消息推送等功能,比如在线聊天什么的,这个会占用6001端口,众所周知PT站容易被DDCC,一般搞PT都把站放到CloudFlare下面,但是CloudFlare对WebSocket的端口支持没有6001,会导致这个程序的某些功能失效,所以我们需要修改这个程序的WebSocket端口号,下面我们把这个程序的端口修改成CloudFlare支持的8443(前提是你按照上面的要求配置了SSL)

首先你还是需要编辑laravel-echo-server.json这个配置文件,把里面的:

代码语言:javascript复制
"port": "6001"

改为

代码语言:javascript复制
"port": "8443"

接着你需要编辑这个文件的第60行:

代码语言:javascript复制
vi resources/assets/js/bootstrap.js

把里面的:

代码语言:javascript复制
host: window.location.hostname   ':6001'

改为:

代码语言:javascript复制
host: window.location.hostname   ':8443'

重载supervisord配置

代码语言:javascript复制
supervisorctl reread
supervisorctl update
supervisorctl reload

重新构建程序:

代码语言:javascript复制
npm run prod

清理缓存:

代码语言:javascript复制
php artisan clear:all

别急,你还应该按照要求配置Nginx的伪静态规则,让程序能够获取到用户的真实IP,否则Tracker服务器都是连接的CDNIP,那用户还下个J8的种子。所以你现在应该在宝塔的伪静态设置加入:

代码语言:javascript复制
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;

以上配置你应该加到location下面。现在这个UNIT3D应该就算是配置的完完全全了,不过由于作者自己都说了其实UNIT3D是不支持CloudFlare的,所以很有可能会出现一些七七八八的小问题,比如我用Deluge一开始可以连接上Tracker,但是过几秒钟后就会出现连接超时。不过这并不影响其他Peer,因为实际上是连接成功了的。

另外,此项目目前正处于急速更新状态,如果想更新自己的版本,可以使用下面的命令:

代码语言:javascript复制
php artisan git:update
php artisan up

注意:更新前,你应该仔细浏览项目主页的修订记录,避免更新后会出现一些不必要的麻烦。

我非常期待有哪位dalao能够使用这款程序开一个小姐姐PT站,顺带送给我一个炒鸡VIP会员~

0 人点赞