我在 DigitalOcean droplet 上运行 nginx/1.18.0 (Ubuntu),最近发现需要提供 mp4 文件,但发现 --with-http_mp4_module 不是默认构建的。最初,我使用包管理器安装了 nginx,但由于需要提供 mp4,我决定将 nginx 升级到 1.20.0,并使用 mp4 模块标志从源代码安装/构建它。我遵循了以下教程,目标是不停机,因为我运行的应用程序很少。
- https://tonyteaches.tech/how-to-build-nginx-from-source/
- https://www.digitalocean.com/community/tutorials/how-to-upgrade-nginx-in-place-without-dropping-client-connections
我已遵循所有步骤并运行了./configure --with-http_mp4
make
,make 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 捆绑包不同,因此需要进行一些调整。