分类 技巧杂烩 下的文章

前言

站长们估计或多或少都遇到过这个问题:明明在服务器里改好了Nginx的配置文件,但是刷新网站发现配置没生效。再比如:新加的域名访问不了、改的防盗链规则不生效…

我每次折腾程序的时候也会遇到这个问题,在宝塔面板配置好之后刷新页面,却发现配置没生效,反复检查没找到问题,忙叨半天最后才发现,原来是忘了让Nginx生效新配置。

为什么Nginx修改配置后不会实时生效?修改配置后,到底该用重启还是重新加载?这两个操作有什么区别?哪些修改必须重启,哪些只需要重载就够?

为了便于理解,以宝塔面板来举例,用这篇文章一次性解释完,以供后来者参考。

为什么Nginx修改配置后不会实时生效

这和Nginx的设计机制问题,这类服务软件的逻辑都是这样,为了保证服务稳定的设计,全部遵循一次读取,长期驻留的原则

Nginx在启动时会将配置文件解析并固化到内存中,后续的请求处理直接读取内存数据,以保证高性能,而不会每次都去读取磁盘上的文件。

所以,仅仅修改文件是不够的,必须通过命令通知主进程重新读取配置文件、验证语法、创建新的工作进程来加载新配置,从而实现平滑更新。

为什么要这么设计

包括我在内,很多站长会问:为什么不能设计成配置自动生效,这样多方便。答案也很简单:为了服务器的绝对稳定和高性能。分三点说明:

  1. 如果Nginx实时监听配置文件,每一次请求都要去读硬盘的配置文件,服务器的IO开销会暴增,网站访问速度变慢、性能大幅下降,这对高访问量的站点是致命的;
  2. 配置文件的修改可能不完整、有语法错误,如果实时生效,会直接导致Nginx运行出错、网站崩溃,风险极高!对新手来说更是如此;
  3. 一次性加载到内存,是所有高性能服务软件的标配,内存的读取速度非常快,能最大程度保证Nginx的运行效率。

重启(restart) / 重载(reload)

以宝塔为例,有两种方式让新配置生效。

方法一:重载配置(推荐)

宝塔面板上的重载配置按钮,对应到Linux命令行就是:nginx -s reload

这是日常修改配置的首选操作,也是最推荐的!它的作用是:通知正在运行的Nginx,去重读硬盘上的配置文件,把新的配置加载到内存中,平滑生效。

这个操作的核心优点:不中断服务、不影响用户访问。通过reload命令,进程会先验证新配置的正确性,仅在语法无误时启动新的工作进程来接管新请求,同时让旧的工作进程继续处理完现存连接后再优雅退出,从而在零停机的情况下完成配置更新,既保证了高可用性,又具备了出错回滚的安全机制。

方法二:重启Nginx服务

宝塔面板上的Nginx重启按钮,对应到Linux命令行就是:systemctl restart nginx

作用:先完全停止当前正在运行的所有Nginx进程,然后再重新启动Nginx,启动的同时加载新配置。

这个操作的核心特点:短暂中断服务。重启的瞬间,Nginx的所有进程都被关闭了,此时如果有用户访问网站,会出现访问失败、页面报错、加载超时的情况,直到Nginx重启完成。虽然重启的时间很短(一般毫秒级),但对有大量访问的站点来说,依然有影响,所以非必要不建议重启。

哪些修改,用重载就够?哪些修改,必须重启?

只需要重载 :仅修改业务规则类配置,比如:新增/修改 反向代理、新增/修改 防盗链、新增/修改 缓存策略、转发规则、后端服务地址gzip压缩、页面跳转/重定向。这些不涉及 Nginx 核心运行的进程、端口、模块。

必须重启 :修改核心运行相关配置, 比如:新增/删除 监听端口、新增/删除 核心模块、修改 工作进程数、进程绑定CPU、修改 用户权限、运行身份、修改 pid文件路径、日志文件的根路径。凡是涉及 Nginx 的进程、端口、加载的模块,这些配置都无法通过重载生效,只能重启。

前言

又到了废话的时候,前些年刚上高中的时候,想要建站,一开始买的星辰云的虚拟主机,后来换成了云服务器。第一次用云服务器,买到手才发现和虚拟主机完全不一样,他没有控制面板?

当时纯小白,问别人也没人理,后来第一个月的机器压根没用到,白白浪费了。再后来才知道了宝塔面板,宝塔也可以说是我的启蒙面板了

教程开始

首先你要拥有一台服务器,去哪里买无所谓,练手的话小厂便宜,大型业务的话大厂稳定。如果你愿意的话可以走我的推广链接,就当赞助我了。

点我购买

值得注意的是,新手不推荐买大陆地区的服务器,因为要备案,很麻烦

系统选择

购买服务器时会让选择操作系统,按照下述顺序选择,排名越靠前的,与宝塔面板兼容性越好

Debian12、Ubuntu22、Centos9、OpenCloud9、TencentOS Server4,AlibabaCloud 3、麒麟,统信,欧拉等Linux系统

这里使用Debian12举例

连接服务器

在控制台查看服务器的IP、用户名、密码、端口

记下这些信息后,使用SSH工具连接服务器,这里推荐使用堡塔多机管理

填写相关信息后保存并打开终端

安装宝塔

输入安装命令:

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_latest.sh;else wget -O install_latest.sh https://download.bt.cn/install/install_latest.sh;fi;bash install_latest.sh ssl251210

执行后会出现确认提示,输入y并回车,接下来等着就行

安装成功

出现如下文字即为安装成功,将面板信息复制保存

安装必备组件

访问面板地址并登录,按照提示绑定账号

安装服务器必备组件,按需选择

如果你是学习使用,可以选择快速安装,如果是正式上线的运行环境,建议选择编译安装。

面板效果

前言

去年alist暴雷之后,就换成了社区维护的openlist,用了很久了,今天做一期教程,也避免后来者再去翻阅文档

安装教程

只介绍两种方法,宝塔docker一键安装和脚本安装。

安装宝塔面板的过程查看之前的文章

https://blog.chario.cn/wiki/27.html

宝塔docker

在后台左侧菜单栏点击docker,右侧点击立即安装。安装方式默认即可,如遇到安装失败,可尝试二进制安装

    安装完成后在docker商店的分类找到储存/网盘,下滑找到openlist,点击安装。

    在弹出的窗口填写需要的信息,没有域名的话就空着,CPU和内存限制根据实际情况调整。都填好之后点击确定,等待安装完成

    查看日志,安装好后点击已安装刷新一下就能看到了点击详情,可以查看后台的账号,然后复制设置openlist密码的命令到终端


    访问你设置的域名即可看到页面。没置域名的就访问你的IP:程序端口,如:127.0.0.1:15244

    登录之后会提醒你去设置存储,点击按钮进入设置页面

    openlist支持数十种储存方式,你可以任意选择

      一键安装脚本

      安装要求

      • 使用 systemd 的 Linux 系统
      • Root 权限
      • 已安装 curl, tar
      • 下载页面中列出的架构(openlist支持大多数架构,这点无需担心)

      执行安装脚本

      在确定你的系统支持后,执行下述命令:

      curl -fsSL https://res.oplist.org/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh

      在底部输入选项,因为我们要安装,所以填1,然后回车

      接下来会要求填写加速代理地址,可填可不填,我填的是https://gh-proxy.com/,你也可以填https://ghproxy.net/

      回车之后等待下载,下载的快慢取决你服务器的配置

      安装完成后会显示你的程序信息,务必截图/复制保存

      后续在终端输入openlist即可完成更新、卸载、重启等操作

      反向代理

      命令行安装的用户需要设置反向代理才能通过域名访问

      新建站点

      修改站点设置

      删除面板默认代码

      添加反向代理

        如需申请SSL证书,可先在SSL选项中申请证书,然后在设置反向代理。或者设置反向代理之后,关闭反向代理功能,申请SSL证书后再次开启代理。

        下载压缩包解压即可

        命令

        启动

        start .\nginx

        停止

        .\nginx -s stop

        强制停止所有 Nginx 进程

        taskkill /f /im nginx.exe > \$null

        仅用于多次启动冲突时 重复执行 start nginx 或直接双击 nginx.exe 会生成多组进程,停止命令无法覆盖所有实例

        cheveretov4新增了ExifTool、ExifTran、FFmpeg的支持,但是宝塔又不能一键安装,研究许久发现了解决办法。

        手动执行命令安装三个插件,以Debian12为例:

        ExifTool

        通过 apt 包管理器安装(推荐,简单快捷)

        ExifTool 已收录在 Debian 官方软件源中,直接通过 apt 安装即可:

        步骤 1:更新 apt 源缓存

        apt update -y

        步骤 2:安装 ExifTool

        apt install libimage-exiftool-perl -y

        注:Debian 中 ExifTool 的包名是libimage-exiftool-perl(Perl 库形式),安装后可直接通过exiftool命令调用。

        步骤 3:验证安装

        执行以下命令,若输出版本信息则安装成功:

        exiftool -ver

        ExifTran

        通过 apt 包管理器安装(推荐,Debian 9 + 通用)

        # 更新apt缓存(可选,确保源最新)
        apt update -y
        ​
        # 安装exiftran
        apt install exiftran -y

        ffmpeg(包含ffprobe)

        更新软件包列表

        sudo apt update

        安装 ffmpeg包

        sudo apt install ffmpeg

        此命令会自动安装 ffmpeg(命令行音视频处理工具)、ffprobe(媒体文件分析工具)、ffplay(简易播放器)以及所有必需的依赖库(如 libavcodeclibavformatlibavutil 等)。

        结语

        全部安装完毕后,关闭防跨站,重启服务器,刷新页面就可以看到了。

        如果仍然没有的话,在程序目录/app/env.php中增加

        'CHEVERETO_BINARY_EXIFTOOL' => 'exiftool',
            'CHEVERETO_BINARY_EXIFTRAN' => 'exiftran',
            'CHEVERETO_BINARY_FFMPEG' => 'ffmpeg',
            'CHEVERETO_BINARY_FFPROBE' => 'ffprobe',