saltstack部署nginx+php

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
3月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
3月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
196 1
|
3月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
1091 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
3月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
257 1
|
4月前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
3月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
216 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是来接受
183 0

推荐镜像

更多