我有一个标准版本的 Nginx(通过安装apt-get
)运行我的生产环境(Debian Jessie)。
现在我想从源代码编译最新版本的 Nginx,并添加一些额外的模块进行测试。可执行文件可能位于任何地方,但我想确保不会意外覆盖我的生产版本。
我知道的:我需要cd
到 nginx 源目录并执行:
./configure --add-module=/path/to/some/module
make
make install
我不知道的是:如何确保测试版本不会安装在生产版本之上。或者如何安装在我指定的特定位置。
(我尝试阅读 make 的手册页,但没有得出任何结论性的答案。我对从源代码进行编译缺乏经验。)
答案1
您可以将安装目标指定为./configure
,而不是 的选项make
。默认情况下,nginx 会为自己配置前缀/usr/local/nginx
,因此不存在覆盖打包版本的风险;你可以指定你自己的路径
./configure --prefix=/your/installation/path
默认的 nginx 设置不会安装其前缀之外的任何文件,例如在/etc
。
安装过程记录在nginx 网站。
检查某个软件从源代码安装是否安全的一般策略是运行安装步骤与-n
选项(它告诉 Make 不要实际执行任何操作):
make -n install
这将列出所有操作会在实际安装中完成。 (某些构建系统会破坏此选项,因为后续安装步骤依赖于早期安装步骤所做的更改;nginx 的构建工作正常。)
当然,在接触生产系统之前,您应该首先在另一个系统上尝试源构建和安装步骤......
答案2
您应该./configure
使用以下--sbin-path=
选项运行:
--sbin-path=路径— 设置 nginx 可执行文件的名称。该名称仅在安装期间使用。默认情况下,该文件名为
prefix/sbin/nginx
.