puppet 基础-nginx

centos 系统 部署 nginx

一. 安装nginx服务器
新建模块 nginx-deploy-1_8_0
[root@master-192 modules]# tree nginx-deploy-1_8_0/
nginx-deploy-1_8_0/
├── files
│   ├── nginx-1.8.0.tar.gz
│   ├── nginx.conf
│   ├── nginx-deploy-1.8.0.sh
│   └── nginx-restart-1.8.0.sh
├── manifests
│   ├── before.pp
│   ├── init.pp
│   └── install.pp
└── templates

3 directories, 7 files

init.pp
[root@master-192 manifests]# cat init.pp 
class nginx-deploy-1_8_0 {
  include nginx-deploy-1_8_0::before
  include nginx-deploy-1_8_0::install
}

before.pp
[root@master-192 manifests]# cat before.pp 
class nginx-deploy-1_8_0::before {
  file { "/tools/nginx-deploy-1.8.0":
    ensure => directory,
    owner  => "root",
    group  => "root",
    mode   => "0775"
  }

  group { 'nginx':
    ensure => present,
    name => 'nginx',
    gid => '602',
    allowdupe => true
  }

  user { 'nginx':
    ensure => present,
    uid => '602',
    allowdupe => true,
    groups => 'nginx',
    managehome => true,
    home => '/home/nginx',
    shell => '/bin/bash'
  }

  package { "gcc":
    ensure => installed,
    require => Yumrepo["repo163"];
  }
  
  package { "pcre-devel":
    ensure => installed,
    require => Yumrepo["repo163"];
  }

  package { "openssl":
    ensure => installed,
    require => Yumrepo["repo163"];
  }

  package { "openssl-devel":
    ensure => installed,
    require => Yumrepo["repo163"];
  }
  
  file { "/tools/nginx-deploy-1.8.0/nginx-1.8.0.tar.gz":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-deploy-1_8_0/files/nginx-1.8.0.tar.gz",
    owner => "root",
    group => "root",
    mode => "744"
  }
 
  file { "/tools/nginx-deploy-1.8.0/nginx-deploy-1.8.0.sh":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-deploy-1_8_0/files/nginx-deploy-1.8.0.sh",
    owner => "root",
    group => "root",
    mode => "744"
  }

  file { "/tools/nginx-deploy-1.8.0/nginx-restart-1.8.0.sh":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-deploy-1_8_0/files/nginx-restart-1.8.0.sh",
    owner => "root",
    group => "root",
    mode => "744"
  }

  file { "/tools/nginx-deploy-1.8.0/nginx.conf":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-deploy-1_8_0/files/nginx.conf",
    owner => "root",
    group => "root",
    mode => "744"
  }
  
}

install.pp
[root@master-192 manifests]# cat install.pp 
class nginx-deploy-1_8_0::install {
  exec { "install nginx-deploy-1_8_0":
    cwd => "/tools/nginx-deploy-1.8.0",
    command => "sh /tools/nginx-deploy-1.8.0/nginx-deploy-1.8.0.sh",
    user => "root",
    group => "root",
    path => ["/usr/bin:/usr/sbin:/bin:/sbin"],
    require => Class[nginx-deploy-1_8_0::before]
  } 
}

nginx-deploy-1.8.0.sh   nginx部署脚本
[root@master-192 files]# cat nginx-deploy-1.8.0.sh
#!/bin/sh

rootpath=/tools/nginx-deploy-1.8.0
gzpath=${rootpath}/nginx-1.8.0.tar.gz
dirpath=${rootpath}/nginx-1.8.0

cd ${rootpath}
tar zxvf ${gzpath}
cd ${dirpath}
./configure
make
make install

if [ -d /usr/local/nginx ];then
  mkdir -p /usr/local/nginx/conf/vhosts_conf
fi
if [ -f ${rootpath}/nginx.conf ];then
  rm -f /usr/local/nginx/conf/nginx.conf
  cp ${rootpath}/nginx.conf /usr/local/nginx/conf/
fi
chown -R nginx:nginx /usr/local/nginx
sh ${rootpath}/nginx-restart-1.8.0.sh start
retcode=`echo $?`
if [ $retcode -ne 0 ];then
  exit 1
fi

exit 0

nginx-restart-1.8.0.sh  nginx启动,停止和重启脚本
[root@master-192 files]# cat nginx-restart-1.8.0.sh 
#!/bin/sh

rootpath=/usr/local/nginx 
nginxpath=${rootpath}/sbin/nginx
confpath=${rootpath}/conf/nginx.conf
pidpath=${rootpath}/nginx.pid

count=`ps -ef|grep ${nginxpath}|wc -l`
 
do_start() {
  if [ $count -eq 1 ];then 
    ${nginxpath} -c ${confpath}
  else
    echo "nginx is running" 
    exit 1
  fi
}
 
do_stop() {
  if [ $count -eq 1 ];then
    echo "nginx is stopped" 
    exit 1
  else
    kill -QUIT `cat ${pidpath}`
  fi
}
 
do_reload() {
  if [ $count -eq 1 ];then
    echo "nginx is stopped" 
    ${nginxpath} -c ${confpath}
  else
    ${nginxpath} -s reload
  fi
}
 
case "$1" in
  start)
    do_start
  ;;
  stop)
    do_stop
  ;;
  reload)
    do_reload
  ;;
  restart)
    do_stop
    sleep 10
    do_start
  ;;
  *)
    echo "Usage: {start|stop|reload|restart}"
    exit 3
  ;;
esac

exit 0

nginx.conf  nginx配置文件
[root@master-192 files]# cat nginx.conf 
user nginx nginx;
worker_processes  4;
error_log  logs/error.log crit;
pid        /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 51200;

events {
    use epoll;
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    client_body_buffer_size 8K;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    client_body_timeout 30;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_header_timeout 30;
    client_max_body_size 32m;
    
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  3;
    tcp_nodelay on;
    send_timeout 30;

    server_names_hash_max_size 512;
    server_names_hash_bucket_size 128;
    server_tokens off;
    open_file_cache off;

    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 60;
    fastcgi_read_timeout 60;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp 1 2;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 256 4k;
    fastcgi_max_temp_file_size 256k;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;

    gzip  on;
    gzip_buffers     16 4k;
    gzip_comp_level 1;
    gzip_http_version 1.1;
    gzip_min_length 1024;
    gzip_types text/css text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml application/xhtml+xml; 

    proxy_temp_path /usr/local/nginx/proxy_temp;
    proxy_buffer_size 4k;
    proxy_buffering on;
    proxy_buffers 256 4k;
    proxy_busy_buffers_size 8k;
    
     #virtualhost  加载虚拟主机
    include /usr/local/nginx/conf/vhosts_conf/*;

}

二.nginx做代理服务器
新建模块nginx-restart-1_8_0
[root@master-192 modules]# tree nginx-restart-1_8_0
nginx-restart-1_8_0
├── files
│   ├── restart.sh
│   └── web.conf
├── manifests
│   ├── before.pp
│   ├── init.pp
│   └── install.pp
└── templates

3 directories, 5 files

init.pp
[root@master-192 manifests]# cat init.pp 
class nginx-restart-1_8_0 {
  include nginx-restart-1_8_0::before
  include nginx-restart-1_8_0::install
}

before.pp
[root@master-192 manifests]# cat before.pp 
class nginx-restart-1_8_0::before {
  file { "/tools/nginx-restart-1.8.0":
    ensure => directory,
    owner  => "root",
    group  => "root",
    mode   => "0775"
  }
  
  file { "/tools/nginx-restart-1.8.0/web.conf":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-restart-1_8_0/files/web.conf",
    owner => "root",
    group => "root",
    mode => "744"
  }

  file { "/tools/nginx-restart-1.8.0/restart.sh":
    source => "puppet://master-192.168.9.157.centos.test.com/files/nginx-restart-1_8_0/files/restart.sh",
    owner => "root",
    group => "root",
    mode => "744"
  }

}

install.pp
[root@master-192 manifests]# cat install.pp 
class nginx-restart-1_8_0::install {
  exec { "install nginx-restart-1_8_0":
    cwd => "/tools/nginx-restart-1.8.0",
    command => "sh /tools/nginx-restart-1.8.0/restart.sh",
    user => "root",
    group => "root",
    path => ["/usr/bin:/usr/sbin:/bin:/sbin"],
    require => Class[nginx-restart-1_8_0::before]
  } 
}

restart.sh  修改nginx配置,重启nginx
[root@master-192 files]# cat restart.sh 
#!/bin/sh

rootpath=/tools/nginx-restart-1.8.0
confpath=/usr/local/nginx/conf
vhostspath=/usr/local/nginx/conf/vhosts_conf
restartpath=/tools/nginx-deploy-1.8.0/nginx-restart-1.8.0.sh

strdate=`date +%Y%m%d%H%M`

if [ ! -d ${rootpath}/${strdate} ];then
  mkdir -p ${rootpath}/${strdate}
fi

mv ${rootpath}/*.conf ${rootpath}/${strdate}/

#判断是否修改nginx.conf
ls -lrt ${rootpath}/${strdate}/nginx.conf  2>/etc/null
retcode=`echo $?`
if [ $retcode -ne 0 ];then
  echo "no nginx.conf"  
else
  mv ${confpath}/nginx.conf ${confpath}/nginx.conf_${strdate} 
  cp ${rootpath}/${strdate}/nginx.conf ${confpath}/
  mv ${rootpath}/${strdate}/nginx.conf ${rootpath}/${strdate}/nginx.conf_bak
fi

#判断是否修改虚拟主机配置
ls -lrt ${rootpath}/${strdate}/*.conf 2>/etc/null
retcode=`echo $?`
if [ $retcode -ne 0 ];then
  echo "no nginx.conf"  
else
  ls -lrt ${rootpath}/${strdate}/*.conf|awk '{print $9}'|while read file
  do
    if [ -f ${vhostspath}/${file} ];then
      mv ${vhostspath}/${file} ${vhostspath}/${file}_${strdate}    
      cp ${file} ${vhostspath}/
    else
      cp ${file} ${vhostspath}/
    fi
  done
fi

chown -R nginx:nginx /usr/local/nginx
sh ${restartpath} reload
retcode=`echo $?`
if [ $retcode -ne 0 ];then
  exit 1
fi

exit 0

web.conf  nginx虚拟主机配置,nginx做代理服务器
[root@master-192 files]# cat web.conf 
    upstream web_server_pool {
        ip_hash;
        server 127.0.0.1:8080;
    }

    server {
        listen  80;
        server_name 192.168.9.158;
        access_log  logs/web.access.log  main;
        location / {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass http://web_server_pool;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值