SaltStack学习系列之State安装Nginx+PHP环境

目录结构

|-- pillar
|   |-- nginx
|   |   `-- nginx.sls   #nginx变量(key:value)
|   `-- top.sls
`-- salt|-- init    #初始化目录
    |   `-- repos.sls  #安装yum源
    |-- roles   #角色(nginx和php)
    |   |-- nginx   #Nginx
    |   |   |-- config.sls    #copy和利用pillar渲染配置文件
    |   |   |-- files         #存放需要copy和渲染到客户端的文件
    |   |   |   |-- fastcgi_params
    |   |   |   |-- jim_fix_params
    |   |   |   |-- nginx-1.8.1.tar.gz
    |   |   |   |-- nginx.conf
    |   |   |   |-- test.php
    |   |   |   `-- vhosts.conf
    |   |   |-- install.sls    #安装Nginx
    |   |   `-- service.sls    #启动Nginx
    |   |-- php      #PHP
    |   |   |-- config.sls     #COPY配置文件从master端到minion端
    |   |   |-- files          #存放需要copy到客户端的文件
    |   |   |   |-- php-fpm.conf
    |   |   |   |-- php.ini
    |   |   |   `-- timecash.conf
    |   |   |-- install.sls     #安装PHP
    |   |   `-- service.sls     #启动PHP
    |   `-- user     #创建启动php和nginx的用户
    |       `-- www.sls         #创建www用户
    `-- top.sls       #引用角色的

准备阶段

指定master端pillar和salt文件的目录

vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar

file_roots:
  base:
    - /srv/salt

pillar

/srv/salt/pillar/nginx/nginx.sls

vim  srv/pillar/nginx/nginx.sls
vhost:
    server_name: zhai.timecash.cn                       #渲染nginx的vhost的server_name
    target: /alidata1/nginx/conf/vhosts/zhai.conf       #指定从master端把配置文件copy到minion叫的名字
    web_dir: /alidata1/www/timecash22/zhai.timecash.cn  #指定web程序路径

init

/srv/salt/init/repos.sls

vim /srv/salt/init/repos.sls
yum_epel_repo_release:
    pkg.installed:
        - sources:
            - epel-release:  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
        - unless: rpm -qa|grep epel-release-7-10
yum_webtatic_repo_release:
    pkg.installed:
        - sources:
            - webtatic-replase: https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
        - unless: rpm -qa |grep webtatic-release-7-3.noarch

roles

nginx

/srv/salt/roles/nginx/install.sls

 vim /srv/salt/roles/nginx/install.sls
nginx_source:
  file.managed:
    - name: /tmp/nginx-1.8.1.tar.gz
    - unless: test -d /tmp/nginx-1.8.1.tar.gz
    - user: root
    - group: root
    - makedirs: True
    - source: salt://roles/nginx/files/nginx-1.8.1.tar.gz
nginx_extract:
  cmd.run:
    - cwd: /tmp
    - names:
      - tar -zxf nginx-1.8.1.tar.gz
    - unless: test -d /tmp/nginx-1.8.1.tar.gz
    - require:
      - file: nginx_source
nginx_pkg:
  pkg.installed:
    - pkgs:
      - gcc
      - gcc-c++
      - openssl-devel
      - pcre-devel
      - zlib-devel
nginx_compile:
  cmd.run:
    - cwd: /tmp/nginx-1.8.1
    - names:
      - ./configure --user=www --prefix=/alidata1/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_realip_module
      - make
      - make install
    - require:
      - cmd: nginx_extract
      - pkg: nginx_pkg
    - unless: test -d /usr/local/nginx

/srv/salt/roles/nginx/config.sls

vim /srv/salt/roles/nginx/config.sls
nginx-conf:
  file.managed:
    - name: /alidata1/nginx/conf/nginx.conf
    - source: salt://roles/nginx/files/nginx.conf
    - user: root
    - group: root
    - template: jinja
    - defaults:
      num_cpus: {{ grains[‘num_cpus‘] }}
vhost-conf:
  file.managed:
    - name: {{ pillar[‘vhost‘][‘target‘]  }}
    - source: salt://roles/nginx/files/vhosts.conf
    - template: jinja
    - defaults:
      server_name: {{ pillar[‘vhost‘][‘server_name‘]  }}
      num: {{ pillar[‘vhost‘][‘server_name‘]  }}
fastcgi-params:
  file.managed:
    - name: /alidata1/nginx/conf/fastcgi_params
    - source: salt://roles/nginx/files/fastcgi_params
    - user: root
    - group: root
jim-fix-params:
  file.managed:
    - name: /alidata1/nginx/conf/jim_fix_params
    - source: salt://roles/nginx/files/jim_fix_params
    - user: root
    - group: root
create_dir:
  cmd.run:
    - names:
      - mkdir -p /alidata1/nginx/conf/vhosts/
      - mkdir -p {{ pillar[‘vhost‘][‘web_dir‘]  }}

php

/srv/salt/roles/php/install.sls

vim /srv/salt/roles/php/install.sls
php_pkg:
  pkg.installed:
    - pkgs:
      - gcc
      - gcc-c++
      - autoconf
      - automake
      - zlib
      - zlib-devel
      - openssl
      - openssl-devel
      - pcre
      - pcre-devel
php_install:
  pkg.installed:
    - pkgs:
      - php56w.x86_64
      - php56w-bcmath.x86_64
      - php56w-cli.x86_64
      - php56w-common.x86_64
      - php56w-devel.x86_64
      - php56w-fpm.x86_64
      - php56w-gd.x86_64
      - php56w-mbstring.x86_64
      - php56w-mcrypt.x86_64
      - php56w-mysql.x86_64
      - php56w-opcache.x86_64
      - php56w-pdo.x86_64
      - php56w-soap.x86_64
      - php56w-xml.x86_64
      - php56w-xmlrpc.x86_64

/srv/salt/roles/php/config.sls

vim /srv/salt/roles/php/config.sls
php_log_dir:
  file.directory:
    - name: /alidata1/php/logs/
    - user: root
    - group: root
    - makedirs: True
rm_default_config:
  cmd.run:
    - name: rm -rf /etc/php-fpm.d/www.conf
php-ini:
  file.managed:
    - name: /etc/php.ini
    - source: salt://roles/php/files/php.ini
    - user: root
    - group: root
php-fpm-conf:
  file.managed:
    - name: /etc/php-fpm.conf
    - source: salt://roles/php/files/php-fpm.conf
    - user: root
    - group: root
timecash-conf:
  file.managed:
    - name: /etc/php-fpm.d/timecash.conf
    - source: salt://roles/php/files/timecash.conf
    - user: root
    - group: root

top

/srv/salt/top.sls

vim /srv/salt/top.sls
base:
  ‘*‘:
    - roles.nginx.install
    - roles.nginx.config
    - roles.php.install
    - roles.php.config
时间: 2024-10-15 00:54:10

SaltStack学习系列之State安装Nginx+PHP环境的相关文章

SaltStack学习系列之state常用模块

常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的命令返回False时才执行name那行的命令 cwd:执行命令时的目录,默认为root user:以指定用户身份运行命令 group:以指定用户组身份运行命令 run:运行name后的命令 require:确保某个模块执行之后才执行这个模块 实例 [[email protected] ~]# cat

SaltStack 之 在从机上安装nginx软件

SaltStack 之 在从机上安装nginx软件 一.在salt目录下创建参数文件 [[email protected] salt]# vi install_nginx.sls nginx-install: #文件标识 pkg.installed: #pak:模块 installed:方法 - names: #names:所需安装的软件,在下面可列多个 - nginx #安装的软件名 service.running: #service:模块 running:方法 #用于服务启动 - names

hive学习系列1——Mysql安装

安装mysql (1)执行命令 rpm -qa |grep mysql 查看mysql是否安装     删除linux上已经安装的mysql相关库信息. rpm  -e  xxxxxxx(查看的库名,可使用右键复制)   --nodeps     执行命令 rpm -qa |grep mysql 检查是否删除干净 (2)执行命令  rpm -i   mysql-server-********  安装mysql服务端 (3)启动mysql 服务端,执行命令  后台运行 mysqld_safe &

Java 学习第一步-JDK安装和Java环境变量配置

Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量,并使用搜索引擎(如Google.Bing.Yahoo!.百度)以及Wikipedia.Amazon.YouTube统计出排名数据,只是反映

Nginx系列(一.安装nginx)

零. 声明: 以下内容适用于linux环境下,采用源码方式安装 Nginx官网安装指南:http://wiki.nginx.org/InstallChs 一. 下载nginx 1.官网下载:http://nginx.org/en/download.html 2.Git下载:https://github.com/nginx/nginx 二. 必要的依赖库 1.pcre yum -y install pcre* #nginx rewrite模块 2.gcc yum -y install gcc gc

在CentOS上编译安装Nginx+实验环境搭建+测试

0.说明 Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件,很有必要搭建实验环境来对其进行学习. 1.实验环境 本次实验的测试环境使用的宿主机操作系统为Windows 7,在Vmware虚拟机安装CentOS 6.5,说明如下: 宿主机操作系统Windows 7 虚拟机安装的操作系统CentOS 6.5 虚拟机操作系统上网方式NAT 而当使用NAT的方式进行上网时虚拟机.宿主机之间的网络连接关系可如下所示: 关于为什么网络拓扑结构是这样的,这

关于Nginx服务器搭建,编译源码安装Nginx的环境

如何选用web服务器: 静态业务:要求高并发,采用Nginx或者是ttpdligh 动态业务:采用Nginx和Apache Nginx的介绍: 他是俄罗斯人开发的,软件一共就780K,他本是是一款几台www软件,静态高并发,同时占用资源少,3万并发10个线程工占用150M. Nginx服务冲大的方面功能: www web服务   http 80 负载均衡     反向代理proxy web   cache(web缓存) Nginx的优点: 高并发(对于静态小文件) 占用资源少 功能种类比较多(w

Java学习第一步——JDK安装及Java环境变量配置

Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高 效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量,并使用搜索引擎(如Google.Bing. Yahoo!.百度)以及Wikipedia.Amazon.YouTube统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好 不好,或者一门语言所编写的代码数量多少.)排行榜来看,四月.五月的数据分析,Java语言仅次于

【zabbix学习笔记之一】安装LNMP基础环境

安装nginx    1.安装pcre        为了后续支持rewrite安装pcre        yum -y install pcre*     2.安装openssl        为了后续支持ssl        yum -y install openssl*    3.下载nginx源码安装包        cd /usr/local/        wget http://nginx.org/download/nginx-1.8.0.tar.gz    4.解压该安装包