saltstack部署nginx+php

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

因为基本上生产环境中都是nginx+php的环境,所以就不单独列出salt部署php的过程了,这里就结合我在生产环境中的脚本进行nginx+php环境的部署。

部署规划:

1)编译安装libiconv、libmcrypt、mhash以及mcrypt

2)编译安装php

3)添加启动停止脚本

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

5)拷贝日志切割脚本

6)添加日志切割定时任务

7)安装memcached/redis/protobuf扩展

8)修改php.ini加载php扩展

salt部署目录架构:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[root@salt-master ~] # tree /srv/salt/base/
/srv/salt/base/
├──  cron
│   ├── files
│   │   ├── nginx_cut_log.sh
│   │   └── php_cut_log.sh
│   ├── nginx.sls
│   └── php.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
├── php
│   ├── extension.sls
│   ├── files
│   │   ├── libmemcached-1.0.18. tar .gz
│   │   ├── memcached-2.2.0.tgz
│   │   ├── php-5.6.16. tar .gz
│   │   ├── php-fpm
│   │   ├── php-fpm.conf
│   │   ├── php.ini
│   │   ├── phpredis-2.2.4. tar .gz
│   │   └── protobuf.so
│   ├──  install .sls
│   ├── libiconv
│   │   └── files
│   │       └── libiconv-1.14. tar .gz
│   ├── libiconv.sls
│   ├── libmcrypt
│   │   └── files
│   │       └── libmcrypt-2.5.8. tar .gz
│   ├── libmcrypt.sls
│   ├── mcrypt
│   │   └── files
│   │       └── mcrypt-2.6.8. tar .gz
│   ├── mcrypt.sls
│   ├── mhash
│   │   └── files
│   │       └── mhash-0.9.9.9. tar .gz
│   ├── mhash.sls
│   └── service.sls
├──  top .sls
└── user
     ├── nginx.sls
     └── php.sls
18 directories, 34 files

安装libiconv:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@salt-master base] # cat php/libiconv.sls 
libiconv- source - install :
   file .managed:
     - name:  /opt/tools/libiconv-1 .14. tar .gz
     source : salt: //php/libiconv/files/libiconv-1 .14. tar .gz
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf libiconv-1.14. tar .gz &&  cd  libiconv-1.14 && . /configure  --prefix= /usr/local  &&  make  &&  make  install  &&  /sbin/ldconfig 
     - unless:  test  -e  /usr/local/lib/libiconv .so.2.5.1
     - require:
       file : libiconv- source - install

安装limcrypt:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@salt-master base] # cat php/libmcrypt.sls 
libmcrypt- source - install :
   file .managed:
     - name:  /opt/tools/libmcrypt-2 .5.8. tar .gz
     source : salt: //php/libmcrypt/files/libmcrypt-2 .5.8. tar .gz
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name:  cd  /opt/tools  &&  tar  -zxf libmcrypt-2.5.8. tar .gz &&  cd  libmcrypt-2.5.8 && . /configure  &&  make  &&  make  install  && ldconfig &&  cd  libltdl && . /configure  -- enable -ltdl- install  &&  make  &&  make  install  &&  /sbin/ldconfig
     - unless:  test  -e  /usr/local/lib/libmcrypt .so.4.4.8
     - require:
       file : libmcrypt- source - install

安装mhash:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@salt-master base] # cat php/mhash.sls 
mhash- source - install :
   file .managed:
     - name:  /opt/tools/mhash-0 .9.9.9. tar .gz
     source : salt: //php/mhash/files/mhash-0 .9.9.9. tar .gz
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf mhash-0.9.9.9. tar .gz &&  cd  mhash-0.9.9.9 && . /configure  &&  make  &&  make  install  &&  ln  -s  /usr/local/lib/libmcrypt .la  /usr/lib/libmcrypt .la &&  ln  -s  /usr/local/lib/libmcrypt .so  /usr/lib/libmcrypt .so &&  ln  -s  /usr/local/lib/libmcrypt .so.4  /usr/lib/libmcrypt .so.4 &&  ln  -s  /usr/local/lib/libmcrypt .so.4.4.8  /usr/lib/libmcrypt .so.4.4.8 &&  ln  -s  /usr/local/lib/libmhash .a  /usr/lib/libmhash .a &&  ln  -s  /usr/local/lib/libmhash .la  /usr/lib/libmhash .la &&  ln  -s  /usr/local/lib/libmhash .so  /usr/lib/libmhash .so &&  ln  -s  /usr/local/lib/libmhash .so.2  /usr/lib/libmhash .so.2 &&  ln  -s  /usr/local/lib/libmhash .so.2.0.1  /usr/lib/libmhash .so.2.0.1 &&  ln  -s  /usr/local/bin/libmcrypt-config  /usr/bin/libmcrypt-config
     - unless:  test  -e  /usr/local/lib/libmhash .a
     - require:
       file : mhash- source - install

安装mcrypt:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@salt-master base] # cat php/mcrypt.sls 
mcrypt- source - install :
   file .managed:
     - name:  /opt/tools/mcrypt-2 .6.8. tar .gz
     source : salt: //php/mcrypt/files/mcrypt-2 .6.8. tar .gz
     - user: root
     - group: root
     - mode: 644
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf mcrypt-2.6.8. tar .gz &&  cd  mcrypt-2.6.8 &&  /sbin/ldconfig  && . /configure  &&  make  &&  make  install
     - unless:  test  -e  /usr/local/bin/mcrypt
     - require:
       file : mcrypt- source - install

安装php:

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
[root@salt-master base] # cat php/install.sls 
include:
   - packages. install
   - user.php
   - php.libiconv
   - php.libmcrypt
   - php.mhash
   - php.mcrypt
php- source - install :
   file .managed:
     - name:  /opt/tools/php-5 .6.16. tar .gz
     source : salt: //php/files/php-5 .6.16. tar .gz
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf php-5.6.16. tar .gz &&  cd  php-5.6.16 && . /configure  --prefix= /usr/local/php  --with-config- file -path= /usr/local/php/etc  --with-libxml- dir  -- enable -xml -- enable -fpm --with-fpm-user=www --with-fpm-group=www -- enable -bcmath -- enable -mbstring -- enable -gd-native-ttf -- enable -sockets -- enable -mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd -- enable -zip -- enable -inline-optimization --with-gd --with-bz2 --with-zlib --with-mcrypt --with-mhash --with-openssl --with-xmlrpc --with-iconv- dir  --with-freetype- dir  --with-jpeg- dir  --with-png- dir  --without-pear --disable-ipv6 --disable-pdo --with-gettext --disable-debug --without-pdo-sqlite --disable-rpath -- enable -shmop -- enable -sysvsem --with-curl --with-curlwrappers -- enable -mbregex -- enable -pcntl -- enable -soap -- enable -sigchild -- enable -pdo &&  make  ZEND_EXTRA_LIBS= '-liconv'  &&  make  install
     - unless:  test  -d  /usr/local/php
     - require:
       file : php- source - install
       - user: php-user-group
       - cmd: libiconv- source - install
       - cmd: libmcrypt- source - install
       - cmd: mcrypt- source - install
       - cmd: mhash- source - install

配置php服务:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
[root@salt-master base] # cat php/service.sls 
include:
   - php. install
   cron .php
/usr/local/php/etc :
   file .directory:
     - user: www
     - group: www
     - mode: 644
     - makedirs: True
/usr/local/php/etc/php-fpm .conf:
   file .managed:
     source : salt: //php/files/php-fpm .conf
     - user: www
     - group: www
     - mode: 644
/etc/php .ini:
   file .managed:
     source : salt: //php/files/php .ini
     - user: www
     - group: www
     - mode: 644
/etc/profile :
   file .append:
     - text:
       export  PATH=$PATH: /usr/local/php/bin : /usr/local/php/sbin
php-init:
   file .managed:
     - name:  /etc/init .d /php-fpm
     source : salt: //php/files/php-fpm
     - user: root
     - group: root
     - mode: 755
   cmd.run:
     - name: chkconfig --add php-fpm &&  source  /etc/profile
     - unless: chkconfig --list| grep  php-fpm
     - require:
       file : php-init
php-service:
   service.running:
     - name: php-fpm
     enable : True
     - restart: True
     - require:
       - cmd: php-init
     watch :
       file /etc/php .ini
       file /usr/local/php/etc/php-fpm .conf

部署定时任务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@salt-master base] # cat cron/php.sls 
php-crond-job:
   file .managed:
     - name:  /opt/tools/scripts/php_cut_log .sh
     source : salt: //cron/files/php_cut_log .sh
     - user: root
     - group: root
     - mode: 755
/bin/bash  /opt/tools/scripts/php_cut_log .sh > /dev/null  2>&1:
   cron .present:
     - identifier:  cut  php daily logs job
     - user: root
     - minute:  '0'
     - hour:  '0'
     - require:
       file : php-crond-job

安装php扩展:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[root@salt-master base] # cat php/extension.sls 
include:
   - php.service
libmemcached- source - install :
   file .managed:
     - name:  /opt/tools/libmemcached-1 .0.18. tar .gz
     source : salt: //php/files/libmemcached-1 .0.18. tar .gz
     - user: root
     - group: root
     - mode: 644
   cmd.run:
     - name:  cd  /opt/tools  &&  tar  -zxf libmemcached-1.0.18. tar .gz &&  cd  libmemcached-1.0.18 && . /configure  --prefix= /usr/local/libmemcached  --with-memcached &&  make  &&  make  install
     - unless:  test  -d  /usr/local/libmemcached
     - require:
       file : libmemcached- source - install
memcached- source - install :
   file .managed:
     - name:  /opt/tools/memcached-2 .2.0.tgz
     source : salt: //php/files/memcached-2 .2.0.tgz
     - user: root
     - group: root
     - mode: 644
   cmd.run:
     - name:  cd  /opt/tools/  &&  tar  -zxf memcached-2.2.0.tgz &&  cd  memcached-2.2.0 &&  /usr/local/php/bin/phpize  && . /configure  -- enable -memcached --with-php-config= /usr/local/php/bin/php-config  --with-libmemcached- dir = /usr/local/libmemcached  &&  make  &&  make  install
     - unless:  test  -x  /usr/bin/memcached
     - require:
       file : memcached- source - install
phpredis- source - install :
   file .managed:
     - name:  /opt/tools/phpredis-2 .2.4. tar .gz
     source : salt: //php/files/phpredis-2 .2.4. tar .gz
     - user: root
     - group: root
     - mode: 644
   cmd.run:
     - name:  cd  /opt/tools  &&  tar  -zxf phpredis-2.2.4. tar .gz &&  cd  phpredis-2.2.4 &&  /usr/local/php/bin/phpize  && . /configure  --with-php-config= /usr/local/php/bin/php-config  &&  make  &&  make  install
     - unless:  test  -e  /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis .so
     - require:
       file : phpredis- source - install
protobuf-extension:
   file .managed:
     - name:  /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/protobuf .so
     source : salt: //php/files/protobuf .so
     - user: www
     - group: www
     - mode: 755
extension-init:
   file .managed:
     - name:  /usr/local/php/etc/php .ini
     source : salt: //php/files/php .ini
     - user: www
     - group: www
     - replace: True
     - mode: 644
   cmd.run:
     - name:  chown  -R www:www  /usr/local/php  &&  source  /etc/profile
     - require:
       file : protobuf-extension
       file : extension-init
     watch
       file /usr/local/php/etc/php .ini

top.sls文件:

1
2
3
4
5
6
[root@salt-master base] # cat top.sls 
base:
   'salt-minion02.contoso.com' :
     - nginx.service
     - php.service
     - php.extension


本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1934153,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
相关文章
|
7月前
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
279 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
2月前
|
小程序 安全 关系型数据库
专业打造一款圈子源码软件系统 / 后端 PHP 搭建部署一样实现利益化
本教程详解基于PHP后端与Uni-app的小程序开发全流程,涵盖技术选型、环境搭建、源码导入、接口对接及功能实现。采用Laravel/Symfony框架,结合MySQL/PostgreSQL数据库,使用WebSocket实现实时通信,并集成IM SDK实现音视频聊天。前端使用Uni-app开发,支持跨平台运行。教程包含完整部署流程与安全优化方案,助力快速搭建高性能、安全稳定的小程序系统。
144 5
|
4月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
183 14
|
11月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
11月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
597 1
|
11月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
3254 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
11月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
660 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是来接受
234 0