Browse Source

Merge pull request #4 from auser/master

Added the ability to build from source or package, with luajit2 and openresty
susefix
Seth House 11 years ago
parent
commit
905c1eff2f
13 changed files with 380 additions and 109 deletions
  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 View File

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

Install `nginx` either by source or by package.

+ 72
- 0
common.sls View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File


nginx/files/upstart-logger.jinja → templates/upstart-logger.jinja View File

@@ -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 View File


nginx/users.sls → users.sls View File

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

Loading…
Cancel
Save