目录结构

|-- 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(安装Nginx)

 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(渲染Nginx配置文件并copy到minion端)

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'] }} #master端的nginx.conf中num_cpus变量用grains['num_cpus']渲染之后发送到minion端
vhost-conf:
file.managed:
- name: {{ pillar['vhost']['target'] }} #从master端copy到minion端叫的名字,在pillar里定义的
- source: salt://roles/nginx/files/vhosts.conf
- template: jinja
- defaults:
server_name: {{ pillar['vhost']['server_name'] }} #master端vhosts.conf中server_name变量,用pillar里的渲染,并发送到minion端 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(安装PHP)

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(copy配置文件到minion端)

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

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

  1. SaltStack学习系列之state常用模块

    常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的 ...

  2. centos系统编译安装nginx+php环境另加独立mysql教程

    以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...

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

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  4. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...

  5. Linux上安装Nginx依赖环境和库、Nginx安装,Nginx服务命令

    安装Nginx依赖环境和库.Nginx安装,Nginx服务命令 因为Nginx官方提供的是C源码,要自己进行编译,所以需要自己拥有编译所依赖的环境和库才可正常编译 安装gcc yum -y insta ...

  6. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  7. 学习项目部署Django+uwsgi+Nginx生产环境部署

    绪论 项目生产环境部署,是很重的一个知识点.第一,Django自带的服务器很简陋,由于测试和开发环境尚可,无法用于生产环境,保障安全性和可靠性.以及性能.此外,学习部署方式,还有利于了解生产部署后的项 ...

  8. centos7安装nginx必要环境

    安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行 , 在安装nginx前还要安装以下的环境包 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc ...

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

    Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高 效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第 ...

随机推荐

  1. java内存查看与分析

    业界有很多强大的java profile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分, ...

  2. docker 容器挂载主机目录,访问出现 cannot open directory /mnt/home/webroot/: Permission denied 的解决办法

    问题原因及解决办法 原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1.在运行容器的时候,给容器加特权,及加上 --privileged= ...

  3. 使用Caliburn.Micro系列2:Convention

    CM中实现一个比较有意思的特性,就是智能匹配. 通常使用MVVM的写法:在匹配 View和ViewModel时会使用DataContext,在匹配数据属性时使用Binding,在匹配事件命令时使用Co ...

  4. 拼字符串 showArray.push(data); showArray.join(",")

    //---// var showColumns = getShowColsRows("table");// var showArray = [];// $.each(showCol ...

  5. bat copy

    @echo off regedit /s %~dp0regedit.reg                                          //注册注册表xcopy "D: ...

  6. idea开启/关闭单词拼写检查

  7. python compare with other language

    java http://dirtsimple.org/2004/12/python-is-not-java.htmlhttp://twistedmatrix.com/users/glyph/rant/ ...

  8. ios中摄像头/相册获取图片压缩图片上传服务器方法总结

    本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下.     这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...

  9. 文本框/域文字提示(placeholder)自动显示隐藏jQuery小插件

    // 文本框文本域提示文字的自动显示与隐藏 (function($){ $.fn.textRemindAuto = function(options){ options = options || {} ...

  10. 全国绿色计算大赛 模拟赛第二阶段 (Python)

    第1关气温预测 def dailyTemps(temp_list): result = [] for ca in range(0, len(temp_list)-1): for i in range( ...