利用saltstack管理工具部署nginx

部署nginx

再重新打开一个虚拟机server3并配置好yum源(添加salt)

[root@server3 ~]# yum install -y salt-minion
[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# vim minion
####################
 16 master: 172.25.52.1

[root@server3 salt]# /etc/init.d/salt-minion start
Starting salt-minion:root:server3 daemon: OK
[root@server1 ~]# salt-key -L
Accepted Keys:
server2
Denied Keys:
Unaccepted Keys:
server3
Rejected Keys:
[root@server1 ~]# salt-key -a server3
The following keys are going to be accepted:
Unaccepted Keys:
server3
Proceed? [n/Y] Y
Key for minion server3 accepted.
##用命令的方式直接配置nginx
[root@foundation52 Desktop]# scp nginx-1.14.0.tar.gz server3:/mnt/
root@server3's password: 
nginx-1.14.0.tar.gz                          100%  992KB 992.5KB/s   00:00  

[root@server3 mnt]# ls
nginx-1.14.0.tar.gz
[root@server3 mnt]# tar zxf nginx-1.14.0.tar.gz 
[root@server3 mnt]# ls
nginx-1.14.0  nginx-1.14.0.tar.gz
[root@server3 mnt]# cd nginx-1.14.0
[root@server3 nginx-1.14.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@server3 nginx-1.14.0]# vim src/core/nginx.h 

这里写图片描述

[root@server3 nginx-1.14.0]# sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx"/g' src/core/nginx.h
[root@server3 nginx-1.14.0]# vim src/core/nginx.h 

这里写图片描述

[root@server3 nginx-1.14.0]# vim auto/cc/gcc 

这里写图片描述

[root@server3 nginx-1.14.0]# sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
[root@server3 nginx-1.14.0]# vim auto/cc/gcc 

这里写图片描述

[root@server1 salt]# mkdir nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# ls
[root@server1 nginx]# pwd
/srv/salt/nginx
##命令的方式
[root@server1 nginx]# vim install.sls
#####################
  1 nginx-install:     ##安装软件包(解决依赖性)   
  2   pkg.installed:
  3     - pkg:
  4       - pcre-devel
  5       - openssl-devel
  6       - gcc
  7 
  8   file.managed:   ##文件
  9     - name: /mnt/nginx-1.14.0.tar.gz
 10     - source: salt://nginx/files/nginx-1.14.0.tar.gz
 11 
 12   cmd.run:       ##run方法 用于直接执行命令
 ## &> /dev/null表示将输出内容导入到/dev/null里
 ## 配置nginx文件以及源码编译
 13     - name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 &&  s    ed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGI    NX_VER          "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAG    S -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/loca    l/nginx --with-http_ssl_module --with-http_stub_status_module --with-thread    s --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev    /null

这里写图片描述

[root@server1 nginx]# ls
install.sls
[root@server1 nginx]# mkdir files
[root@server1 nginx]# cd files/
[root@server1 files]# ls
[root@server1 files]# pwd
/srv/salt/nginx/files

[root@foundation52 Desktop]# scp nginx-1.14.0.tar.gz server1:/srv/salt/nginx/files 
root@server1's password: 
nginx-1.14.0.tar.gz                             100%  992KB 992.5KB/s   00:00   

[root@server1 files]# ls
nginx-1.14.0.tar.gz

[root@server1 nginx]# salt server3 state.sls nginx.install
server3:
----------
          ID: nginx-install
    Function: pkg.installed
      Result: True
     Comment: All specified packages are already installed
     Started: 13:34:53.028643
    Duration: 422.918 ms
     Changes:   
----------
          ID: nginx-install
    Function: file.managed
        Name: /mnt/nginx-1.14.0.tar.gz
      Result: True
     Comment: File /mnt/nginx-1.14.0.tar.gz is in the correct state
     Started: 13:34:53.454075
    Duration: 71.122 ms
     Changes:   
----------
          ID: nginx-install
    Function: cmd.run
        Name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 &&  sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
      Result: True
     Comment: Command "cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 &&  sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null" run
     Started: 13:34:53.526058
    Duration: 27499.581 ms
     Changes:   
              ----------
              pid:
                  3298
              retcode:
                  0
              stderr:
              stdout:

Summary for server3
------------
Succeeded: 3 (changed=1)
Failed:    0
------------
Total states run:     3
Total run time:  27.994 s
##测试;
##在推送过程中查看到正在编译
[root@server3 mnt]# ps ax
  PID TTY      STAT   TIME COMMAND
  ...................
 5531 ?        S      0:00 make
 5532 ?        S      0:00 make -f objs/Makefile
 5655 ?        S      0:00 cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused
 5656 ?        R      0:00 /usr/libexec/gcc/x86_64-redhat-linux/4.4.7/cc1 -qui
 5657 ?        S      0:00 as -Qy -o objs/src/event/ngx_event_pipe.o -
##推送完成后查看到编译完成
 [root@server3 mnt]# ps ax
   PID TTY      STAT   TIME COMMAND
  ...................
 1372 ?        Ss     0:00 sshd: root@pts/0 
 1374 pts/0    Ss     0:00 -bash
 1721 ?        Sl     0:04 /usr/bin/python2.6 /usr/bin/salt-minion -c /etc/sal
 1722 ?        S      0:00 /usr/bin/python2.6 /usr/bin/salt-minion -c /etc/sal
 1929 ?        Ss     0:00 /usr/sbin/anacron -s
 5973 pts/0    R+     0:00 ps ax
##启动服务
[root@server1 nginx]# vim service.sls
#####################
  1 include:        ##调用nginx目录下的install.sls脚本
  2   - nginx.install
  3 
  4 nginx-service:  ##开启服务
  5   cmd.run:
  6     - name: /usr/local/nginx/sbin/nginx
  ##  creates 用于判断nginx是否完成编译 如果已经编译过就不再重新编译
  7     - creates: /usr/local/nginx/logs/nginx.pid  

这里写图片描述

##推送给server3
[root@server1 nginx]# salt server3 state.sls nginx.service
测试:
##查看到nginx的默认端口为80 说明nginx成功启动
[root@server3 logs]# netstat -antpl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      8658/nginx          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      907/sshd            
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      984/master          
tcp        0      0 172.25.52.3:58079           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:58082           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:58078           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:45539           172.25.52.1:4505            ESTABLISHED 1721/python2.6      
tcp        0      0 172.25.52.3:58077           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:58080           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:22              172.25.52.250:50736         ESTABLISHED 1372/sshd           
tcp        0      0 172.25.52.3:58081           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 172.25.52.3:58083           172.25.52.1:4506            TIME_WAIT   -                   
tcp        0      0 :::22                       :::*                        LISTEN      907/sshd            
tcp        0      0 ::1:25                      :::*                        LISTEN      984/master     
[root@server3 conf]# scp nginx.conf server1:/srv/salt/nginx/files
root@server1's password: 
westos
Permission denied, please try again.
root@server1's password: 
nginx.conf                                  100% 2656     2.6KB/s   00:00    
[root@server3 conf]# pwd
/usr/local/nginx/conf
##发送nginx脚本
[root@foundation52 Desktop]# scp nginx server1:/srv/salt/nginx/files
root@server1's password: 
nginx                                       100% 3136     3.1KB/s   00:00 

[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# ls
files  install.sls  service.sls
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx  nginx-1.14.0.tar.gz  nginx.conf
[root@server1 files]# cd ..
##脚本的方式
[root@server1 nginx]# vim service.sls
#####################
  1 include:
  2   - nginx.install
  3 
  4 /usr/local/nginx/conf/nginx.conf:
  5   file.managed:
  6     - source: salt://nginx/files/nginx.conf
  7 
  8 nginx-service:
  9   file.managed:
 10     - name: /etc/init.d/nginx
 11     - source: salt://nginx/files/nginx
 12     - mode: 755
 13   service.running:
 14     - name: nginx
 15     - reload: True
 16     - watch:
 17       - file: /usr/local/nginx/conf/nginx.conf

这里写图片描述

##推送
[root@server1 nginx]# salt server3 state.sls nginx.service
测试:
##在推送过程中查看到正在编译(前提是之前未编译过)
[root@server3 conf]# ps ax
  PID TTY      STAT   TIME COMMAND
10934 ?        S      0:00 make
10935 ?        S      0:00 make -f objs/Makefile
11262 ?        S      0:00 cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused
11264 ?        R      0:00 /usr/libexec/gcc/x86_64-redhat-linux/4.4.7/cc1 -qui
11266 ?        S      0:00 as -Qy -o objs/src/http/modules/ngx_http_limit_conn
11269 pts/0    R+     0:00 ps ax
[root@server3 nginx]# /usr/local/nginx/sbin/nginx -s stop
##重新推送
[root@server1 nginx]# salt server3 state.sls nginx.service
##测试:
##查看到nginx进程
[root@server3 nginx]# ps ax
  PID TTY      STAT   TIME COMMAND
14079 ?        Ss     0:00 nginx: master process /usr/local/nginx/sbin/nginx -
14082 ?        S      0:00 nginx: worker process                             
14097 pts/0    R+     0:00 ps ax
##更改工作进程数为2
[root@server1 nginx]# vim files/nginx.conf 
#####################
3 worker_processes  2;

[root@server1 nginx]# salt server3 state.sls nginx.service
##测试:
##查看到worker数为2
[root@server3 nginx]# ps ax
  PID TTY      STAT   TIME COMMAND
16797 ?        S      0:00 nginx: worker process                         
16798 ?        S      0:00 nginx: worker process                         
16801 pts/0    R+     0:00 ps ax
##添加用户,组
[root@server1 nginx]# vim files/nginx.conf 
#####################
 2 user  nginx nginx;

[root@server1 nginx]# salt server3 state.sls nginx.service

[root@server1 nginx]# cd ..
[root@server1 salt]# ls
httpd  nginx
[root@server1 salt]# mkdir users
[root@server1 salt]# ls
httpd  nginx  users
[root@server1 salt]# cd users/
[root@server1 users]# ls
[root@server1 users]# vim nginx.sls
####################
 1 nginx-group:      ##定义组
  2   group.present:
  3     - name: nginx
  4     - gid: 800
  5 
  6 nginx-user:      ##定义用户
  7   user.present:
  8     - name: nginx
  9     - uid: 800
 10     - gid: 800
 11     - shell: /sbin/nologin
 12     - createhome: False
 13     - home: /usr/local/nginx

这里写图片描述

[root@server1 users]# cd ..
[root@server1 salt]# cd nginx/
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# vim service.sls 
#####################
  1 include:
  2   - users.nginx   ##调用user目录里的nginx脚本
  3   - nginx.install   
  4 
  5 /usr/local/nginx/conf/nginx.conf:
  6   file.managed:
  7     - source: salt://nginx/files/nginx.conf
  8 
  9 nginx-service:
 10   file.managed:
 11     - name: /etc/init.d/nginx
 12     - source: salt://nginx/files/nginx
 13     - mode: 755
 14   service.running:
 15     - name: nginx
 16     - reload: True
 17     - watch:
 18       - file: /usr/local/nginx/conf/nginx.conf
 19     - creates: /usr/local/nginx

这里写图片描述

[root@server1 nginx]# salt server3 state.sls nginx.service
测试:
[root@server3 nginx]# id nginx
uid=800(nginx) gid=800(nginx) groups=800(nginx)
[root@server1 nginx]# cd ..
[root@server1 salt]# mkdir pkgs
[root@server1 salt]# cd pkgs/
[root@server1 pkgs]# ls
[root@server1 pkgs]# vim make.sls
###################
  1 make-gcc:       ##安装软件包
  2   pkg.installed:
  3     - pkgs:
  4       - pcre-devel
  5       - openssl-devel
  6       - gcc

这里写图片描述

[root@server1 pkgs]# ls
make.sls
[root@server1 pkgs]# cd ..
[root@server1 salt]# cd nginx/
[root@server1 nginx]# ls
files  install.sls  service.sls
[root@server1 nginx]# vim install.sls
#################### 
  1 include:
  2   - pkgs.make   ##调用pkgs目录下的make脚本
  3 
  4 nginx-install:
  5   file.managed:
  6     - name: /mnt/nginx-1.14.0.tar.gz
  7     - source: salt://nginx/files/nginx-1.14.0.tar.gz
  8 
  9   cmd.run:
 10     - name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0     &&  sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#    define NGINX_VER          "nginx"/g' src/core/nginx.h && sed -i.bak 's    /CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configur    e --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_st    atus_module --with-threads --with-file-aio &> /dev/null && make &> /de    v/null && make install &> /dev/null
 11     - creates: /usr/local/nginx

这里写图片描述

##不报错即可
[root@server1 nginx]# salt server3 state.sls nginx.service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值