08 saltstack生产实例-apahce+php+redis
1、apache+php
前几章的LAMP:https://www.cnblogs.com/venicid/p/11276232.html#_label2
Php放在apache
1、目录结构


2、php安装.sls,配置file
安装
[root@linux-node1 /srv/salt/prod/modules/apache]# cat php.sls
php-install:
pkg.installed:
- pkgs:
- php
- php-pdo
- php-mysql php-config:
file.managed:
- name: /etc/php.ini
- source: salt://modules/apache/files/php.ini
- user: root
- group: root
- mode:
配置文件
[root@linux-node1 /srv/salt/prod/modules/apache]# cp /etc/php.ini files/
3、apache安装.sls,配置file
安装
[root@linux-node1 /srv/salt/prod/modules/apache]# cat init.sls
include:
- modules.apache.php apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://modules/apache/files/httpd.conf
- user: root
- group: root
- mode:
- template: jinja
- defaults:
IPADDR: {{ grains['fqdn_ip4'][] }}
PORT:
- watch_in:
- service: apache-service apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
配置文件
[root@linux-node1 files]# cp /etc/httpd/conf/httpd.conf .
[root@linux-node1 /srv/salt/prod/modules/apache]# vim files/httpd.conf


4、test
[root@# localhost ~]# salt 'linux-node1*' state.sls modules.apache.init saltenv=prod
[root@# localhost ~]# salt 'linux-node2*' state.sls modules.apache.init saltenv=prod

5、问题
问题描述:grains获取minion的ip地址时,获取失败。

解决:
saltstack master端grains.item fqdn_ip4 获取不到fqdn_ip4 值原因以及解决办法
关于hostname和fqdn的区别和获取及设置
最后:
重启master、minion
2、shop-user业务分离,管理apahce php
产品线分级 shop
按业务分类:
功能模块写在modules,通用的
剩下的都是业务目录
不同的产品线对应不同的业务
1、目录结构
模块和业务目录

基本模块安装目录

业务对应的服务目录

2、php+apahce的基础安装配置

php基础安装.sls
[root@linux-node1 /srv/salt/prod/modules/apache]# cat php.sls
php-install:
pkg.installed:
- pkgs:
- php
- php-pdo
- php-mysql
apache基础安装.sls,如上
[root@linux-node1 /srv/salt/prod/modules/apache]# cat init.sls
include:
- modules.apache.php apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://modules/apache/files/httpd.conf
- user: root
- group: root
- mode:
- template: jinja
- defaults:
IPADDR: {{ grains['fqdn_ip4'][] }}
PORT:
- watch_in:
- service: apache-service apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
3、配置文件,修改如上

配置文件
[root@linux-node1 /srv/salt/prod/modules/apache]# cp /etc/php.ini files/

4、shop-user业务

业务对应的php+apahce的 sls文件
[root@linux-node1 /srv/salt/prod/shop-user]# cat web.sls
include:
- modules.apache.init php-config:
file.managed:
- name: /etc/php.ini
- source: salt://shop-user/files/php.ini
- user: root
- group: root
- mode: web-config:
file.managed:
- name: /etc/httpd/conf.d/shop-user.conf
- source: salt://shop-user/files/shop-user.conf
- user: root
- group: root
- mode:
- watch_in:
- service: apache-service
File将要放在的位置

业务对应的配置文件

php.ini如上
shop-user.conf 待续................
3、php使用redis实现session 共享
https://www.cnblogs.com/youjiaxing/p/10407361.html

1、shop-user下的php.conf
用来进行session共享的


2、shop-user的apahce+php的sls
[root@linux-node1 /srv/salt/prod/shop-user]# cat web.sls
include:
- modules.apache.init php-config: # php的conf
file.managed:
- name: /etc/php.ini
- source: salt://shop-user/files/php.ini
- user: root
- group: root
- mode: php-redis-config: # session共享的
file.managed:
- name: /etc/httpd/conf.d/php.conf
- source: salt://shop-user/files/php.conf
- user: root
- group: root
- mode: web-config: # apache的conf
file.managed:
- name: /etc/httpd/conf.d/shop-user.conf
- source: salt://shop-user/files/shop-user.conf
- user: root
- group: root
- mode:
- watch_in:
- service: apache-service
3、虚拟主机shop-user.conf
[root@linux-node1 /srv/salt/prod/shop-user]# cat files/shop-user.conf
<VirtualHost *:>
ServerAdmin admin@example.com
DocumentRoot /var/www/html
ServerName demo.example.com
ErrorLog "logs/demo-error.log"
CustomLog "logs/demo-access.log" common
</VirtualHost>
4、修改apahce的8088端口
[root@linux-node1 /srv/salt/prod/modules/apache]# vim init.sls

5、启动
[root@linux-node1 /srv/salt/prod/shop-user]# salt \* state.sls shop-user.web saltenv=prod

容器,每个容器只跑一个虚拟主机
查看端口


6、配置php主页
node1,node2
[root@linux-node1 /srv/salt/prod/shop-user]# cd /var/www/html/
[root@linux-node1 /var/www/html]# cat info.php
<?php
phpinfo();
?>
访问主页

php和redis连上了


我的未连接到redis上面???
未开启redis主从模式吗?
7、添加到top.sls中


启动
[root@linux-node1 /srv/salt/base]# salt \* state.highstate

08 saltstack生产实例-apahce+php+redis的更多相关文章
- 09 saltstack生产实例--Haproxy+keepalived
1.如何理解haproxy+keepalived https://www.cnblogs.com/zs-wei/p/9213961.html HaProxy可以通过监听一个统一的端口对外提供能力,然后 ...
- 07 saltstack生产实例-mysql主从
1.服务部署 .服务部署 抽象:功能模块 redis 安装.配置.启动 mysql 安装.配置(my.cnf可以统一 目录默认配置可以统一) master: server_id slave: serv ...
- 06 saltstack生产实例-需求
https://github.com/unixhot/saltbook-code .Cobbler 1.15 统一网卡名 .Zabbix 系统已经安装好了! base .手动实现 .需要使用salt的 ...
- SaltStack生产案例-服务部署(redis,mysql,apache+php,haproxy+keepalived)
顺序代码资料链接 课上资料.zip 接上篇:SaltStack生产案例-系统初始化 1,redis 主从 2,mysql 主从 2.1 mysql-install.sls (安装 初始化) 2.2 ...
- 13.生产环境中的 redis 是怎么部署的?
作者:中华石杉 面试题 生产环境中的 redis 是怎么部署的? 面试官心理分析 看看你了解不了解你们公司的 redis 生产集群的部署架构,如果你不了解,那么确实你就很失职了,你的 redis 是主 ...
- 【WCF--初入江湖】08 并发与实例模式
08 并发与实例模式 1. 实例上下文模式 一个服务代理:servicePoxy ChannelFactory<IService1> factoryservicel = new Cha ...
- 第十四章 Odoo 12开发之部署和维护生产实例
本文中将学习将 Odoo 服务器作为生产环境的基本准备.安装和维护服务器是一个复杂的话题,应该由专业人员完成.本文中所学习的不足以保证普通用户创建应对包含敏感数据和服务的健壮.安全环境. 本文旨在介绍 ...
- 生产环境中的 redis 是怎么部署的
redis cluster,10 台机器,5 台机器部署了 redis 主实例,另外 5 台机器部署了 redis 的从实例,每个主实例挂了一个从实例,5 个节点对外提供读写服务,每个节点的读写高峰q ...
- 面试系列20 生产环境中的redis是怎么部署的
redis cluster,10台机器,5台机器部署了redis主实例,另外5台机器部署了redis的从实例,每个主实例挂了一个从实例,5个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每 ...
随机推荐
- [转帖]Zookeeper vs etcd vs Consul比较
Zookeeper vs etcd vs Consul比较 https://it.baiked.com/consul/2341.html 需要转型 加强学习. 如果使用预定义的端口,服务越多,发生冲突 ...
- Kafka主题体系架构-复制、故障转移和并行处理
本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理. Kafka主题,日志和分区 Kafka将主题存储在日志中.主题日志分为多个分区.Kafka将日志的分区分布在多个服务器或磁 ...
- SQL Server 验证身份证合法性函数(使用VBScript.RegExp)
原文:SQL Server 验证身份证合法性函数(使用VBScript.RegExp) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wzy0623 ...
- 「java.util.concurrent并发包」之 ThreadPoolExecutor
一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // T ...
- python内置函数0-1
# a=bool(None)# print(a) class Foo: def __repr__(self): return 'bbbbbbb'f = Foo()ret = ascii(f)print ...
- X86逆向14:常见的脱壳手法
本章节内容将介绍软件的脱壳技术.什么是加壳?加壳就是用来压缩或者保护软件不被非法修改破解的一种工具,而脱壳就是将已经加壳的程序从壳中剥离出来,既然能给程序进行加壳,那也就会有相应的脱壳方法,本节课我们 ...
- Postgresql在Windows下的解压安装
1.将下载的压缩包解压,我是解压在D:\postgreSQL\pgsql中. 2.设置环境变量如下: set PGHOME=D:\postgreSQL\pgsql set PGDATA=%PGH ...
- Vuex是什么?
记得去年公司招聘前端工程师的时候,我要负责准备面试题去考验面试者,让我记忆深刻的有一件事,我看大多数面试者简历上都写了熟练掌握Vuex,然而当我问起的时候,大部分回答都支支吾吾,解释不清,而当我提起与 ...
- 面试常考的js题目(三)
1.查找两个节点的最近的一个共同父节点,可以包括节点自身 function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)) ...
- lesson12Homework
package StringPractice; public class arrayTest { //1. 把A数组的前5个元素复制到B数组中. public static void main(Str ...