前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNIT3D:一款基于Laravel框架的全新PT站程序

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

作者头像
砸漏
发布2020-10-28 15:54:42
2.5K1
发布2020-10-28 15:54:42
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

对于这个项目或者说这个程序,我就一句话概况一下:技术用的很前卫也很新颖,但是性能稀烂,前端更稀烂。。。不过依旧很有潜力,毕竟是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会员~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档