如何在不丢失配置的情况下卸载旧的 nginx?

如何在不丢失配置的情况下卸载旧的 nginx?

我在 DigitalOcean droplet 上运行 nginx/1.18.0 (Ubuntu),最近发现需要提供 mp4 文件,但发现 --with-http_mp4_module 不是默认构建的。最初,我使用包管理器安装了 nginx,但由于需要提供 mp4,我决定将 nginx 升级到 1.20.0,并使用 mp4 模块标志从源代码安装/构建它。我遵循了以下教程,目标是不停机,因为我运行的应用程序很少。

  1. https://tonyteaches.tech/how-to-build-nginx-from-source/
  2. https://www.digitalocean.com/community/tutorials/how-to-upgrade-nginx-in-place-without-dropping-client-connections

我已遵循所有步骤并运行了./configure --with-http_mp4 makemake install但运行时nginx -v我仍然看到 1.18.0 正在运行。

我的问题是:我可以使用包管理器卸载 nginx 1.18.0 然后重新运行./configure --with-http_mp4 make make install吗?这会删除我的所有配置设置吗?我确实注意到新的 nginx.conf 文件与旧文件不同。
有没有一种优雅的方法可以卸载旧版本而不破坏新的安装文件?

以下是其各自命令的一些输出。

ps aux| grep nginx

root       80815  0.0  0.1  79340  3412 ?        Ss   Aug23   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   80816  0.0  0.5  79580 11108 ?        S    Aug23   0:01 nginx: worker process
mat      1158781  0.0  0.0   8160   660 pts/0    S+   00:33   0:00 grep --color=auto nginx

whereis nginx

nginx: /usr/bin/nginx /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/local/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz

sudo systemctl status nginx- 看起来新的主进程确实正在运行,但我仍然无法使用 Mp4 模块。

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-08-23 16:47:54 EDT; 7h ago
       Docs: man:nginx(8)
    Process: 80787 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 80813 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 80815 (nginx)
      Tasks: 2 (limit: 2339)
     Memory: 13.2M
     CGroup: /system.slice/nginx.service
             ├─80815 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─80816 nginx: worker process

如果需要的话我可以提供更多信息。我已经花了好几天的时间,真心希望得到一些帮助,这样我就可以继续前进了。

答案1

通常,包管理器会保留配置。但是,您应该设置环境的副本并在那里测试该过程。

但是,我不会从源代码构建 nginx,而是使用 nginx 创建的包:http://nginx.org/en/linux_packages.html。它们应该包含所有 nginx 模块,并且定期进行维护。

这些软件包唯一需要注意的是,配置文件结构与 Ubuntu 捆绑包不同,因此需要进行一些调整。

相关内容