魅力博客

魅力Linux|魅力空间|魅力博客|学习Linux|ubuntu日记|电脑教程|手机软件

NexusPHP 文档【备用】



适用版本

本文档适用于 NexusPHP(以下简称 NP) 经修改的版本,版本号:>= 1.6

#名词释义

本文档所包含的一些专有名词含义:

  • ROOT_PATH,指部署应用的根目录,如 /usr/share/nginx/html/demo.nexusphp.org

  • RUN_PATH,指入口文件所在目录,在这里为 ROOT_PATH . 'public'注意要配置到 public 目录!!!注意要配置到 public 目录!!!注意要配置到 public 目录!!!

  • PHP_USER,指运行 PHP 的用户,一般为 www-data 或 www,以具体为准

  • DOMAIN, 指网站域名,如 demo.nexusphp.org

#环境要求

  • PHP: 8.0|8.1|8.2,必须扩展:bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis, pcntl, sockets, posix, gmp, opcache

  • Mysql: 推荐 5.7 最新版或以上

  • Redis: 2.6.12 或以上

获取程序

克隆 xiaomlove/nexusphp (opens new window),然后切换到最新的 release 标签再安装,或者直接下载最新 release (opens new window)

WARNING

克隆时务必切换到某个 release 进行安装。不要使用最新的开发代码!

#创建数据库

首先登录 Mysql,新建一个数据库,字符集(charset)及排序规则(collate)选择 utf8 + utf8_general_ci 或 utf8mb4 + utf8mb4_general_ci 。后者支持存储 emoji 表情,前者不支持。

mysql> create database `nexusphp` default charset=utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.06 sec)

TIP

utf8mb4 需要 Mysql 5.5.3 或以上才支持。

#配置 Web 服务器

#不启用 https 配置

以 nginx 为例,只需要最基本的配置即可。在 nginx 配置目录(一般为 /etc/nginx/conf.d/)下新增一个 nexusphp.conf

server {

    # 以实际为准
    root /RUN_PATH; 

    server_name DOMAIN;

    location / {
        index index.html index.php;
        try_files $uri $uri/ /nexus.php$is_args$args;
    }

    # Filament
    location ^~ /filament {
        try_files $uri $uri/ /nexus.php$is_args$args;
    }

    location ~ \.php {
        # 以实际为准
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    access_log /var/log/nginx/DOMAIN.access.log;
    error_log /var/log/nginx/DOMAIN.error.log;
}

#启用 https 配置

启用 https,首先得准备好证书(参见下方 [关于 https])。

server {
    listen 443 ssl;
    ssl_certificate /SOME/PATH/DOMAIN.pem;
    ssl_certificate_key /SOME/PATH/DOMAIN.key;

    # 以实际为准
    root /RUN_PATH; 

    server_name DOMAIN;

    location / {
        index index.html index.php;
        try_files $uri $uri/ /nexus.php$is_args$args;
    }

    # Filament
    location ^~ /filament {
        try_files $uri $uri/ /nexus.php$is_args$args;
    }

    location ~ \.php {
        # 以实际为准
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    access_log /var/log/nginx/DOMAIN.access.log;
    error_log /var/log/nginx/DOMAIN.error.log;
}
# http 跳转 https
server {
    if ($host = DOMAIN) {
        return 301 https://$host$request_uri;
    }
    server_name DOMAIN;
    listen 80;
    return 404;
}

添加完成后,nginx -t 测试是否有错误,无错误 nginx -s reload 重启生效。

#安装过程

#安装准备

以下在ROOT_PATH下执行:

  • composer install,安装依赖

  • cp -R nexus/Install/install public/,复制 nexus/Install/install 到 public/,保证最后 public/install/install.php 存在

  • chown -R PHP_USER:PHP_USER ROOT_PATH,设置根目录所有者为运行 PHP 的用户

  • 上面一步如果不知道 PHP_USER 是谁,亦可将整个目录赋予 0777 权限:chmod -R 0777 ROOT_PATH

以上准备工作做完,打开网站域名正常会跳转安装界面。

#执行安装

按实际情况填写每一步,注意选对时区,否则时间不对,更有可能客户端无法汇报。点击下一步,直到完成。

#创建后台任务

创建用户 PHP_USER 的定时任务,执行:crontab -u PHP_USER -e,在打开的界面输入以下:

* * * * * cd ROOT_PATH && php artisan schedule:run >> /tmp/schedule_DOMAIN.log
* * * * * cd ROOT_PATH && php include/cleanup_cli.php >> /tmp/cleanup_cli_DOMAIN.log

如果没有生效,查看 /etc 下是否有 crontab 文件,如果有,在里边编辑亦可:

* * * * * PHP_USER cd ROOT_PATH && php artisan schedule:run >> /tmp/schedule_DOMAIN.log
* * * * * PHP_USER cd ROOT_PATH && php include/cleanup_cli.php >> /tmp/cleanup_cli_DOMAIN.log

可通过查看重定向文件(也就是 >> 后面指向的那个文件)是否有内容输出确定是否生效。

WARNING

完成后,删除 public/install 目录。安装日志包含敏感数据,不要泄露。

#创建队列守护进程(>=1.8需要)

安装好 supervisor,在其配置目录(一般为 /etc/supervisor/conf.d/)下新增一个配置文件 nexus-queue.conf,注意替换 ROOT_PATH, PHP_USER,其中 numprocs 是启动的进程数,一般为自己 CPU 核心数即可。

[program:nexus-queue]
process_name=%(program_name)s_%(process_num)02d
command=php ROOT_PATH/artisan queue:work --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=PHP_USER
numprocs=2
redirect_stderr=true
stopwaitsecs=3600
stdout_logfile=/tmp/nexus-queue.log

保存好后执行以下命令启动之:

# 启动
supervisord -c /etc/supervisor/supervisord.conf

# 重新读取配置文件
supervisorctl reread

# 更新进程组
supervisorctl update

# 启动
supervisorctl start nexus-queue:*

#问题排查

如果不能正常跳转安装界面,查看 nginx error log。

如果看不到错误,可能是 php-fpm 错误没有输出到 nginx error log。打开 www.conf(不知道在哪尝试 whereis php-fpm,能看到基本目录),找到 catch_workers_out 及 php_admin_flag[log_errors],保证其为打开状态。

修改重启 php-fpm 生效。

catch_workers_out = yes
php_admin_flag[log_errors] = on

如果依然看不到错误,修改 include/core.php 约第 18 行,把 0 改为 1,把错误展示到页面上。

ini_set('display_errors', 1);

WARNING

修复错误后,记得把错误展示关闭!

#其他

#关于 https

建议使用 cloudflare 的 DNS 解析服务,它会提供免费的 ssl 证书。在 SSL/TLS 菜单下,加密模式选择完全或严格,在 [源服务器] 子菜单下创建好证书,保存上传到源服务器,按上边文档所说配置即可。

关于宝塔面板

宝塔面板是一款简单好用的服务器运维管理面板,支持中文,有较好的中文社区支持。

#安装宝塔面板

访问 宝塔官网 (opens new window),选择适合自己服务器系统的宝塔面板安装命令,按照宝塔面板官方文档进行安装。

#使用宝塔面板安装 LNMP 环境

在宝塔面板中,我们可以一键安装 LNMP 环境,即 Linux, Nginx, MySQL, PHP。

  1. 登录宝塔面板。绑定账号。在弹出的一键安装窗口选择Lnmp。

  2. 如果没有发现弹出窗口,可在面板菜单点击 软件商店

  3. 分别安装 Nginx, MySQL, PHP, phpMyAdmin(可选)。

Nginx 建议直接最新版,MySQL建议8.0,PHP 需要8.0+

安装好PHP后点击软件商店,选择已安装PHP的设置,确保以下函数没有被禁用:

  • symlink

  • putenv

  • proc_open

  • proc_get_status

  • exec

  • pcntl_signal

  • pcntl_alarm

  • pcntl_async_signals

安装如下扩展:

  • fileinfo

  • redis

  • gmp

  • opcache

注意: 若gmp安装不成功,请执行以下命令(针对Ubuntu/Debian系统):

apt install -y libgmp-dev

或者(针对CentOS/Redhat/Fedora)

yum install -y libgmp-dev

以下扩展默认已安装,你可以在最后检查一下:

  • bcmath

  • ctype

  • curl

  • json

  • mbstring

  • openssl

  • pdo_mysql

  • tokenizer

  • xml

  • mysqli

  • gd

  • pcntl

  • sockets

  • posix

#获取程序

克隆 xiaomlove/nexusphp (opens new window),然后切换到最新的 release 标签再安装,或者直接下载最新 release (opens new window)

WARNING

克隆时务必切换到某个 release 进行安装。不要使用最新的开发代码!

#上传程序和配置数据库

  1. 在宝塔面板点击 网站,点击对应网站的根目录(/www/wwwroot/你的域名),进入文件管理界面。

  2. 上传你的程序到站点根目录下。

  3. 上传完成后解压。需要注意的是确保文件在网站根目录下,而不是子目录中。应确保 'public' 目录位于根目录的首层。

  4. 复制 nexus/Install/install 到 public/,保证最后 public/install/install.php 存在。

#配置网站

  1. 在宝塔面板中点击 网站

  2. 点击 添加站点

  3. 按提示填写域名,选择 PHP 版本,数据库,类型选择 MySQL,并使用 utf8mb4 编码。填写账号名称,如:nexusphp,然后点击提交。

  4. 创建好网站后,点击对应网站的设置。

  5. 网站目录: 取消勾选防跨站攻击(open_basedir),运行目录选择 /public

  6. SSL子菜单,选择Let's Encrypt,一键申请证书

  7. 在 Composer 子菜单中,选择相应的 PHP 版本,执行参数设置为 install,其余保持默认设置,然后点击执行。

  8. 伪静态,复制粘贴如下配置:

    location / {
        index index.html index.php;
        try_files $uri $uri/ /nexus.php$is_args$args;
    }
    
    # Filament
    location ^~ /filament {
        try_files $uri $uri/ /nexus.php$is_args$args;
    }
  9. 设置根目录所有者为运行 PHP 的用户www。终端执行命令chown -R www:www /www/wwwroot/你的域名

  10. 上面一步如果出错或不知道是什么意思,亦可将整个目录赋予 0777 权限:chmod -R 0777 /www/wwwroot/你的域名

以上准备工作做完,打开网站域名正常会跳转安装界面。

#执行安装

按实际情况填写每一步,注意选对时区,否则时间不对,更有可能客户端无法汇报。点击下一步,直到完成。

#创建后台任务

点击宝塔左侧的计划任务。创建两个计划任务

  • 任务类型 Shell脚本

  • 任务名称 自由填写

  • 执行周期 每N分钟 1分钟

脚本内容如下(记得把 DOMAIN 替换为自己的域名):

su -c "cd /www/wwwroot/DOMAIN && php include/cleanup_cli.php >> /tmp/cleanup_cli_DOMAIN.log" -s /bin/sh www

su -c "cd /www/wwwroot/DOMAIN && php artisan schedule:run >> /tmp/schedule_DOMAIN.log" -s /bin/sh www

其中一个示例如下(注意是配置两个独立的任务,每个任务使用上方的一行脚本,而非将两行脚本用于单一任务。):

WARNING

特别提醒:执行周期是每分钟,不能修改!这里的配置只是一个入口,实际运行频率是程序控制的,修改频率整个网站运行不正常!比如魔力不会如期增涨!

完成后,删除 public/install 目录。安装日志包含敏感数据,不要泄露。

#创建队列守护进程(>=1.8需要)

从宝塔面板的商店安装进程守护管理器,点击添加守护进程,按以下格式填写(注意替换 ROOT_PATH, PHP_USER):

名称:nexus-queue
启动用户:PHP_USER
运行目录: ROOT_PATH
启动命令:php ROOT_PATH/artisan queue:work --tries=3 --max-time=3600
进程数量:2

#问题排查

如果不能正常跳转安装界面,查看 error log。(/www/wwwlogs/域名.error.log)

如果看不到错误,修改 include/core.php 约第 18 行,把 0 改为 1,把错误展示到页面上。

ini_set('display_errors', 1);

WARNING

一旦错误修复,请务必将错误展示设置为关闭状态。

#其他

#关于 https

建议使用 cloudflare 的 DNS 解析服务,它会提供免费的 ssl 证书,免费的网站CDN,防止暴漏源站。

在 SSL/TLS 菜单下,加密模式选择完全或严格,在 [源服务器] 子菜单下创建好证书,保存上传到源服务器,按上边文档所说配置即可。


邮件发送

#设置发件人

【主要设定】-><网站邮箱地址>,填写你的发件人。必须跟下边 SMTP 用户名一样!

#SMTP 设定

【SMTP 设定】->[邮件函数类型],选择外部。下边以 QQ 邮箱为例,具体参考你的邮件服务提供商文档。

  • SMTP 地址:smtp.qq.com

  • SMTP 端口:465

  • 加密方式:ssl

  • 用户名:QQ邮箱完整地址,包含 @qq.com 后缀。

  • 用户密码:授权码,不是邮箱密码。获取方式参考这里 (opens new window)

完成这两步,在【SMTP 设定】下边有测试地址,点击过去打开邮件测试页面,填写一个收件邮箱地址,点击发送。如果无异常,收件邮箱会收到如下邮件。

#PT-Gen

NP 默认带了 IMDB 信息,但对于国内玩家可能更习惯于豆瓣。依靠Rhilip/pt-gen-cfworker (opens new window)提供接口,集成到了 NP 中。

【主要设定】-> [开启 PT-Gen 系统],默认开启。开启后在发种页面可填写 PT-gen 支持的 douban、imdb、bangumi 的链接地址,在种子详情页展示之。

默认使用原作者 demo 接口,如若出现问题,请参考其文档自行搭建接口,填写到 【主要设定】-> [PT-Gen 接口地址]

#设置热门、推荐等

在编辑种子里边,必须是【批评家】(Picker)才看到此选项,系统管理员也不可以。因此,要设置热门、推荐等,编辑另外一个用户,设置等级至少为:【站点设定】->权限设定->管理种子 中的等级,设置批评家为:

#新建考核

新建时建议先不要勾选 Discovered,即设置不被系统自动发现,这样就不会自动把考核任务分配给符合要求的人

先手工分配给某个账户进行测试一下:在 User list -> detail -> Other -> Assign exam,这里选择刚才新建的考核。时间范围可以不填,这样就以考核本身设置的时间为准,如果填了,考核时间范围就以填的为准(系统自动分配是以任务本身的时间范围为准的)。分配后,在用户详情页能看到进行中的考核以及其具体进度。也可以移除考核任务(移除对应的进度也一并删除),或者再次分配之。

当测试觉得没有问题后,勾选 Discovered,这样系统就会自动将之分配给满足条件的人。

升级到1.6说明

本文档将指引你将 NP 从原始的 nexusphp.v1.5.beta5.20120707 版本升级到 v1.6。

#注意

WARNING

升级仅保留网站资源数据和数据库数据,对原版代码上的改动会丢失,请知悉!

升级前请对原代码目录和 Mysql 数据库进行全量备份!
升级前请对原代码目录和 Mysql 数据库进行全量备份!
升级前请对原代码目录和 Mysql 数据库进行全量备份!

#前期测试

#准备环境

按要求准备好环境,可以与原网站在同一台机器,也可以不是同一台。不再赘述。

TIP

如果是宝塔面板,确保以下函数没有被禁用:symlink, putenv, proc_open, exec

#配置新的网站

线上网站不要受到影响,配置一个新的二级域名或新域名指向一个新的网站目录,具体配置参考安装文档

TIP

宝塔不要勾选:防跨站攻击(open_basedir)。

#建立新的数据库

导出原网站数据库,导入到一个新建的数据库中。
peers 表使用的是 memory 引擎,如果数据量较大,为确保导入顺利,在 my.cnf(一般为 /etc/my.cnf)[mysqld]部分添加以下值保证表能装下全部数据,加完记得重启:

tmp_table_size = 10G
max_heap_table_size = 10G

为加快导入速度,登录终端后执行以下语句再使用source命令导入:

set sql_mode = '';
set foreign_key_checks = 0;
set unique_checks = 0;
set sql_log_bin = 0;

#获取新代码

克隆或下载新的代码到新配置的网站根目录。

#保留原资源数据

将旧网站的以下文件夹复制到新网站相应文件夹进行覆盖:

原文件夹新文件夹
attachmentsattachments
bitbucketbitbucket
configconfig
imdbimdb
subssubs
torrentstorrents
stylespublic/styles
picpublic/pic

将以上文件夹覆盖之后,打开config/allconfig.php,将BASEURLannounce_url修改为新的:

$BASIC=array(
	'SITENAME' => 'NexusPHP',
	'BASEURL' => 'localhost',
	'announce_url' => 'localhost/announce.php',
	'mysql_host' => 'localhost',
	'mysql_user' => 'root',
	'mysql_pass' => 'nexusphprocks',
	'mysql_db' => 'nexusphp',
);

#安装 composer

到 官网 (opens new window)按其文档进行安装。安装完成后,在新网站根目录下执行 composer install

#执行升级程序

在新网站中将 nexus/Install/update/update.php 复制到 public/update/update.php 中。

打开 <新网站域名>/update/update.php,将进入升级界面。按步骤填写,注意过程中数据库要使用新建立的那个! ,下一步,直到完成。

最后登录数据库,选择新建立的数据库,执行以下语句将与旧域名相关的项目改为新域名:

update `settings` set `value` = replace(`value`, '旧域名', '新域名') where `value` like '%旧域名%';

#验证

打开新网站首页,进行登录,检查数据是否完整,基本功能是否正常。
下载一个种子,或者进行辅种(注意 tracker 地址要为新网站的地址),看是否正常。

没有问题后,证明测试通过,旧网站可以升级。否则,请解决问题之后再考虑。

如若测试通过,而且以上测试没有花费太多时间,旧网站中间没有产生多少数据,可以直接切换使用即可(如何切换参考下面)。假如花费了不少时间产生了很多新数据,则需要将旧网站停机,重复以上步骤。这里看个人取舍。

#后续工作

#切换

将数据库中网站域名恢复为旧域名,可以执行上边提到的语句(注意新旧是反过来了)。接着将新网站的配置中 server_name 修改为原域名,旧网站的配置文件可以转移或更改其 server_name,重启网站服务器即切换完成。至此,线上就是使用新的网站目录和数据库了,旧的可以继续保留。

TIP

恢复旧版,将新网站配置文件转移,旧配置文件恢复即可。

#创建后台任务

参见安装

#清理签到数据

如果你网站原来已经有签到功能,它是每签到一次记录一条数据,新版改为每个用户一条数据,在根目录下执行以下命令进行多余数据的清理:

php artisan attendance:cleanup

WARNING

升级完成后,记得删除 public/update 目录,升级日志包含第敏感数据,不要泄露。

#视频教程

以上有不懂的地方,可以参考视频教程:
【B站】NexusPHP 1.5 升级 1.6 基本流程(opens new window)

#1.6 之间升级

如从 1.6.0-beta1 升级到 1.6.0-beta2,可以将新代码整个目录覆盖(不会删除已有资源,如种子、附件等),然后修改相关目录权限、执行 composer install,最后运行一遍升级程序,升级过程中获取文件勾选第一个手工

升级到1.7说明

本文档指引你从 1.6 升级到 1.7。原始 1.5 版本的建议先升级到 1.6 后再按此文档进行升级。

#环境要求

  • PHP 扩展要求新增 pcntl, sockets, posix

  • PHP 函数 pcntl_signal, pcntl_async_signals, pcntl_alarm 不能被禁用

#升级依赖

手动执行 composer install 即可。

#执行升级

类似升级 1.6,获取最新代码,进行覆盖,复制 nexus/Install/update/update.php 到 public/update/update.php,运行之。完成后检查各项功能是否正常。

#1.7 版本之间升级

跟 1.6 一样支持网页进行。

1.7.10 起支持命令模式。某些版本对大表进行改动或有数据迁移,网页容易超时,建议使用命令进行。执行代码覆盖后,在 ROOT_PATH 下运行命令 nexus:update 命令即可。

1.7.20 起支持直接下载远程代码进行覆盖并安装依赖。
--tag=1.x.x 指定某一版本号(最新开发代码用 dev)。
--include_composer 是否更新 composer,当依赖有更新时候(看发版公告)需要,否则不需要。若更新了,插件需要重新安装,具体看博客说明 (opens new window)

# >= 1.7.10 先安装依赖
composer install

# 再执行升级
php artisan nexus:update

# >= 1.7.20,支持直接下载远程代码进行覆盖:
php artisan nexus:update --tag=1.7.22

升级到1.8说明

本文档指引你从 1.7 升级到 1.8。原始 1.5 版本的建议先升级到 1.6 后再按顺序升级。

#环境要求

  • PHP 扩展要求新增 opcache

#执行升级

WARNING

由于变动数据量较大的数据表,建议停机(比如停止 Nginx)进行更新!

首先下载升级命令的执行文件 app/Console/Commands/NexusUpdate.php 进行覆盖之。可直接通过 wget 命令下载再复制到相应目录:

wget https://raw.githubusercontent.com/xiaomlove/nexusphp/php8/app/Console/Commands/NexusUpdate.php

无插件用户,直接使用命令行升级即可:

# 下载最新代码,注意要 --include_composer
php artisan nexus:update --tag=1.8.0 --include_composer

# 安装依赖
composer install

# 执行升级
php artisan nexus:update
php artisan filament:upgrade

有插件用户,手工变更依赖。按下图,扩展新增 zend-opcache,filament 修改为 2.17.14,添加 "meilisearch/meilisearch-php": "^1.1",

接着删除 composer.lock,最后执行命令:

# 下载最新代码
php artisan nexus:update --tag=1.8.0

# 安装依赖
composer install

# 执行升级
php artisan nexus:update
php artisan filament:upgrade

# 升级后,插件需要升级最新版,否则管理后台 404 且插件可能工作不正常
composer require xiaomlove/nexusphp-xxx:dev-master

自己合并代码的用户,与有插件用户一致的步骤,只是不需要下载最新代码的步骤。

#创建队列守护进程

见 安装

#1.8 版本之间升级

以下针对没有修改代码的用户:

# 下载代码
php artisan nexus:update --tag=1.8.x

# 执行更新
php artisan nexus:update

NP 基础知识

#目录结构

NP 是传统的多入口应用,public 目录下每个文件都是入口。原始版本没有使用命名空间,基本是面向函数编程。

大的功能模块可以分为 Web 端、Tracker 端两块(以下文件均位于 include 目录)。

  • Web 端:主入口 bittorrent.php,函数文件 functions.php

  • Tracker 端:主入口 bittorrent_announce.php,函数文件 functions_announce.php

  • 二者公共部分:公共函数文件 globalfunctions.phpcore.php

要增加新功能时,只需:新建入口文件 -> 引入主入口 -> 开始具体业务逻辑。

#常用函数

函数名说明
dbconn($autoclean = false, $doLogin = true)Web 端,连接数据库。在 v1.6 中不需要手动调用,会自动连接
dbconn_announce()Tracker 端,连接数据库
userlogin()设置登录态
loggedinorreturn()判断用户是否登录
parked()判断账号是否已经封存
parse_imdb_id($id)标准化 imdb_id,不足 7 位的补充前导 0
sql_query($query)执行 DDL + DML 语句,最常用的方法之一
get_row_count($table, $suffix = '')计数查询,suffix 即是 where 条件(必须包含 where)
do_log($log, $level = 'info')记录日志到文本
get_setting($name, $default = null)读取站点设定数据
nexus_env($name, $default = null)读取 .env 文件配置值
nexus_config($name, $default = null)读取 config 目录下配置文件(allconfig.php除外)的值
getSchemaAndHttpHost()获取仅包含协议、主机、端口的 URL 地址
getBaseUrl()获取仅包含协议、主机、端口、路径的 URL 地址

移动端 apk

#0.2.0

功能包括:站点种子浏览、聚合搜索、一键签到、下载器管理。

nexusphp_0.2.0__20220315225627.apk

#0.3.0

后端需要 1.7。

#Added:

  • 种子列表展示标签、优惠/热门/经典/H&R信息

  • 种子详情支持说谢谢、赠送魔力、添加评论

  • 首页聚合新增消息、私信、投票

nexusphp_0.3.0__20220502231131.apk

=======================================

=====================常见问题============

日志怎么看

有问题第一时间查看日志,一个程序如果运行出错了不写日志,那这个程序是不及格的!
提问问题最好附上错误日志,否则神仙也帮不了你。主要有以下日志可以查看:

  • NexusPHP 自身写的日志,默认位于 /tmp/目录下,按日期生成,如 nexus-2022-03-24.log

  • PHP-FPM 的错误日志,在宝塔上:软件商店->已安装->PHP-8.0->设置->日志 可查看

  • Nginx 的错误日志,在宝塔上:网站设置->网站日志->错误日志 可查看

没有错误日志,一切免谈! 

实在找不到相关的日志,可以把错误展示在页面上,解决问题后再关闭错误展示。

#正常页面

//include/core.php 第3行,display_errors 的值由 0 改为 1ini_set('display_errors', 1);

#安装/升级

//nexus/Install/install_update_start.php 第3行,display_errors 的值由 0 改为 1ini_set('display_errors', 1);

#日志太多撑爆硬盘

NexusPHP 默认的日志级别为 info 即一般的日志都记录,如果过多可以修改为 error 只记录错误日志,将 .env 文件中 LOG_LEVEL 修改为 error

LOG_LEVEL=error

另外 PHP-FPM 的错误日志级别也可以修改为 error 以减少其日志输出。

WARNING

记录日志有助于还原现场,对排查问题起着十分关键的作用。不建议修改。
可以选择保留最近几天的日志,定时删除过旧的日志。
以下示例:每天凌晨 03 点删除 7 天以前的日志(注意替换自己的过滤关键字)

0 3 * * * find /tmp/ -mtime +7 |grep -E 'nexus' |xargs rm -rf

#邮件无法发送

请参考配置部分说明进行正确设置,确保:

  • [站点设定]->[主要设定]->[网站邮箱地址] 与 SMTP 中的用户名是同一个

  • SMTP 地址开头不要有协议如 ssl://,只需要要主机地址

  • 正确选择加密方式,如果没有选择 none,参考你的邮件服务商

无法创建软链接。这一般是 PHP 权限不足,保证把 ROOT_PATH 拥有者设置为了 PHP_USER,或者直接设置了 777 权限。如果还是不行,可以手工创建:

ln -s /你的ROOT_PATH路径/bitbucket /你的ROOT_PATH路径/public
ln -s /你的ROOT_PATH路径/attachments /你的ROOT_PATH路径/public

如果已经存在,尝试删除这两个目录,程序会自动重新创建。

#热门种子不展示在热门模块

热门模块需要展示封面,请确保填写了 imdb 链接,或描述里边包含了海报图片。

#宝塔面板装不上 gmp 扩展

一般发生在 Debian 或 Ubuntu 系统上,尝试先安装 libgmp-dev:

apt-get install libgmp-dev

#忘记管理员密码

可以执行命令重置。参数是:UID 新密码 确认新密码。
在网站根目录下:

php artisan user:reset_password {uid} {password} {password_confirmation}

#做种积分是什么东西

做种积分就是原始无加成的做种魔力。用户可以在 [魔力使用] 页,[每小时合计获得的魔力值] 部分中,[基本奖励] 行 [基础魔力] 字段就是做种积分。

#如何快速获得做种积分

做种积分获取快慢由管理员设定,一般为做种人数越少、发布时间越久远、体积越大的种子保种越容易获得高积分。除了保种,没有其他获取途径。

#管理后台 500 错误

极有可能是日志文件 /tmp/nexus-202x-xx-xx.log 无法写入,可以尝试执行

chmod 777 /tmp/nexus-202x-xx-xx.log

或者直接删除之。如果还是无法解决,请参考本页开头查看相关日志。

#管理后台 404

确保网站的 Nginx 配置文件已经有如下内容:

location / {
    index index.html index.php;
    try_files $uri $uri/ /nexus.php$is_args$args;
}

# Filament
location ^~ /filament {
    try_files $uri $uri/ /nexus.php$is_args$args;
}

并且已经重启过 Nginx。




返回顶部

发表评论:

Powered By Z-BlogPHP 1.7.3


知识共享许可协议
本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。
网站备案号粤ICP备15104741号-1