天天看點

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部署目錄架構:

<code>[root@salt-master ~]</code><code># tree /srv/salt/base/</code>

<code>/srv/salt/base/</code>

<code>├── </code><code>cron</code>

<code>│   ├── files</code>

<code>│   │   ├── nginx_cut_log.sh</code>

<code>│   │   └── php_cut_log.sh</code>

<code>│   ├── nginx.sls</code>

<code>│   └── php.sls</code>

<code>├── nginx</code>

<code>│   │   ├── nginx</code>

<code>│   │   ├── nginx-1.6.3.</code><code>tar</code><code>.gz</code>

<code>│   │   └── nginx.conf</code>

<code>│   ├── </code><code>install</code><code>.sls</code>

<code>│   └── service.sls</code>

<code>├── packages</code>

<code>│   └── </code><code>install</code><code>.sls</code>

<code>├── pcre</code>

<code>│   │   └── pcre-8.37.</code><code>tar</code><code>.gz</code>

<code>├── php</code>

<code>│   ├── extension.sls</code>

<code>│   │   ├── libmemcached-1.0.18.</code><code>tar</code><code>.gz</code>

<code>│   │   ├── memcached-2.2.0.tgz</code>

<code>│   │   ├── php-5.6.16.</code><code>tar</code><code>.gz</code>

<code>│   │   ├── php-fpm</code>

<code>│   │   ├── php-fpm.conf</code>

<code>│   │   ├── php.ini</code>

<code>│   │   ├── phpredis-2.2.4.</code><code>tar</code><code>.gz</code>

<code>│   │   └── protobuf.so</code>

<code>│   ├── libiconv</code>

<code>│   │   └── files</code>

<code>│   │       └── libiconv-1.14.</code><code>tar</code><code>.gz</code>

<code>│   ├── libiconv.sls</code>

<code>│   ├── libmcrypt</code>

<code>│   │       └── libmcrypt-2.5.8.</code><code>tar</code><code>.gz</code>

<code>│   ├── libmcrypt.sls</code>

<code>│   ├── mcrypt</code>

<code>│   │       └── mcrypt-2.6.8.</code><code>tar</code><code>.gz</code>

<code>│   ├── mcrypt.sls</code>

<code>│   ├── mhash</code>

<code>│   │       └── mhash-0.9.9.9.</code><code>tar</code><code>.gz</code>

<code>│   ├── mhash.sls</code>

<code>├── </code><code>top</code><code>.sls</code>

<code>└── user</code>

<code>    </code><code>├── nginx.sls</code>

<code>    </code><code>└── php.sls</code>

<code>18 directories, 34 files</code>

安裝libiconv:

<code>[root@salt-master base]</code><code># cat php/libiconv.sls </code>

<code>libiconv-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>  </code><code>file</code><code>.managed:</code>

<code>    </code><code>- name: </code><code>/opt/tools/libiconv-1</code><code>.14.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/libiconv/files/libiconv-1</code><code>.14.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- user: root</code>

<code>    </code><code>- group: root</code>

<code>    </code><code>- mode: 755</code>

<code>  </code><code>cmd.run:</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools/</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf libiconv-1.14.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>libiconv-1.14 &amp;&amp; .</code><code>/configure</code> <code>--prefix=</code><code>/usr/local</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> <code>&amp;&amp; </code><code>/sbin/ldconfig</code> 

<code>    </code><code>- unless: </code><code>test</code> <code>-e </code><code>/usr/local/lib/libiconv</code><code>.so.2.5.1</code>

<code>    </code><code>- require:</code>

<code>      </code><code>- </code><code>file</code><code>: libiconv-</code><code>source</code><code>-</code><code>install</code>

安裝limcrypt:

<code>[root@salt-master base]</code><code># cat php/libmcrypt.sls </code>

<code>libmcrypt-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/libmcrypt-2</code><code>.5.8.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/libmcrypt/files/libmcrypt-2</code><code>.5.8.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf libmcrypt-2.5.8.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>libmcrypt-2.5.8 &amp;&amp; .</code><code>/configure</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> <code>&amp;&amp; ldconfig &amp;&amp; </code><code>cd</code> <code>libltdl &amp;&amp; .</code><code>/configure</code> <code>--</code><code>enable</code><code>-ltdl-</code><code>install</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> <code>&amp;&amp; </code><code>/sbin/ldconfig</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-e </code><code>/usr/local/lib/libmcrypt</code><code>.so.4.4.8</code>

<code>      </code><code>- </code><code>file</code><code>: libmcrypt-</code><code>source</code><code>-</code><code>install</code>

安裝mhash:

<code>[root@salt-master base]</code><code># cat php/mhash.sls </code>

<code>mhash-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/mhash-0</code><code>.9.9.9.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/mhash/files/mhash-0</code><code>.9.9.9.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools/</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf mhash-0.9.9.9.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>mhash-0.9.9.9 &amp;&amp; .</code><code>/configure</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> <code>&amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmcrypt</code><code>.la </code><code>/usr/lib/libmcrypt</code><code>.la &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmcrypt</code><code>.so </code><code>/usr/lib/libmcrypt</code><code>.so &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmcrypt</code><code>.so.4 </code><code>/usr/lib/libmcrypt</code><code>.so.4 &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmcrypt</code><code>.so.4.4.8 </code><code>/usr/lib/libmcrypt</code><code>.so.4.4.8 &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmhash</code><code>.a </code><code>/usr/lib/libmhash</code><code>.a &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmhash</code><code>.la </code><code>/usr/lib/libmhash</code><code>.la &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmhash</code><code>.so </code><code>/usr/lib/libmhash</code><code>.so &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmhash</code><code>.so.2 </code><code>/usr/lib/libmhash</code><code>.so.2 &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/lib/libmhash</code><code>.so.2.0.1 </code><code>/usr/lib/libmhash</code><code>.so.2.0.1 &amp;&amp; </code><code>ln</code> <code>-s </code><code>/usr/local/bin/libmcrypt-config</code> <code>/usr/bin/libmcrypt-config</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-e </code><code>/usr/local/lib/libmhash</code><code>.a</code>

<code>      </code><code>- </code><code>file</code><code>: mhash-</code><code>source</code><code>-</code><code>install</code>

安裝mcrypt:

<code>[root@salt-master base]</code><code># cat php/mcrypt.sls </code>

<code>mcrypt-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/mcrypt-2</code><code>.6.8.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/mcrypt/files/mcrypt-2</code><code>.6.8.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- mode: 644</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools/</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf mcrypt-2.6.8.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>mcrypt-2.6.8 &amp;&amp; </code><code>/sbin/ldconfig</code> <code>&amp;&amp; .</code><code>/configure</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-e </code><code>/usr/local/bin/mcrypt</code>

<code>      </code><code>- </code><code>file</code><code>: mcrypt-</code><code>source</code><code>-</code><code>install</code>

安裝php:

<code>[root@salt-master base]</code><code># cat php/install.sls </code>

<code>include:</code>

<code>  </code><code>- packages.</code><code>install</code>

<code>  </code><code>- user.php</code>

<code>  </code><code>- php.libiconv</code>

<code>  </code><code>- php.libmcrypt</code>

<code>  </code><code>- php.mhash</code>

<code>  </code><code>- php.mcrypt</code>

<code>php-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/php-5</code><code>.6.16.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/php-5</code><code>.6.16.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools/</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf php-5.6.16.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>php-5.6.16 &amp;&amp; .</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/php</code> <code>--with-config-</code><code>file</code><code>-path=</code><code>/usr/local/php/etc</code> <code>--with-libxml-</code><code>dir</code> <code>--</code><code>enable</code><code>-xml --</code><code>enable</code><code>-fpm --with-fpm-user=www --with-fpm-group=www --</code><code>enable</code><code>-bcmath --</code><code>enable</code><code>-mbstring --</code><code>enable</code><code>-gd-native-ttf --</code><code>enable</code><code>-sockets --</code><code>enable</code><code>-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --</code><code>enable</code><code>-zip --</code><code>enable</code><code>-inline-optimization --with-gd --with-bz2 --with-zlib --with-mcrypt --with-mhash --with-openssl --with-xmlrpc --with-iconv-</code><code>dir</code> <code>--with-freetype-</code><code>dir</code> <code>--with-jpeg-</code><code>dir</code> <code>--with-png-</code><code>dir</code> <code>--without-pear --disable-ipv6 --disable-pdo --with-gettext --disable-debug --without-pdo-sqlite --disable-rpath --</code><code>enable</code><code>-shmop --</code><code>enable</code><code>-sysvsem --with-curl --with-curlwrappers --</code><code>enable</code><code>-mbregex --</code><code>enable</code><code>-pcntl --</code><code>enable</code><code>-soap --</code><code>enable</code><code>-sigchild --</code><code>enable</code><code>-pdo &amp;&amp; </code><code>make</code> <code>ZEND_EXTRA_LIBS=</code><code>'-liconv'</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-d </code><code>/usr/local/php</code>

<code>      </code><code>- </code><code>file</code><code>: php-</code><code>source</code><code>-</code><code>install</code>

<code>      </code><code>- user: php-user-group</code>

<code>      </code><code>- cmd: libiconv-</code><code>source</code><code>-</code><code>install</code>

<code>      </code><code>- cmd: libmcrypt-</code><code>source</code><code>-</code><code>install</code>

<code>      </code><code>- cmd: mcrypt-</code><code>source</code><code>-</code><code>install</code>

<code>      </code><code>- cmd: mhash-</code><code>source</code><code>-</code><code>install</code>

配置php服務:

<code>[root@salt-master base]</code><code># cat php/service.sls </code>

<code>  </code><code>- php.</code><code>install</code>

<code>  </code><code>- </code><code>cron</code><code>.php</code>

<code>/usr/local/php/etc</code><code>:</code>

<code>  </code><code>file</code><code>.directory:</code>

<code>    </code><code>- user: www</code>

<code>    </code><code>- group: www</code>

<code>    </code><code>- makedirs: True</code>

<code>/usr/local/php/etc/php-fpm</code><code>.conf:</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/php-fpm</code><code>.conf</code>

<code>/etc/php</code><code>.ini:</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/php</code><code>.ini</code>

<code>/etc/profile</code><code>:</code>

<code>  </code><code>file</code><code>.append:</code>

<code>    </code><code>- text:</code>

<code>      </code><code>- </code><code>export</code> <code>PATH=$PATH:</code><code>/usr/local/php/bin</code><code>:</code><code>/usr/local/php/sbin</code>

<code>php-init:</code>

<code>    </code><code>- name: </code><code>/etc/init</code><code>.d</code><code>/php-fpm</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/php-fpm</code>

<code>    </code><code>- name: chkconfig --add php-fpm &amp;&amp; </code><code>source</code> <code>/etc/profile</code>

<code>    </code><code>- unless: chkconfig --list|</code><code>grep</code> <code>php-fpm</code>

<code>      </code><code>- </code><code>file</code><code>: php-init</code>

<code>php-service:</code>

<code>  </code><code>service.running:</code>

<code>    </code><code>- name: php-fpm</code>

<code>    </code><code>- </code><code>enable</code><code>: True</code>

<code>    </code><code>- restart: True</code>

<code>      </code><code>- cmd: php-init</code>

<code>    </code><code>- </code><code>watch</code><code>:</code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/etc/php</code><code>.ini</code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/usr/local/php/etc/php-fpm</code><code>.conf</code>

部署定時任務:

<code>[root@salt-master base]</code><code># cat cron/php.sls </code>

<code>php-crond-job:</code>

<code>    </code><code>- name: </code><code>/opt/tools/scripts/php_cut_log</code><code>.sh</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//cron/files/php_cut_log</code><code>.sh</code>

<code>/bin/bash</code> <code>/opt/tools/scripts/php_cut_log</code><code>.sh &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1:</code>

<code>  </code><code>cron</code><code>.present:</code>

<code>    </code><code>- identifier: </code><code>cut</code> <code>php daily logs job</code>

<code>    </code><code>- minute: </code><code>'0'</code>

<code>    </code><code>- hour: </code><code>'0'</code>

<code>      </code><code>- </code><code>file</code><code>: php-crond-job</code>

安裝php擴充:

<code>[root@salt-master base]</code><code># cat php/extension.sls </code>

<code>  </code><code>- php.service</code>

<code>libmemcached-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/libmemcached-1</code><code>.0.18.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/libmemcached-1</code><code>.0.18.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf libmemcached-1.0.18.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>libmemcached-1.0.18 &amp;&amp; .</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/libmemcached</code> <code>--with-memcached &amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-d </code><code>/usr/local/libmemcached</code>

<code>      </code><code>- </code><code>file</code><code>: libmemcached-</code><code>source</code><code>-</code><code>install</code>

<code>memcached-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/memcached-2</code><code>.2.0.tgz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/memcached-2</code><code>.2.0.tgz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools/</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf memcached-2.2.0.tgz &amp;&amp; </code><code>cd</code> <code>memcached-2.2.0 &amp;&amp; </code><code>/usr/local/php/bin/phpize</code> <code>&amp;&amp; .</code><code>/configure</code> <code>--</code><code>enable</code><code>-memcached --with-php-config=</code><code>/usr/local/php/bin/php-config</code> <code>--with-libmemcached-</code><code>dir</code><code>=</code><code>/usr/local/libmemcached</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-x </code><code>/usr/bin/memcached</code>

<code>      </code><code>- </code><code>file</code><code>: memcached-</code><code>source</code><code>-</code><code>install</code>

<code>phpredis-</code><code>source</code><code>-</code><code>install</code><code>:</code>

<code>    </code><code>- name: </code><code>/opt/tools/phpredis-2</code><code>.2.4.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/phpredis-2</code><code>.2.4.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- name: </code><code>cd</code> <code>/opt/tools</code> <code>&amp;&amp; </code><code>tar</code> <code>-zxf phpredis-2.2.4.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>phpredis-2.2.4 &amp;&amp; </code><code>/usr/local/php/bin/phpize</code> <code>&amp;&amp; .</code><code>/configure</code> <code>--with-php-config=</code><code>/usr/local/php/bin/php-config</code> <code>&amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-e </code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis</code><code>.so</code>

<code>      </code><code>- </code><code>file</code><code>: phpredis-</code><code>source</code><code>-</code><code>install</code>

<code>protobuf-extension:</code>

<code>    </code><code>- name: </code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/protobuf</code><code>.so</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//php/files/protobuf</code><code>.so</code>

<code>extension-init:</code>

<code>    </code><code>- name: </code><code>/usr/local/php/etc/php</code><code>.ini</code>

<code>    </code><code>- replace: True</code>

<code>    </code><code>- name: </code><code>chown</code> <code>-R www:www </code><code>/usr/local/php</code> <code>&amp;&amp; </code><code>source</code> <code>/etc/profile</code>

<code>      </code><code>- </code><code>file</code><code>: protobuf-extension</code>

<code>      </code><code>- </code><code>file</code><code>: extension-init</code>

<code>    </code><code>- </code><code>watch</code><code>: </code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/usr/local/php/etc/php</code><code>.ini</code>

top.sls檔案:

<code>[root@salt-master base]</code><code># cat top.sls </code>

<code>base:</code>

<code>  </code><code>'salt-minion02.contoso.com'</code><code>:</code>

<code>    </code><code>- nginx.service</code>

<code>    </code><code>- php.service</code>

<code>    </code><code>- php.extension</code>

本文轉自 jerry1111111 51CTO部落格,原文連結:http://blog.51cto.com/jerry12356/1934153,如需轉載請自行聯系原作者