zoukankan      html  css  js  c++  java
  • (转)自动化管理工具Saltstack之nginx部署

    本文转载自: http://blog.csdn.net/hnhuangyiyang/article/details/50414284#t0

    本文会根据原文作实验操作,所以会有少量的更改,但以原文为主。

    state文件列表

    [root@cong-33 nginx]# pwd
    /srv/salt/nginx
    [root@cong-33 nginx]# ll
    total 16
    -rw-r--r--. 1 root root  690 Nov 24 15:09 conf.sls
    -rw-r--r--. 1 root root   58 Nov 24 14:51 init.sls
    -rw-r--r--. 1 root root 1309 Nov 24 16:27 install.sls
    -rw-r--r--. 1 root root  372 Nov 24 16:23 vhost.sls
    [root@cong-33 nginx]#

    文件列表

    [root@cong-33 nginx]# ll /srv/salt/file/nginx/
    total 972
    -rw-r--r--. 1 root root   2819 Nov 24 14:54 nginx
    -rw-r--r--. 1 root root 981687 Nov 24 14:14 nginx-1.12.2.tar.gz
    -rw-r--r--. 1 root root   1743 Nov 24 14:22 nginx.conf
    -rw-r--r--. 1 root root    387 Nov 24 16:30 vhost.conf
    [root@cong-33 nginx]# 

    nginx的init.sls入口文件内容

    [root@cong-33 nginx]# pwd
    /srv/salt/nginx
    [root@cong-33 nginx]# cat init.sls 
    include:
      - nginx.install
      - nginx.conf
      - nginx.vhost
    [root@cong-33 nginx]#

    install.sls:

    [root@cong-33 nginx]# cat install.sls 
    nginx_cp_tar_file:
      file.managed:
        - name: /usr/local/src/nginx-1.12.2.tar.gz
        - unless: test -e /usr/local/src/nginx/nginx-1.12.2.tar.gz
        - user: root
        - group: root
        - makedirs: True
        - source: salt://file/nginx/nginx-1.12.2.tar.gz
    
    nginx_extract:
      cmd.run:
        - cwd: /usr/local/src
        - names:
          - tar zxf nginx-1.12.2.tar.gz
        - unless: test -d /usr/local/src/nginx-1.12.2
        - require:
          - file: nginx_cp_tar_file
    
    nginx_user:
      user.present:
        - name: www
        - createhome: False
        - gid_from_name: True
        - shell: /sbin/nologin
    
    nginx_install_require:
      pkg.installed:
        - pkgs:
          - gcc
          - gcc-c++
          - openssl-devel
          - zlib-devel
          - pcre-devel
    
    nginx_compile:
      cmd.run:
        - cwd: /usr/local/src/nginx-1.12.2
        - names:
          - ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module 
    --with-http_gzip_static_module --with-http_ssl_module --with-http_realip_module --with-pcre
          - make
          - make install
        - require:
          - cmd: nginx_extract
          - pkg: nginx_install_require
        - unless: test -d /usr/local/nginx
    create_dir:
      cmd.run:
        - names:
          - mkdir -p /usr/local/nginx/conf/vhost
        - unless: test -d /usr/local/nginx/conf/vhost
        - require:
          - cmd: nginx_compile
    [root@cong-33 nginx]#

    conf.sls:

    [root@cong-33 nginx]# cat conf.sls 
    include:
      - nginx.install
    
    {% set nginx_user = 'www'%}
    
    nginx_conf:
      file.managed:
        - name: /usr/local/nginx/conf/nginx.conf
        - source: salt://file/nginx/nginx.conf
        - template: jinja
        - defaults:
          nginx_user: {{ nginx_user }}
          cpus: {{ grains['num_cpus'] }}
    
    nginx_service:
      file.managed:
        - name: /etc/init.d/nginx
        - source: salt://file/nginx/nginx
        - user: root
        - mode: 755
      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: /usr/local/nginx/conf/vhost/*.conf
    
    [root@cong-33 nginx]#

    vhost.sls:

    [root@cong-33 nginx]# cat vhost.sls 
    include:
      - nginx.install
    
    {% set hostname = ['www','bbs'] %}
    {% for server_name in hostname %}
    vhost_{{ server_name }}:
      file.managed:
        - name: /usr/local/nginx/conf/vhost/{{ server_name }}.conf
        - source: salt://file/nginx/vhost.conf
        - template: jinja
        - defaults:
           server_name: {{ server_name }}
        - watch_in:
           service: nginx
    
    {% endfor %}
    [root@cong-33 nginx]#

    nginx主配置文件:

    [root@cong-33 nginx]# cat /srv/salt/file/nginx/nginx.conf 
    
    user  {{ nginx_user }};
    worker_processes  {{ cpus }};
    
    worker_rlimit_nofile 65535;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        use epoll;
        worker_connections  65535;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        tcp_nopush     on;
    
        keepalive_timeout  65;
    
        gzip  on;
    
        server {
            listen       80;
            server_name  localhost;
            root   /var/www/zabbix;
    
            #charset koi8-r;
    
            access_log  logs/localhost.access.log  main;
    
            location / {
                try_files $uri $uri/ =404;
                index  index.php index.html index.htm;
            }
            
            location /nginx_status {
                stub_status on;
                access_log off;
            }
    
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            location ~ ^/(status|ping)$
            {
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm/php-fpm.socket;
                fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
            }
    
            location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass   unix:/var/run/php-fpm/php-fpm.socket;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    
        }
        
        include conf/vhost/*.conf;
    
    }
    [root@cong-33 nginx]# 

    nginx虚拟机配置文件:

    [root@cong-33 nginx]# cat /srv/salt/file/nginx/vhost.conf 
    server {
        listen 80;
        server_name {{ server_name }}.cong.com;
        index index.html index.htm;
        root /var/www/localhost;
    
        location /status {
            stub_status on;
        }
    
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${
            expires 3d;       
     
        }
    
        location ~ .*.(js|css)?${
             expires 1d;
        } 
    
        access_log /logs/{{ server_name }}-access.log main;
    
    }
    [root@cong-33 nginx]#

    nginx的启动脚本:

    [root@cong-33 nginx]# cat /srv/salt/file/nginx/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/nginx/sbin/nginx"  
    prog=$(basename $nginx)  
      
    NGINX_CONF_FILE="/usr/local/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@cong-33 nginx]#
  • 相关阅读:
    IDEA Tomcat控制台乱码
    使用Vue写一个登录页面
    vue如何新建一个项目并使用webstorm运行
    关于无线充电的三大标准和四种实现方式的介绍
    使用aria2搭建离线下载服务器
    OnPaint和OnDraw的区别
    PE文件中的DllCharacteristics属性
    ACM/IOI 历年国家集训队论文集和论文算法分类整理
    安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安
    堆栈—冲刺十三模拟赛 外星密码
  • 原文地址:https://www.cnblogs.com/LYCong/p/7891432.html
Copyright © 2011-2022 走看看