使用 repos 与 compile:如何使用编译后的 Nginx 替换 repo 中的 Nginx?

使用 repos 与 compile:如何使用编译后的 Nginx 替换 repo 中的 Nginx?

以前我用过Kura 的 PPA在我的 VPS 上安装 Nginx+Pagespeed。我想将其更新到最新版本,但 Kura 的最新软件包不是那么新,我正在考虑自己下载它们(Nginx + Pagespeed),编译它们并使用它们,而不是使用 PPA 提供的软件包。

我想知道正确的做法是什么。我是否必须删除 Kura 软件包,然后编译并安装最新的官方软件包,或者我是否可以只编译并安装这些软件包,然后它们将替代 PPA 软件包?

答案1

基本上,重新编译源代码就像本文概述的那样简单github 上的代码片段,主要是为了确保路径对于 Ubuntu 来说是正确的。

这里简要概述了哪些路径对于 ubuntu 很重要:

./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=www-data \
--group=www-data \

此外,正如 SO 上的类似问题所述(如何用源代码编译的版本替换 nginx 的软件包安装?) 描述称,apt-get autoremove nginx(或任何您安装的版本)仍将保留配置文件,您稍后可以使用新编译的版本重新使用这些文件。

在 Ubuntu 14.04 上亲自测试之后,我可以确认这些步骤完全有效,停机时间仅为几秒钟:

  1. 跑过compile-nginx.sh 脚本来自这个 github gist并创建一个包含最新稳定 nginx(1.8.0)的包。

  2. 从系统中卸载 nginx 软件包

    apt-get 自动删除 nginx nginx-common nginx-custom

  3. 安装新包

    dpkg -i dpkg -i /home//sources/nginx-1.8.0/nginx_1.8.0-1_amd64.deb

  4. 重启 nginx

    sudo 服务 nginx 重启

在此阶段,旧的 nginx 进程应该仍在 RAM 中,因此服务应该拒绝启动(端口已被占用)。因此,您可以确保其他一切都正确无误(我必须创建目录 /var/cache/nginx/client_temp ) - 如果一切正常,请执行

> sudo killall nginx
> sudo service nginx restart
  1. 没有第 5 步,您的网站应该可以重新启动并运行 :)

相关内容