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;
}
}