pupppet 搭建lnmp架构:
[root@server1 puppet]# tree modules/
modules/
|-- httpd
| |-- files
| | `-- httpd.conf
| `-- manifests
| |-- config.pp
| |-- init.pp
| |-- install.pp
| `-- service.pp
|-- mysqld
| |-- files
| | |-- cmake-2.8.4.tar.gz
| | |-- my.cnf
| | |-- mysql-5.5.12.tar.gz
| | `-- mysql_install.sh
| `-- manifests
| |-- config.pp
| |-- init.pp
| |-- install.pp
| `-- service.pp
|-- nginx
| |-- files
| | |-- nginx-1.10.1.tar.gz
| | |-- nginx.conf
| | `-- nginx_install.sh
| `-- manifests
| |-- config.pp
| |-- init.pp
| |-- install.pp
| `-- service.pp
`-- php
|-- files
| |-- libmcrypt-2.5.8.tar.bz2
| |-- php-5.3.6.tar.bz2
| |-- php-fpm.conf
| `-- php_install.sh
`-- manifests
|-- config.pp
|-- init.pp
|-- install.pp
`-- service.pp
12 directories, 28 files
nginx模块:
[root@server1 manifests]# ls
config.pp init.pp install.pp service.pp
[root@server1 manifests]# cat init.pp
class nginx {
include nginx::install,nginx::config,nginx::service
}
[root@server1 manifests]# cat install.pp
class nginx::install {
file {
"/mnt/nginx-1.10.1.tar.gz":
source => "puppet:///modules/nginx/nginx-1.10.1.tar.gz";
"/mnt/nginx_install.sh":
source => "puppet:///modules/nginx/nginx_install.sh",
mode => 775
}
exec {
"nginx-install":
command => '/mnt/nginx_install.sh',
timeout => 9999,
path => '/bin:/sbin:/usr/bin:/usr/sbin',
creates => '/usr/local/nginx/sbin/nginx',
require => File ["/mnt/nginx_install.sh"],
}
}
[root@server1 manifests]# cat config.pp
class nginx::config {
file {
"/usr/local/nginx/conf/nginx.conf":
source => "puppet:///modules/nginx/nginx.conf",
notify => Exec["reload-nginx"],
require => Class[nginx::install]
}
}
[root@server1 manifests]# cat service.pp
class nginx::service {
exec {
"start-nginx":
command =>'/usr/local/nginx/sbin/nginx',
require => Class['nginx::config'],
creates => '/usr/local/nginx/logs/nginx.pid'
}
exec {
"reload-nginx":
command => '/usr/local/nginx/sbin/nginx -s reload',
refreshonly => true
}
}
[root@server1 manifests]#
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.10.1.tar.gz nginx.conf nginx_install.sh
[root@server1 files]# cat nginx_install.sh
#!/bin/bash
yum install -y gcc pcre-devel openssl-devel zlib-devel &>/dev/null
cd /mnt/
tar -xf nginx-1.10.1.tar.gz &>/dev/null
cd nginx-1.10.1
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module &> /dev/null
sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
make &> /dev/null
make install &> /dev/null
[root@server1 files]#
mysql模块:
[root@server1 nginx]# ls
files manifests
[root@server1 nginx]# cd manifests/
[root@server1 manifests]# cat init.pp
class nginx {
include nginx::install,nginx::config,nginx::service
}
[root@server1 manifests]# cat install.pp
class nginx::install {
file {
"/mnt/nginx-1.10.1.tar.gz":
source => "puppet:///modules/nginx/nginx-1.10.1.tar.gz";
"/mnt/nginx_install.sh":
source => "puppet:///modules/nginx/nginx_install.sh",
mode => 775
}
exec {
"nginx-install":
command => '/mnt/nginx_install.sh',
timeout => 9999,
path => '/bin:/sbin:/usr/bin:/usr/sbin',
creates => '/usr/local/nginx/sbin/nginx',
require => File ["/mnt/nginx_install.sh"],
}
}
[root@server1 manifests]# cat config.pp
class nginx::config {
file {
"/usr/local/nginx/conf/nginx.conf":
source => "puppet:///modules/nginx/nginx.conf",
notify => Exec["reload-nginx"],
require => Class[nginx::install]
}
}
[root@server1 manifests]# cat service.pp
class nginx::service {
exec {
"start-nginx":
command =>'/usr/local/nginx/sbin/nginx',
require => Class['nginx::config'],
creates => '/usr/local/nginx/logs/nginx.pid'
}
exec {
"reload-nginx":
command => '/usr/local/nginx/sbin/nginx -s reload',
refreshonly => true
}
}
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.10.1.tar.gz nginx.conf nginx_install.sh
[root@server1 files]# cat nginx_install.sh
#!/bin/bash
yum install -y gcc pcre-devel openssl-devel zlib-devel &>/dev/null
cd /mnt/
tar -xf nginx-1.10.1.tar.gz &>/dev/null
cd nginx-1.10.1
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module &> /dev/null
sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
make &> /dev/null
make install &> /dev/null
useradd mysql
cd /usr/local/lnmp/mysql
cd support-files
cp my-large.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
sed -i '10s/^/#/g' ~/.bash_profile
echo "PATH=\$PATH:\$HOME/bin:/usr/local/lnmp/mysql/bin" >> ~/.bash_profile
source ~/.bash_profile
chown -R mysql:mysql /usr/local/lnmp/mysql/
cd /usr/local/lnmp/mysql/scripts
./mysql_install_db --user=mysql --basedir=/usr/local/lnmp/mysql --datadir=/usr/local/lnmp/mysql/data
chown -R root.root /usr/local/lnmp/mysql/
cd /usr/local/lnmp/mysql/
chown mysql data/ -R
[root@server1 files]#
[root@server1 files]#
[root@server1 php]# cd manifests/
[root@server1 manifests]# vim in
init.pp install.pp
[root@server1 manifests]# vim init.pp
[root@server1 manifests]# cat init.pp
class php {
include php::install,php::config,php::service
}
[root@server1 manifests]# cat install.pp
class php::install {
file {
"/mnt/php_install.sh":
source => 'puppet:///modules/php/php_install.sh',
mode => 775;
"/mnt/php-5.3.6.tar.bz2":
source => 'puppet:///modules/php/php-5.3.6.tar.bz2';
"/mnt/libmcrypt-2.5.8.tar.bz2":
source => 'puppet:///modules/php/libmcrypt-2.5.8.tar.bz2';
}
exec {
"php-install":
command => '/mnt/php_install.sh ',
timeout =>99999,
path =>'/bin:/usr/bin:/usr/sbin:/sbin',
creates => '/etc/init.d/php-fpm',
require => File ["/mnt/php_install.sh"]
}
}
[root@server1 manifests]# cat config.pp
class php::config {
file {
"/usr/local/lnmp/php/etc/php-fpm.conf":
source =>'puppet:///modules/php/php-fpm.conf',
notify =>Exec["php-fpm_reload"],
require =>Class[php::install]
}
}
[root@server1 manifests]# cat service.pp
class php::service {
service {
"php-fpm":
ensure =>running,
require =>Class['php::config'],
#creates => '/usr/local/lnmp/php/data/server3.example.com.pid'
}
exec {
"php-fpm_reload":
command =>'/etc/init.d/php-fpm reload',
refreshonly => true
}
}
[root@server1 manifests]#
[root@server1 php]# cd files/
[root@server1 files]# ls
libmcrypt-2.5.8.tar.bz2 php-5.3.6.tar.bz2 php-fpm.conf php_install.sh
[root@server1 files]# cat php_install.sh
#!/bin/bash
cd /mnt/
tar -xf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure --libdir=/usr/local/lib64 &>/dev/null
make && make install &>/dev/null
cd libltdl/
./configure –libdir=/usr/local/lib64 --enable-ltdl-install &>/dev/null
make &> /dev/null
make install &> /dev/null
yum install -y net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype-devel gmp-devel &>/dev/null
cd /mnt/
tar jxf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=/usr/local/lnmp/mysql/lib/ --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --with-mcrypt --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-libdir=lib64 &> /dev/null
ln -s /usr/local/lnmp/mysql/lib /usr/local/lnmp/mysql/lib64
make &> /dev/null
make install &> /dev/null
#make test
cp /usr/local/lnmp/php/etc/php.ini-production /usr/local/lnmp/php/etc/php.ini
cp /mnt/php-5.3.6/sapi/fpm/php-fpm /etc/init.d/
chmod +x /etc/init.d/php-fpm
sed -i "843a cgi.fix_pathinfo=0" /usr/local/lnmp/php/etc/php.ini
sed -i "998a date.timezone = Asia/Shanghai" /usr/local/lnmp/php/etc/php.ini
sed -i " 152a pm.start_servers = 10 \n pm.min_spare_servers = 5 \n pm.max_spare_servers = 15 \n pm.max_requests = 500" /usr/local/lnmp/php/etc/php-fpm.conf
[root@server1 files]#