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(安装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环境的更多相关文章
- SaltStack学习系列之state常用模块
常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的 ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- PHP学习笔记----IIS7下安装配置php环境
原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...
- Linux上安装Nginx依赖环境和库、Nginx安装,Nginx服务命令
安装Nginx依赖环境和库.Nginx安装,Nginx服务命令 因为Nginx官方提供的是C源码,要自己进行编译,所以需要自己拥有编译所依赖的环境和库才可正常编译 安装gcc yum -y insta ...
- Nginx学习系列二Linux下Nginx实现负载均衡
关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...
- 学习项目部署Django+uwsgi+Nginx生产环境部署
绪论 项目生产环境部署,是很重的一个知识点.第一,Django自带的服务器很简陋,由于测试和开发环境尚可,无法用于生产环境,保障安全性和可靠性.以及性能.此外,学习部署方式,还有利于了解生产部署后的项 ...
- centos7安装nginx必要环境
安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行 , 在安装nginx前还要安装以下的环境包 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc ...
- Java学习第一步——JDK安装及Java环境变量配置
Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高 效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第 ...
随机推荐
- 观锁和乐观锁——《POJOs in Action》
1 事务隔离 事务隔离是数据库提供的功能. SQL Server通过SET TRANSACTION ISOLATION LEVEL语句设置事务隔离级别: SET TRANSACTION ...
- patest_1003_Emergency (25)_(dijkstra+dfs)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- Linux之基础命令——文件查看
cat(连接文件并打印) -n :由 1 开始对所有输出的行数编号. -b :和 -n 相似,只不过对于空白行不编号. -s :当遇到有连续两行以上的空白行,就代换为一行的空白行. [cat a b ...
- Learning Discriminative and Transformation Covariant Local Feature Detectors实验环境搭建详细过程
依赖项: Python 3.4.3 tensorflow>1.0.0, tqdm, cv2, exifread, skimage, glob 1.安装tensorflow:https://www ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩 (记忆化搜索 + 概率DP)
题意:模拟克苏恩打奴隶战对对方英雄所造成的伤害 题解:因为昨(今)天才写过记忆化搜索 所以这个就是送经验了 1A还冲了个榜 但是我惊奇的发现我数组明明就比数据范围开小了啊??? #include &l ...
- vue 自定义指令使用
<template> <div> <!-- 让input元素在打开页面的时候就获得焦点 --> <input type="text" v- ...
- 洛谷——P3918 [国家集训队]特技飞行
P3918 [国家集训队]特技飞行 神犇航空开展了一项载客特技飞行业务.每次飞行长N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.如果连续进行相同的动作, ...
- 启发式合并CSU - 1811
F - Tree Intersection CSU - 1811 Bobo has a tree with n vertices numbered by 1,2,…,n and (n-1) edges ...
- [Python3网络爬虫开发实战] 1.2.5-PhantomJS的安装
PhantomJS是一个无界面的.可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作.CSS选择器.JSON.Canvas以及SVG. Selenium支持PhantomJS,这 ...
- 零基础入门学习Python(36)--类和对象:给大家介绍对象
知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...