项目部署/网站运维疑难解析

宝塔部署项目与网站运维常见问题解答

Hyplus目录

1 设置二级域名

阿里云控制台创建二级域名:

  1. 云解析DNS面板选择权威域名解析设置
  2. 添加记录,记录类型A,主机记录为二级域名前缀(或直接填*,需保证不与CNAME等其他同名记录类型冲突),记录值为公网IP,其他均保持默认值

宝塔面板设置网站二级域名:

  1. 选择网站设置,按要求在域名管理添加即可
  2. 开启外网映射
  3. 如有需求可申请SSL证书(Let's Encrypt)

2 Next.js项目部署后缓存无法清除

问题描述:nextjs部署后缓存无法清除

  1. Node项目部署,选择默认项目
  2. 项目目录执行npm run build
  3. 项目配置启动选项设置为npm run start
  4. 更新代码后,npm run build,重启应用后,无法看到最新的页面(首页)

解决方案:删除nginx缓存(/www/server/nginx/proxy_cache_dir


3 解决WordPress“正在执行例行维护,请一分钟后回来”

WordPress在升级程序、主题、插件时,都会先切换到维护模式,即显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenance. Check back in a minute)”,如果升级顺利,几秒左右就恢复正常;但是如果由于网速不佳等原因导致升级中断,WordPress就会一直停留在维护模式,不论前台还是后台,都一直显示“正在执行例行维护,请一分钟后回来“。

解决方法:

  1. 通过FTP登录网站,删除WordPress根目录下的.maintenance,刷新即可。
  2. 但有时候会发现,根目录根本就没有.maintenance。此时直接新建一个空txt文本,上传到主机空间中,重命名为.maintenance,然后会发现.maintenance不见了!无需担心,刷新即可。
  3. 若还是不行,或想让其以后可以显示.maintenance,则可打开/wp-admin/includes/class-wp-filesystem-direct.php,找到以下代码:
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
        // safe mode fails with a trailing slash under certain PHP versions.
        $path = untrailingslashit($path);
        if ( empty($path) )
            return false;

        if ( ! $chmod )
            $chmod = FS_CHMOD_DIR;

        if ( ! @mkdir($path) )
            return false;
        $this->chmod($path, $chmod);
        if ( $chown )
            $this->chown($path, $chown);
        if ( $chgrp )
            $this->chgrp($path, $chgrp);
        return true;
    }

将其改为:

function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
    // safe mode fails with a trailing slash under certain PHP versions.
    if ( ! $chmod )
        $chmod = $this->permission;

    if(ini_get('safe_mode') && substr($path, -1) == '/') {
        $path = substr($path, 0, -1);
    }

    if ( ! @mkdir($path) )
        return false;
    $this->chmod($path, $chmod);
    if ( $chown )
        $this->chown($path, $chown);
    if ( $chgrp )
        $this->chgrp($path, $chgrp);
    return true;
}

4 KINA-Next加载异常

问题描述:试图打开HyNav版KINA(iframe)或网页版KINA-Next(kina.hyperplasma.top)时,页面静止于加载页面(Torch图标 + “...”),且“...”为红色

解决方案:同问题2,Next.js项目部署缓存异常。联系Hyplus管理员,删除nginx缓存(/www/server/nginx/proxy_cache_dir


5 Spring Boot项目打包部署到服务器

详见博文【CSDN】Springboot打包部署到服务器(宝塔面板)


6 无法部署Let's Encrypt证书

SSL证书界面点击“保存”时显示如下内容:

证书错误:
nginx version: nginx/1.24.0
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] mkdir() "/www/wwwroot/api.hyperplasma.top/proxy_cache_dir" failed (2: No such file or directory)
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

此前误删了暂未使用但仍存在的网站目录,重新创建即可。


7 强制删除MySQL目录后遗症

有时因为急于安装新版MySQL,会直接使用命令rm -rf /www/server/mysql删除MySQL目录使得所有数据库亦被一并删除(已事先备份)。之后宝塔面板的数据库栏目中仍会显示数据库条目且无法删除(尽管此时不存在)。

解决方案:一般是试图删除“不存在”的目录(实际已无,但其他表处未更新状态)导致删除失败,故根据错误日志在指定位置新建空文件夹,再重复操作即可。

根本解决方案:先删光表,再卸载MySQL!


8 无法上传用户头像

问题现象:在WordPress中使用Ultimate Member插件上传用户头像时,即便图片极小(如4KB),系统仍持续报错:“您的图像无效或太大了!(Your image was invalid or too large!)”。同时,浏览器控制台(Console)可能伴随出现路径请求403 Forbidden的错误。

核心原因:该问题通常并非单一原因导致,而是NGINX访问控制(外因)与PHP底层临时文件权限(内因)共同作用的结果。

解决步骤:

  1. NGINX路径解封(解决403报错):如果站点开启了严格的防盗链或目录索引限制,NGINX可能会误杀插件的临时预览请求。只需在配置文件中加入以下片段即可
# 必须放在其他正则匹配规则之前
location ^~ /wp-content/uploads/ultimatemember/ {
    autoindex on;       # 允许目录索引,防止探测失败
    valid_referers any; # 允许该目录下的图片在前端正常加载预览
    allow all;

    location ~* \.(webp|jpg|jpeg|png|gif)$ {
        expires 30d;
        add_header X-Robots-Tag "noindex, nofollow";
    }
}
  1. 突破PHPopen_basedir限制(解决上传中断):宝塔等面板默认开启“防跨站攻击”,会导致PHP无法读取系统临时文件夹(/tmp),而上传的第一步正是将文件存入该目录。
    • 操作:修改站点的open_basedir配置
    • 配置路径:站点设置 > 网站目录 > 防跨站攻击
    • 修改方式(二选一):
      • 稳法:若可以手动修改,则确保路径中包含/tmp/,例如::/www/wwwroot/your_site/:/tmp/:/proc/
      • 快法:先取消勾选“防跨站攻击”,点击保存。然后再重新勾选并保存(这会自动刷新宝塔默认的配置文件)
  2. 明确PHP临时上传路径:确保PHP进程有明确的“中转站”存放上传数据。
    • 操作:修改PHP配置文件(php.ini)。
      1. 进入宝塔面板 > 软件商店,找到你正在使用的PHP版本(如PHP-8.3)
      2. 点击设置 > 配置文件
      3. Ctrl+F搜索upload_tmp_dir:若其前面有分号;请删掉,并修改为upload_tmp_dir = /tmp
      4. 搜索session.save_path,确保其路径也在open_basedir允许的范围内(或者也设为/tmp
      5. 保存并重启PHP服务
  3. 清理并核对目录权限:
    1. 手动删除/wp-content/uploads/ultimatemember/temp/下的所有缓存文件。
    2. 确保整个ultimatemember文件夹的所有者为www,权限建议设置为755

发表评论