我创建了一个能够自动化构建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,我将非常感激。