1. 目錄結構

[root@qing salt]# tree /srv/salt/nginx/

/srv/salt/nginx/

+-- config.sls

+-- files

| ? +-- nginx

| ? +-- nginx-1.0.15.tar.gz

| ? +-- nginx.conf

| ? +-- nginx_log_cut.sh

| ? +-- nginx-upstream-jvm-route-0.1.tar.gz

+-- init.sls

+-- install.sls


1 directory, 8 files


2.?

[root@qing nginx]# cat init.sls

include:

? - nginx.install

? - nginx.conf

? - nginx.vhost


[root@qing nginx]# cat config.sls?

nginx_conf:

? file.managed:

? ? - name: /usr/local/webserver/nginx/conf/nginx.conf

? ? - source: salt://nginx/files/nginx.conf

? ? - template: jinja

nginx_script:

? file.managed:

? ? - name: /etc/init.d/nginx

? ? - source: salt://nginx/files/nginx

? ? - mode: 755

? ? - user: root?

? cmd.run:

? ? - names:

? ? ? - /sbin/chkconfig --add nginx

? ? ? - /sbin/chkconfig ?nginx on

? ? - unless: /sbin/chkconfig --list nginx

? service.running:

? ? - name: nginx

? ? - enable: True

? ? - reload: True

? ? - watch:

? ? ? - file: nginx_conf

nginx_log_cut: ?

? file.managed:

? ? - name: /usr/local/webserver/nginx/sbin/nginx_log_cut.sh

? ? - source: salt://nginx/files/nginx_log_cut.sh

? cron.present:

? ? - name: /usr/local/webserver/nginx/sbin/nginx_log_cut.sh

? ? - user: root

? ? - minute: 59

? ? - hour: 23?

? ? - require:?


[root@qing nginx]# cat install.sls?

nginx_trans:

? file.managed:

? ? - source: salt://nginx/files/nginx-1.0.15.tar.gz

? ? - name: /tmp/nginx-1.0.15.tar.gz

? ? - unless: test -e /tmp/nginx-1.0.15.tar.gz


nginx_extract:

? cmd.run:

? ? - cwd: /tmp

? ? - names:?

? ? ? - tar zxpf nginx-1.0.15.tar.gz

? ? - require:

? ? ? - file: nginx_trans

nginx_pkgs:

? pkg.installed:

? ? - pkgs:

? ? ? ?- gcc

? ? ? ?- openssl-devel

? ? ? ?- pcre-devel

? ? ? ?- zlib-devel

? ? ? ?- libxml2?

? ? ? ?- libxml2-devel

? ? ? ?- libxslt-devel

nginx_user:

? user.present:

? ? - name: nginx

? ? - uid: 1502

? ? - createhome: False

? ? - shell: /sbin/nologin

nginx_compile:

? cmd.run:

? ? - cwd: /tmp/nginx-1.0.15

? ? - names:

? ? ? - mkdir -p /usr/local/webserver/

? ? ? - ./configure --user=nginx --group=nginx --prefix=/usr/local/webserver/nginx --with-pcre --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module --with-mail --with-mail_ssl_module --with-http_realip_module --with-http_xslt_module --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl

? ? ? - make

? ? ? - make install

? ? - unless: test -d /usr/local/webserver/nginx


[root@qing nginx]# ll files/

total 700

-rw-r--r-- 1 root root ? 2588 Sep ?7 00:46 nginx

-rw-r--r-- 1 root root 693025 Apr 12 ?2012 nginx-1.0.15.tar.gz

-rw-r--r-- 1 root root ? 1529 Sep ?7 01:28 nginx.conf

-rw-r--r-- 1 root root ? ?568 Sep ?7 01:40 nginx_log_cut.sh

-rw-r--r-- 1 root root ? 5807 Jul ?1 ?2010 nginx-upstream-jvm-route-0.1.tar.gz

[root@qing nginx]#?


[root@qing nginx]# cat files/nginx

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: ? - 85 15?

# description: ?Nginx is an HTTP(S) server, HTTP(S) reverse \

# ? ? ? ? ? ? ? proxy and IMAP/POP3 proxy server

# processname: nginx

# config: ? ? ?/usr/local/nginx/conf/nginx.conf

# pidfile: ? ? /usr/local/nginx/logs/nginx.pid

?

# Source function library.

. /etc/rc.d/init.d/functions

?

# Source networking configuration.

. /etc/sysconfig/network

?

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

?

nginx="/usr/local/webserver/nginx/sbin/nginx"

prog=$(basename $nginx)

?

NGINX_CONF_FILE="/usr/local/webserver/nginx/conf/nginx.conf"

?

?

lockfile=/var/lock/subsys/nginx

?

make_dirs() {

? ?# make required directories

? ?user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

? ?if [ -z "`grep $user /etc/passwd`" ]; then

? ? ? ?useradd -M -s /bin/nologin $user

? ?fi

? ?options=`$nginx -V 2>&1 | grep 'configure arguments:'`

? ?for opt in $options; do

? ? ? ?if [ `echo $opt | grep '.*-temp-path'` ]; then

? ? ? ? ? ?value=`echo $opt | cut -d "=" -f 2`

? ? ? ? ? ?if [ ! -d "$value" ]; then

? ? ? ? ? ? ? ?# echo "creating" $value

? ? ? ? ? ? ? ?mkdir -p $value && chown -R $user $value

? ? ? ? ? ?fi

? ? ? ?fi

? ?done

}

?

start() {

? ? [ -x $nginx ] || exit 5

? ? [ -f $NGINX_CONF_FILE ] || exit 6

? ? make_dirs

? ? echo -n $"Starting $prog: "

? ? daemon $nginx -c $NGINX_CONF_FILE

? ? retval=$?

? ? echo

? ? [ $retval -eq 0 ] && touch $lockfile

? ? return $retval

}

?

stop() {

? ? echo -n $"Stopping $prog: "

? ? killproc $prog -QUIT

? ? retval=$?

? ? echo

? ? [ $retval -eq 0 ] && rm -f $lockfile

? ? return $retval

}

?

restart() {

? ? configtest || return $?

? ? stop

? ? sleep 1

? ? start

}

?

reload() {

? ? configtest || return $?

? ? echo -n $"Reloading $prog: "

? ? killproc $nginx -HUP

? ? RETVAL=$?

? ? echo

}

?

force_reload() {

? ? restart

}

?

configtest() {

? $nginx -t -c $NGINX_CONF_FILE

}

?

rh_status() {

? ? status $prog

}

?

rh_status_q() {

? ? rh_status >/dev/null 2>&1

}

?

case "$1" in

? ? start)

? ? ? ? rh_status_q && exit 0

? ? ? ? $1

? ? ? ? ;;

? ? stop)

? ? ? ? rh_status_q || exit 0

? ? ? ? $1

? ? ? ? ;;

? ? restart|configtest)

? ? ? ? $1

? ? ? ? ;;

? ? reload)

? ? ? ? rh_status_q || exit 7

? ? ? ? $1

? ? ? ? ;;

? ? force-reload)

? ? ? ? force_reload

? ? ? ? ;;

? ? status)

? ? ? ? rh_status

? ? ? ? ;;

? ? condrestart|try-restart)

? ? ? ? rh_status_q || exit 0

? ? ? ? ? ? ;;

? ? *)

? ? ? ? echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

? ? ? ? exit 2

esac



[root@qing nginx]# cat files/nginx_log_cut.sh?

#!/bin/bash

logs_path="/usr/local/webserver/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/

mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log

kill -USR1 `cat /usr/local/webserver/nginx/logs/nginx.pid`

cd ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")

tar zcpf access_$(date -d "yesterday" +"%Y%m%d").log.tar.gz access_$(date -d "yesterday" +"%Y%m%d").log

rm -f access_$(date -d "yesterday" +"%Y%m%d").log

exit