瀏覽代碼

Merge pull request #4 from auser/master

Added the ability to build from source or package, with luajit2 and openresty
susefix
Seth House 11 年之前
父節點
當前提交
905c1eff2f
共有 13 個文件被更改,包括 380 次插入109 次删除
  1. +2
    -0
      README.rst
  2. +72
    -0
      common.sls
  3. +9
    -0
      init.sls
  4. +16
    -0
      luajit2.sls
  5. +0
    -107
      nginx/init.sls
  6. +31
    -0
      openresty.sls
  7. +60
    -0
      package.sls
  8. +8
    -0
      pillar.example
  9. +180
    -0
      source.sls
  10. +0
    -0
      templates/config.jinja
  11. +1
    -1
      templates/upstart-logger.jinja
  12. +0
    -0
      templates/upstart.jinja
  13. +1
    -1
      users.sls

+ 2
- 0
README.rst 查看文件

@@ -1,2 +1,4 @@
nginx
=====

Install `nginx` either by source or by package.

+ 72
- 0
common.sls 查看文件

@@ -0,0 +1,72 @@
include:
- nrpe

/usr/share/nginx:
file:
- directory

{% for filename in ('default', 'example_ssl') %}
/etc/nginx/conf.d/{{ filename }}.conf:
file.absent
{% endfor %}

{% set logger_types = ('access', 'error') %}

{% for log_type in logger_types %}
/var/log/nginx/{{ log_type }}.log:
file.absent

nginx-logger-{{ log_type }}:
file:
- managed
- name: /etc/init/nginx-logger-{{ log_type }}.conf
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/templates/upstart_logger.jinja
- context:
type: {{ log_type }}
service:
- running
- enable: True
- require:
- file: nginx-logger-{{ log_type }}
- require_in:
- service: nginx
{% endfor %}

/etc/logrotate.d/nginx:
file:
- absent

{% for dir in ['sites-available', 'sites-enabled'] -%}
/etc/nginx/{{ dir }}:
file.directory:
- user: www-data
- group: www-data
- mode: 0755
{% endfor -%}

/etc/nginx:
file.directory:
- user: root
- group: root

/etc/nginx/nginx.conf:
file:
- managed
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/templates/config.jinja
- require:
- file: /etc/nginx

{% for dir in ('sites-enabled', 'sites-available') %}
/etc/nginx/{{ dir }}:
file.directory:
- user: root
- group: root
{% endfor -%}

+ 9
- 0
init.sls 查看文件

@@ -0,0 +1,9 @@
include:
- nginx.common
- nginx.users
{% if pillar.get('nginx', {}).get('install_from_source') %}
- nginx.source
{% else %}
- nginx.package
{% endif -%}


+ 16
- 0
luajit2.sls 查看文件

@@ -0,0 +1,16 @@
{% set nginx = pillar.get('nginx', {}) -%}
{% set home = nginx.get('home', '/var/www') -%}
{% set source = nginx.get('source_root', '/usr/local/src') -%}

get-luajit2:
file.managed:
- name: {{ source }}/luajit.tar.gz
- source: http://luajit.org/download/LuaJIT-2.0.1.tar.gz
- source_hash: sha1=330492aa5366e4e60afeec72f15e44df8a794db5
cmd.wait:
- cwd: {{ nginx_home }}
- name: tar -zxf {{ source }}/luajit.tar.gz -C {{ source }}
- watch:
- file: get-luajit2
- require_in:
- cmd: nginx

+ 0
- 107
nginx/init.sls 查看文件

@@ -1,107 +0,0 @@
include:
- nginx.users

{% for filename in ('default', 'example_ssl') %}
/etc/nginx/conf.d/{{ filename }}.conf:
file.absent
{% endfor %}

/etc/nginx/nginx.conf:
file:
- managed
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/files/config.jinja
- require:
- pkg: nginx

nginx-old-init:
file:
- rename
- name: /usr/share/nginx/init.d
- source: /etc/init.d/nginx
- require:
- pkg: nginx
cmd:
- wait
- name: dpkg-divert --divert /usr/share/nginx/init.d --add /etc/init.d/nginx
- require:
- module: nginx-old-init
- watch:
- file: nginx-old-init
module:
- wait
- name: cmd.run
- cmd: kill `cat /var/run/nginx.pid`
- watch:
- file: nginx-old-init

nginx-old-init-disable:
cmd:
- wait
- name: update-rc.d -f nginx remove
- require:
- module: nginx-old-init
- watch:
- file: nginx-old-init

{% set logger_types = ('access', 'error') %}

{% for log_type in logger_types %}
/var/log/nginx/{{ log_type }}.log:
file.absent

nginx-logger-{{ log_type }}:
file:
- managed
- name: /etc/init/nginx-logger-{{ log_type }}.conf
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/files/upstart-logger.jinja
- context:
type: {{ log_type }}
service:
- running
- enable: True
- require:
- file: nginx-logger-{{ log_type }}
- pkg: nginx
{% endfor %}

/etc/logrotate.d/nginx:
file:
- absent

nginx:
pkg:
- installed
- name: nginx
file:
- managed
- name: /etc/init/nginx.conf
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/files/upstart.jinja
- require:
- pkg: nginx
- file: nginx-old-init
- module: nginx-old-init
service:
- running
- enable: True
- watch:
- file: nginx
- file: /etc/nginx/nginx.conf
- file: /etc/nginx/conf.d/default.conf
- file: /etc/nginx/conf.d/example_ssl.conf
- pkg: nginx
- require:
{% for log_type in logger_types %}
- service: nginx-logger-{{ log_type }}
{% endfor %}

+ 31
- 0
openresty.sls 查看文件

@@ -0,0 +1,31 @@
{% set nginx = pillar.get('nginx', {}) -%}
{% set home = nginx.get('home', '/var/www') -%}
{% set source = nginx.get('source_root', '/usr/local/src') -%}

{% set openresty = nginx.get('openresty', {}) -%}
{% set openresty_version = openresty.get('version', '1.2.7.8') -%}
{% set openresty_checksum = openresty.get('checksum', 'sha1=f8bee501529ffec33f9cabc00ea4ca512a8d7b59') -%}
{% set openresty_package = source + '/openresty-' + openresty_version + '.tar.gz' -%}

get-openresty:
file.managed:
- name: {{ openresty_package }}
- source: http://openresty.org/download/ngx_openresty-{{ openresty_version }}.tar.gz
- source_hash: {{ openresty_checksum }}
cmd.wait:
- cwd: {{ source }}
- name: tar -zxf {{ openresty_package }} -C {{ home }}
- watch:
- file: get-openresty

install_openresty:
cmd.wait:
- cwd: {{ home }}/ngx_openresty-{{ openresty_version }}
- names:
- ./configure --with-luajit \
--with-http_drizzle_module \
--with-http_postgres_module \
--with-http_iconv_module
- make && make install
- watch:
- cmd: get-openresty

+ 60
- 0
package.sls 查看文件

@@ -0,0 +1,60 @@

nginx-old-init:
file:
- rename
- name: /usr/share/nginx/init.d
- source: /etc/init.d/nginx
- require_in:
- file: nginx
cmd:
- wait
- name: dpkg-divert --divert /usr/share/nginx/init.d --add /etc/init.d/nginx
- require:
- module: nginx-old-init
- watch:
- file: nginx-old-init
- require_in:
- file: nginx
module:
- wait
- name: cmd.run
- cmd: kill `cat /var/run/nginx.pid`
- watch:
- file: nginx-old-init
- require_in:
- file: nginx

nginx-old-init-disable:
cmd:
- wait
- name: update-rc.d -f nginx remove
- require:
- module: nginx-old-init
- watch:
- file: nginx-old-init

nginx:
pkg.installed:
- name: nginx
file:
- managed
- name: /etc/init/nginx.conf
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/templates/upstart.jinja
- require:
- pkg: nginx
- file: nginx-old-init
- module: nginx-old-init
service:
- running
- enable: True
- restart: True
- watch:
- file: nginx
- file: /etc/nginx/nginx.conf
- file: /etc/nginx/conf.d/default.conf
- file: /etc/nginx/conf.d/example_ssl.conf
- pkg: nginx

+ 8
- 0
pillar.example 查看文件

@@ -0,0 +1,8 @@
nginx:
install_from_source: True
with_luajit: False
with_openresty: True
modules:
headers-more:
source: http://github.com/agentzh/headers-more-nginx-module/tarball/v0.21
source_hash: sha1=DAFJAKSDFJAKDFJ

+ 180
- 0
source.sls 查看文件

@@ -0,0 +1,180 @@
include:
- nginx.common

{% set nginx = pillar.get('nginx', {}) -%}
{% set version = nginx.get('version', '1.5.2') -%}
{% set checksum = nginx.get('checksum', 'sha1=3546be28a72251f8823ab6be6a1180d300d06f76') -%}
{% set home = nginx.get('home', '/var/www') -%}
{% set source = nginx.get('source_root', '/usr/local/src') -%}

{% set nginx_package = source + '/nginx-' + version + '.tar.gz' -%}
{% set nginx_home = home + "/nginx-" + version -%}
{% set nginx_modules_dir = source + "/nginx-modules" -%}

{% if nginx['with_luajit'] -%}
include:
- nginx.luajit2
{% endif -%}

{% if nginx['with_openresty'] -%}
include:
- nginx.openresty
{% endif -%}

nginx_group:
group.present:
- name: www-data

nginx_user:
file.directory:
- name: {{ home }}
- user: www-data
- group: www-data
- mode: 0755
- require:
- user: nginx_user
- group: nginx_group
user.present:
- name: www-data
- home: {{ home }}
- groups:
- www-data
- require:
- group: nginx_group

get-nginx:
pkg.installed:
- names:
- libpcre3-dev
- build-essential
- libssl-dev
file.managed:
- name: {{ nginx_package }}
- source: http://nginx.org/download/nginx-{{ version }}.tar.gz
- source_hash: {{ checksum }}
cmd.wait:
- cwd: {{ source }}
- name: tar -zxf {{ nginx_package }} -C {{ home }}
- require:
- file: nginx_user
- pkg: get-nginx
- watch:
- file: get-nginx

{% for name, module in nginx.get('modules', {}) -%}
get-nginx-{{name}}:
file.managed:
- name: {{ nginx_modules_dir }}/{{name}}.tar.gz
- source: {{ module['source'] }}
- source_hash: {{ module['source_hash'] }}
- require:
- file: nginx_user
cmd.wait:
- cwd: {{ nginx_home }}
- names:
- tar -zxf {{ nginx_modules_dir }}/{{name}}.tar.gz -C {{ nginx_modules_dir }}/{{name}}
- watch:
- file: get-nginx
- require_in:
- cmd: make-nginx
{% endfor -%}

{% if install_luajit -%}

{% endif -%}

get-ngx_devel_kit:
file.managed:
- name: {{ source }}/ngx_devel_kit.tar.gz
- source: https://github.com/simpl/ngx_devel_kit/archive/v0.2.18.tar.gz
- source_hash: sha1=e21ba642f26047661ada678b21eef001ee2121d8
cmd.wait:
- cwd: {{ nginx_home }}
- name: tar -zxf {{ source }}/ngx_devel_kit.tar.gz -C {{ source }}
- watch:
- file: get-ngx_devel_kit

get-lua-nginx-module:
file.managed:
- name: {{ source }}/lua-nginx-module.tar.gz
- source: https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.3rc1.tar.gz
- source_hash: sha1=49b2fa946517fb2e9b26185d418570e98ff5ff51
cmd.wait:
- cwd: {{ nginx_home }}
- name: tar -zxf {{ source }}/lua-nginx-module.tar.gz -C {{ source }}
- watch:
- file: get-lua-nginx-module

{{ home }}:
file.directory:
- user: www-data
- group: www-data
- makedirs: True
- mode: 0755

{% for dir in ('body', 'proxy', 'fastcgi') -%}
{{ home }}-{{dir}}:
file.directory:
- name: {{ home }}/{{dir}}
- user: www-data
- group: www-data
- mode: 0755
- require:
- file: {{ home }}
- require_in:
- service: nginx
{% endfor -%}

nginx:
cmd.wait:
- cwd: {{ nginx_home }}
- names:
- ./configure --conf-path=/etc/nginx/nginx.conf
--sbin-path=/usr/sbin/nginx
--user=www-data
--group=www-data
--prefix=/usr/local/nginx
--error-log-path=/var/log/nginx/error.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/lock/nginx.lock
--http-log-path=/var/log/nginx/access.log
--with-http_dav_module
--http-client-body-temp-path={{ home }}/body
--http-proxy-temp-path={{ home }}/proxy
--with-http_stub_status_module
--http-fastcgi-temp-path={{ home }}/fastcgi
--with-debug
--with-http_ssl_module
{% for name, module in nginx.get('modules', {}) -%}
--add-module={{nginx_modules_dir}}/{{name}} \
--with-pcre --with-ipv6
{% endfor %}
- make -j2 && make install
- watch:
- cmd: get-nginx
- require:
- cmd: get-nginx
- cmd: get-lua-nginx-module
- cmd: get-ngx_devel_kit
- require_in:
- service: nginx
file.managed:
- name: /etc/init/nginx.conf
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://nginx/templates/upstart.jinja
- require:
- cmd: nginx
service.running:
- enable: True
- watch:
- file: nginx
- file: /etc/nginx/nginx.conf
- file: /etc/nginx/conf.d/default.conf
- file: /etc/nginx/conf.d/example_ssl.conf
- file: nginx
- require:
- cmd: nginx
- file: {{ home }}

nginx/files/config.jinja → templates/config.jinja 查看文件


nginx/files/upstart-logger.jinja → templates/upstart-logger.jinja 查看文件

@@ -1,4 +1,4 @@
# {{ pillar.get('message_do_not_modify') }}
# {{ pillar['message_do_not_modify'] }}
# startup script for Nginx loggers

start on starting nginx

nginx/files/upstart.jinja → templates/upstart.jinja 查看文件


nginx/users.sls → users.sls 查看文件

@@ -16,6 +16,6 @@ nginx_user_{{name}}:
- path: {{ htauth }}
- require:
- pkg: htpasswd
{% endif -%}
{% endfor %}

Loading…
取消
儲存