saltstack部署nginx进阶

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

上一篇其实对通过saltstack部署nginx做了演示,但是可能与我目前的环境还是有点出入,然后sls的结构也不太清晰,所以就又做了改变和优化,叫做进阶可能有点噱头了,不过还是记录如下:

nginx安装目标:

   1)安装必要依赖

   2)准备pcre安装包

   2)源码安装pcre

   3)准备nginx安装包

   4)源码安装nginx

nginx配置:

   1)拷贝nginx.conf配置文件

   2)拷贝启停脚本

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

   4)拷贝日志切割脚本

   5)添加定时任务

salt master上的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@salt-master base] # tree /srv/salt/base/
/srv/salt/base/
├──  cron
│   ├── files
│   │   └── nginx_cut_log.sh
│   └── nginx.sls
├── nginx
│   ├── files
│   │   ├── nginx
│   │   ├── nginx-1.6.3. tar .gz
│   │   └── nginx.conf
│   ├──  install .sls
│   └── service.sls
├── packages
│   └──  install .sls
├── pcre
│   ├── files
│   │   └── pcre-8.37. tar .gz
│   └──  install .sls
└── user
     └── nginx.sls
8 directories, 11 files

安装必要软件包:

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
[root@salt-master base] # cat packages/install.sls 
yum_pcre_packages:
   pkg.installed:
     - names:
       - gcc
       - gcc-c++
       - autoconf
       - automake
       - zlib
       - zlib-devel
       make
       - openssl
       - openssl-devel
       - libpng
       - libpng-devel
       - freetype
       - freetype-devel
       - libxml2
       - libxml2-devel
       - glibc
       - glibc-devel
       - glib2
       - glib-devel
       bzip2
       bzip2 -devel
       - ncurses
       - ncurses-devel
       - curl
       - cmake

编译安装pcre:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@salt-master base] # cat pcre/install.sls 
include:
   - packages. install
pcre- source - install :
   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用户和组:

1
2
3
4
5
6
7
8
9
10
11
[root@salt-master base] # cat user/nginx.sls 
nginx-user-group:
   group.present:
     - name: nginx
     - gid: 601
   user.present:
     - name: nginx
     - fullname: nginx
     - shell:  /sbin/nologin
     - uid: 601
     - gid: 601

编译安装nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@salt-master base] # cat nginx/install.sls 
include:
   - pcre. install
   - user.nginx
nginx- source - install :
   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

添加定时任务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@salt-master base] # cat cron/nginx.sls 
/opt/tools/scripts/ :
   file .directory:
     - user: root
     - group: root
     - mode: 644
     - makedirs: True
nginx-crond-job:
   file .managed:
     - name:  /opt/tools/scripts/nginx_cut_log .sh
     source : salt: //cron/files/nginx_cut_log .sh
     - user: root
     - group: root
     - mode: 755
/bin/bash  /opt/tools/scripts/nginx_cut_log .sh > /dev/null  2>&1:
   cron .present:
     - identifier: SUPERCRON
     - user: root
     - minute: 0
     - hour: 0

启动nginx并设置开机启动:

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
[root@salt-master base] # cat nginx/service.sls 
include:
   - nginx. install
   cron .nginx
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

部署命令:[root@salt-master base]# salt 'salt-minion02.contoso.com' state.sls nginx.service

部署结果:

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-minion02 logs] # ll /usr/local/pcre/
total 16
drwxr-xr-x 2 root root 4096 Jun  8 10:29 bin
drwxr-xr-x 2 root root 4096 Jun  8 10:29 include
drwxr-xr-x 3 root root 4096 Jun  8 10:29 lib
drwxr-xr-x 4 root root 4096 Jun  8 10:29 share
[root@salt-minion02 logs] # id nginx
uid=601(nginx) gid=601(nginx)  groups =601(nginx)
[root@salt-minion02 logs] # ll /usr/local/nginx/
total 32
drwxr-xr-x 2 nginx nginx 4096 Jun  8 10:30 conf
drwxr-xr-x 2 root  root  4096 Jun  8 10:30 conf.d
drwxr-xr-x 2 nginx nginx 4096 Jun  8 10:30 html
drwxr-xr-x 2 nginx nginx 4096 Jun  8 10:30 logs
drwxr-xr-x 2 nginx nginx 4096 Jun  8 10:30 sbin
drwx------ 2 nginx root  4096 Jun  8 10:30 scgi_temp
drwxr-xr-x 5 nginx nginx 4096 Jun  8 10:29 tmp
drwx------ 2 nginx root  4096 Jun  8 10:30 uwsgi_temp
[root@salt-minion02 logs] # /usr/local/nginx/sbin/nginx -V
nginx version: nginx /1 .6.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
TLS SNI support enabled
configure arguments: --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
[root@salt-minion02 logs] # /etc/init.d/nginx status
nginx (pid 11422 11421 11420 11419 11416) is running...
[root@salt-minion02 logs] # chkconfig --list|grep nginx
nginx          0:off1:off2:on3:on4:on5:on6:off
[root@salt-minion02 logs] # crontab -l
0 * * * *  /usr/sbin/ntpdate    210.72.145.44 64.147.116.229  time .nist.gov > /dev/null  2>&1
# Lines below here are managed by Salt, do not edit
# SALT_CRON_IDENTIFIER:SUPERCRON
0 0 * * *  /bin/bash  /opt/tools/scripts/nginx_cut_log .sh > /dev/null  2>&1
[root@salt-minion02 logs] # ll /opt/tools/scripts/nginx_cut_log.sh 
-rwxr-xr-x 1 root root 1100 Jun  8 10:30  /opt/tools/scripts/nginx_cut_log .sh



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