saltstack部署nginx

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

1、前期规划准备

nginx安装准备:

  1)安装必要依赖

  2)准备pcre安装包

  2)源码安装pcre

  3)准备nginx安装包

  4)源码安装nginx

nginx配置:

  1)拷贝nginx.conf配置文件

  2)拷贝启停脚本

  3)添加系统服务并设置开机启动

2、部署过程

1)准备安装包

1
2
3
4
5
6
7
[root@salt-master base] # cd /srv/salt/base
[root@salt-master base] # mkdir -p pcre/files
[root@salt-master base] # mkdir -p nginx/files
[root@salt-master base] # cd /srv/salt/base/pcre/files
[root@salt-master base] # wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz
[root@salt-master base] # cd /srv/salt/base/nginx/files
[root@salt-master base] # wget http://nginx.org/download/nginx-1.6.3.tar.gz

2)编写sls文件

1
2
3
4
5
[root@salt-master base] # cd nginx/
[root@salt-master nginx] # vi install.sls 
[root@salt-master nginx] # vi service.sls
[root@salt-master nginx] # cd ../pcre/
[root@salt-master pcre] # vi install.sls

3)测试sls

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
[root@salt-master base] # salt 'salt-minion01.contoso.com' state.sls nginx.service test=True
salt-minion01.contoso.com:
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: zlib-devel
       Result: None
      Comment: The following packages are  set  to be installed /updated : zlib-devel
      Started: 14:41:07.540210
     Duration: 18297.782 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: glibc-devel
       Result: True
      Comment: Package glibc-devel is already installed.
      Started: 14:41:25.838187
     Duration: 0.536 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: gcc
       Result: True
      Comment: Package gcc is already installed.
      Started: 14:41:25.838783
     Duration: 0.294 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: cmake
       Result: True
      Comment: Package cmake is already installed.
      Started: 14:41:25.839133
     Duration: 0.241 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: glibc
       Result: True
      Comment: Package glibc is already installed.
      Started: 14:41:25.839432
     Duration: 0.241 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: zlib
       Result: True
      Comment: Package zlib is already installed.
      Started: 14:41:25.839727
     Duration: 0.305 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: autoconf
       Result: None
      Comment: The following packages are  set  to be installed /updated : autoconf
      Started: 14:41:25.840087
     Duration: 0.281 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name: gcc-c++
       Result: True
      Comment: Package gcc-c++ is already installed.
      Started: 14:41:25.840422
     Duration: 0.239 ms
      Changes:   
----------
           ID: pcre- source - install
     Function: pkg.installed
         Name:  make
       Result: True
      Comment: Package  make  is already installed.
      Started: 14:41:25.840709
     Duration: 0.282 ms
      Changes:   
----------
           ID: pcre- source - install
     Function:  file .managed
         Name:  /opt/tools/pcre-8 .37. tar .gz
       Result: None
      Comment: The  file  /opt/tools/pcre-8 .37. tar .gz is  set  to be changed
      Started: 14:41:25.888753
     Duration: 17.582 ms
      Changes:   
               ----------
               newfile:
                   /opt/tools/pcre-8 .37. tar .gz
----------
           ID: pcre- source - install
     Function: cmd.run
         Name:  cd  /opt/tools/  &&  tar  -zxf pcre-8.37. tar .gz &&  cd  pcre-8.37 && . /configure  --prefix= /usr/local/pcre  &&  make  &&  make  install
       Result: None
      Comment: Command  "cd /opt/tools/ && tar -zxf pcre-8.37.tar.gz && cd pcre-8.37 && ./configure --prefix=/usr/local/pcre && make && make install"  would have been executed
      Started: 14:41:25.910768
     Duration: 10.909 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: zlib-devel
       Result: None
      Comment: The following packages are  set  to be installed /updated : zlib-devel
      Started: 14:41:25.922254
     Duration: 2.483 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: gcc
       Result: True
      Comment: Package gcc is already installed.
      Started: 14:41:25.925010
     Duration: 0.926 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name:  make
       Result: True
      Comment: Package  make  is already installed.
      Started: 14:41:25.926183
     Duration: 0.975 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: zlib
       Result: True
      Comment: Package zlib is already installed.
      Started: 14:41:25.927407
     Duration: 1.276 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: openssl
       Result: True
      Comment: Package openssl is already installed.
      Started: 14:41:25.929287
     Duration: 1.331 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: openssl-devel
       Result: None
      Comment: The following packages are  set  to be installed /updated : openssl-devel
      Started: 14:41:25.930830
     Duration: 1.027 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: automake
       Result: None
      Comment: The following packages are  set  to be installed /updated : automake
      Started: 14:41:25.931943
     Duration: 0.392 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: autoconf
       Result: None
      Comment: The following packages are  set  to be installed /updated : autoconf
      Started: 14:41:25.932402
     Duration: 0.385 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: pkg.installed
         Name: gcc-c++
       Result: True
      Comment: Package gcc-c++ is already installed.
      Started: 14:41:25.932851
     Duration: 0.33 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: group.present
         Name: nginx
       Result: None
      Comment: The following group attributes are  set  to be changed:
               gid: 601
      Started: 14:41:25.934673
     Duration: 0.425 ms
      Changes:   
----------
           ID: nginx- source - install
     Function: user.present
         Name: nginx
       Result: None
      Comment: The following user attributes are  set  to be changed:
               homeDoesNotExist:  /home/nginx
               gid: 601
               fullname: nginx
               uid: 601
      Started: 14:41:25.943129
     Duration: 10.523 ms
      Changes:   
----------
           ID: nginx- source - install
     Function:  file .managed
         Name:  /opt/tools/nginx-1 .6.3. tar .gz
       Result: None
      Comment: The  file  /opt/tools/nginx-1 .6.3. tar .gz is  set  to be changed
      Started: 14:41:25.953761
     Duration: 3.461 ms
      Changes:   
               ----------
               newfile:
                   /opt/tools/nginx-1 .6.3. tar .gz
----------
           ID: nginx- source - install
     Function: cmd.run
         Name:  cd  /opt/tools/  &&  tar  -zxf nginx-1.6.3. tar .gz &&  mkdir  -p  /usr/local/nginx/tmp/ {client,proxy,fcgi} &&  cd  nginx-1.6.3 && . /configure  --prefix= /usr/local/nginx  --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path= /usr/local/nginx/tmp/client/  --http-proxy-temp-path= /usr/local/nginx/tmp/proxy/  --http-fastcgi-temp-path= /usr/local/nginx/tmp/fcgi/  --with-poll_module --with- file -aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path= /usr/local/nginx/uwsgi_temp  --http-scgi-temp-path= /usr/local/nginx/scgi_temp  --with-pcre= /opt/tools/pcre-8 .37 &&  make  &&  make  install  &&  chown  -R nginx:nginx  /usr/local/nginx/
       Result: None
      Comment: Command  "cd /opt/tools/ && tar -zxf nginx-1.6.3.tar.gz && mkdir -p /usr/local/nginx/tmp/{client,proxy,fcgi} && cd nginx-1.6.3 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/opt/tools/pcre-8.37 && make && make install && chown -R nginx:nginx /usr/local/nginx/"  would have been executed
      Started: 14:41:25.958142
     Duration: 4.665 ms
      Changes:   
----------
           ID: nginx-init
     Function:  file .managed
         Name:  /etc/init .d /nginx
       Result: None
      Comment: The  file  /etc/init .d /nginx  is  set  to be changed
      Started: 14:41:25.963238
     Duration: 3.005 ms
      Changes:   
               ----------
               newfile:
                   /etc/init .d /nginx
----------
           ID: nginx-init
     Function: cmd.run
         Name: chkconfig --add nginx
       Result: None
      Comment: Command  "chkconfig --add nginx"  would have been executed
      Started: 14:41:25.966786
     Duration: 293.959 ms
      Changes:   
----------
           ID:  /usr/local/nginx/conf/nginx .conf
     Function:  file .managed
       Result: None
      Comment: The  file  /usr/local/nginx/conf/nginx .conf is  set  to be changed
      Started: 14:41:26.261344
     Duration: 2.984 ms
      Changes:   
               ----------
               newfile:
                   /usr/local/nginx/conf/nginx .conf
----------
           ID: nginx-service
     Function:  file .directory
         Name:  /usr/local/nginx/conf .d
       Result: None
      Comment: The following files will be changed:
               /usr/local/nginx/conf .d: directory - new
      Started: 14:41:26.264670
     Duration: 0.371 ms
      Changes:   
----------
           ID: nginx-service
     Function: service.running
         Name: nginx
       Result: None
      Comment: Service is  set  to be started
      Started: 14:41:26.286912
     Duration: 53.579 ms
      Changes:   
Summary
-------------
Succeeded: 29 (unchanged=17, changed=4)
Failed:     0
-------------
Total states run:     29

4)正式部署

1
[root@salt-master base] # salt 'salt-minion01.contoso.com' state.sls nginx.service

5)sls代码

目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@salt-master salt] # tree /srv/salt/base/
/srv/salt/base/
├── nginx
│   ├── files
│   │   ├── nginx
│   │   ├── nginx-1.6.3. tar .gz
│   │   └── nginx.conf
│   ├──  install .sls
│   └── service.sls
└── pcre
     ├── files
     │   └── pcre-8.37. tar .gz
     └──  install .sls
4 directories, 7 files

pcre install.sls代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@salt-master base] # cat pcre/install.sls 
pcre- source - install :
   pkg.installed:
     - names:
       - gcc
       - gcc-c++
       - autoconf
       - zlib
       - zlib-devel
       - glibc
       - glibc-devel
       make
       - cmake
   file .managed:
     source : salt: //pcre/files/pcre-8 .37. tar .gz
     - name:  /opt/tools/pcre-8 .37. tar .gz
     - user: root
     - group: root
     - mode: 755
     - makedirs: True
     - dir_mode: 644
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf pcre-8.37. tar .gz &&  cd  pcre-8.37 && . /configure  --prefix= /usr/local/pcre  &&  make  &&  make  install 
     - unless:  test  -d  /usr/local/pcre
     - require:
       file : pcre- source - install

nginx install.sls代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@salt-master base] # cat nginx/install.sls 
include:
   - pcre. install
nginx- source - install :
   pkg.installed:
     - names:
       - gcc
       - gcc-c++
       - autoconf
       - automake
       - zlib
       - zlib-devel
       make
       - openssl
       - openssl-devel
   group.present:
     - name: nginx
     - gid: 601
   user.present:
     - name: nginx
     - fullname: nginx
     - shell:  /sbin/nologin
     - uid: 601
     - gid: 601
   file .managed:
     source : salt: //nginx/files/nginx-1 .6.3. tar .gz
     - name:  /opt/tools/nginx-1 .6.3. tar .gz
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf nginx-1.6.3. tar .gz &&  mkdir  -p  /usr/local/nginx/tmp/ {client,proxy,fcgi} &&  cd  nginx-1.6.3 && . /configure  --prefix= /usr/local/nginx  --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path= /usr/local/nginx/tmp/client/  --http-proxy-temp-path= /usr/local/nginx/tmp/proxy/  --http-fastcgi-temp-path= /usr/local/nginx/tmp/fcgi/  --with-poll_module --with- file -aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path= /usr/local/nginx/uwsgi_temp  --http-scgi-temp-path= /usr/local/nginx/scgi_temp  --with-pcre= /opt/tools/pcre-8 .37 &&  make  &&  make  install  &&  chown  -R nginx:nginx  /usr/local/nginx/
     - unless:  test  -e  /usr/local/nginx/sbin/nginx
     - require:
       file : nginx- source - install
       - cmd: pcre- source - install

nginx service.sls代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@salt-master base] # cat nginx/service.sls 
include:
   - nginx. install
nginx-init:
   file .managed:
     - name:  /etc/init .d /nginx
     source : salt: //nginx/files/nginx
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name: chkconfig --add nginx
     - unless: chkconfig --list| grep  nginx
     - require: 
       file : nginx-init
/usr/local/nginx/conf/nginx .conf:
   file .managed:
     source : salt: //nginx/files/nginx .conf
     - user: nginx
     - group: nginx
     - mode: 644
nginx-service:
   file .directory:
     - name:  /usr/local/nginx/conf .d
     - require:
       - cmd: nginx- source - install
   service.running:
     - name: nginx
     enable : True
     - reload: True
     - require:
       - cmd: nginx-init
     watch :
       file /usr/local/nginx/conf/nginx .conf

3、部署结果验收

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@salt-minion01 ~] # service nginx status
nginx (pid 11406 11405 11404 11403 11400) is running...
[root@salt-minion01 ~] # ps -ef|grep nginx
root      11494      1  0 14:22 ?        00:00:00 nginx: master process  /usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx .conf
nginx     11496  11494  0 14:22 ?        00:00:00 nginx: worker process                                          
nginx     11497  11494  0 14:22 ?        00:00:00 nginx: worker process                                          
nginx     11498  11494  0 14:22 ?        00:00:00 nginx: worker process                                          
nginx     11499  11494  0 14:22 ?        00:00:00 nginx: worker process                                          
root      11503   1049  0 14:22 pts /0     00:00:00  grep  nginx
[root@salt-minion01 ~] # chkconfig --list|grep nginx
nginx          0:off1:off2:on3:on4:on5:on6:off
[root@salt-minion01 ~] # service nginx check
Checking config  file : nginx: the configuration  file  /usr/local/nginx/conf/nginx .conf syntax is ok
nginx: configuration  file  /usr/local/nginx/conf/nginx .conf  test  is successful
[root@salt-minion01 ~] # service nginx reload
Reloading nginx: [  OK  ]
[root@salt-minion01 ~] # service nginx restart
Stopping nginx: [  OK  ]
Starting nginx: [  OK  ]


本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1933090,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
弹性计算 运维 监控
快速部署 Nginx 社区版
Nginx是一个高性能的HTTP和反向代理服务器。Nginx在计算巢上提供了社区版服务,您无需自行配置云主机,即可在计算巢上快速部署Nginx服务、实现运维监控,从而方便地基于Nginx搭建您自己的应用。本文介绍使用如何通过计算巢快速部署Nginx社区版。
快速部署 Nginx 社区版
|
1月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
1月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
102 1
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
282 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
161 1
|
2月前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
1月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
105 0
|
消息中间件 监控 网络协议
SaltStack安装Apache/Mysql/PHP部署Wordpress
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。 SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。 master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受
177 0