开发者社区> 技术小阿哥> 正文

saltstack部署nginx+php

简介:
+关注继续查看

因为基本上生产环境中都是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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
108 0
QGS
(openEuler21.03-Centos7-x86)yum安装php+nginx—配置nginx解析php
记(openEuler21.03-Centos7-x86)yum安装php+nginx—配置nginx解析php
152 0
QGS
Centos7-x86 yum安装配置nginx解析php—shell脚本
记Centos7-x86 yum安装配置nginx解析php—shell脚本
50 0
nginx和php下的ssi不生效问题。
nginx和php下的ssi不生效问题。
34 0
你确定你真的懂 Nginx 与 PHP 的交互?
你确定你真的懂 Nginx 与 PHP 的交互?
35 0
Nginx 和 PHP 的两种部署方式比较
Nginx 和 PHP 的两种部署方式比较
82 0
centos 下配置 nginx 支持 php
centos 下配置 nginx 支持 php
87 0
nginx 服务器究竟是怎么执行 php 项目
nginx 服务器究竟是怎么执行 php 项目
30 0
Centos中查看nginx、apache、php、mysql配置文件路径
Centos中查看nginx、apache、php、mysql配置文件路径
708 0
实战 - docker-compose搭建基本的nginx+php环境
docker-compose使用后缀为yml的文件定义你的服务容器关系 下面我们用一个nginx+php的简单例子来演示 创建项目总目录
234 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手
立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册
立即下载