我创建了一个能够自动化构建Nginx源代码的Itamae插件,只需简单安装nginx-build

如果只是正常使用nginx,只需要安装每个发行版提供的软件包即可。但是如果想要使用第三方模块之类的东西,就需要进行构建。非常麻烦。

因为有一个叫做nginx-build的神奇工具可以自动化那么麻烦的构建过程,所以我制作了一个可以引入nginx-build的Itamae插件。如果您正在使用Itamae,请试用一下这个插件。

    zaru/itamae-plugin-recipe-nginx_build

nginx-build是什么?

    nginx-build

nginx-build是由MerCari的@cubicdaiya设计的一个自动化构建nginx的工具。它不仅以二进制形式发布,还支持除Linux外的Mac Homebrew。

使用方法

nginx-build 的使用方法非常简单。只需下载二进制文件并安装即可立即使用。

$ nginx-build -d work -v 1.8.0

使用此方法可以构建v1.8.0的nginx。只有最后的make install需要手动执行。

$ cd work/1.8.0/nginx-1.8.0
$ sudo make install

配置选项

您可以指定配置选项。

$ nginx-build -d work -v 1.8.0 -c configure.sh
#!/bin/sh

./configure \
  --user=nginx \
  --group=nginx \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --pid-path=/var/run/nginx.pid \
  --with-http_ssl_module

第三方模块

如果指定第三方模块,它将自动完成从下载到集成的全部过程。这太厉害了。

$ nginx-build -d work -v 1.8.0 -m modules3rd.ini
[ngx_cache_purge]
form=git
url=https://github.com/FRiCKLE/ngx_cache_purge.git
rev=2.3

这是一个了不起的工具,支持构建OpenResty和Tengine等,甚至可以覆盖到细微的细节。谢谢你。如果想了解更多细节,请阅读@cubicdaiya的解说文章。

    • nginx-buildでnginxをビルドしよう

 

    nginx-build〜nginxのビルドプロセスを自動化〜

板前插件

这是一个用于将我所介绍的nginx-build引入并在Itamae中自动化的插件。

    zaru/itamae-plugin-recipe-nginx_build

使用方法

gem 'itamae-plugin-recipe-nginx_build'
include_recipe "nginx_build"
include_recipe "nginx_build::install"

以上操作即可安装默认版本为v1.8.0的nginx(可以通过后续的选项进行详细指定)。

你能做些什么?

    • nginxに必要なパッケージのインストール

 

    • nginx-buildのインストール

 

    • nginx v1.8.0の make install

 

    • nginxの起動スクリプト設置

 

    nginxの起動&自動起動設定

需进行以下五项操作。由于不需要为每个Nginx主机设置独立的配置文件,因此需要另外编写一个脚本。

只需要一种选择:请用中文将以下内容转述一遍:

选项

在Itamae节点文件中,您可以详细指定。由于所有内容都是可选的,如果没有指定,将使用以下默认值(除了modules / modules3rds)。

nginx_build:
  platform: linux ( or darwin )
  version: 0.6.4
  bin: /usr/local/bin/
  nginx_version: 1.8.0
  nginx_user: nginx
  nginx_group: nginx
  nginx_sbin: /usr/sbin/nginx
  nginx_conf: /etc/nginx/nginx.conf
  nginx_pid: /var/run/nginx.pid
  modules:
    - http_ssl_module
  modules3rds:
    -
      name: ngx_cache_purge
      form: git
      url: https://github.com/FRiCKLE/ngx_cache_purge.git
      rev: 2.3
  configure_path: /usr/local/nginx_build/configure.sh
  modules3rd_path: /usr/local/nginx_build/modules3rd.ini

实际应用方式

因為只有最基本的設定文件,所以每個服務器都需要另外用食譜寫上所需的設定文件。以下是我實際使用的食譜的一部分。

include_recipe "nginx_build"
include_recipe "nginx_build::install"

directory "/etc/nginx/conf.d/"
template "/etc/nginx/conf.d/virtual.conf" do
  owner "root"
  group "root"
  mode "644"
  source "./#{node[:role]}/templates/etc/nginx/conf.d/virtual.conf.erb"
  notifies :restart, "service[nginx]"
end

directory "/var/log/nginx/"
template "/etc/logrotate.d/nginx" do
  source "./#{node[:role]}/templates/etc/logrotate.d/nginx.erb"
end

我认为可能会有一些插件无法运行的情况,如果有任何问题,请投放 issue 或 Pull Request 给我,谢谢。

由于可能会遇到插件无法运行的情况,如果有问题,请随时反馈 issue 或 Pull Request 给我,谢谢。

如果您的环境中遇到插件无法运行的情况,请将问题报告为 issue 或 Pull Request,我将非常感激。

广告
将在 10 秒后关闭
bannerAds