Nginx自动部署脚本

  1 #!/bin/bash
  2 #
  3 #tddh 2017-6-6  ********@163.com   rhel6u4 x86_64
  4 #
  5 #nginx install
  6 #
  7 ##########################################################################################
  8 
  9 #定义参数
 10 cur_dir=`pwd`  #packages……
 11 nginx_user=www
 12 
 13 zlib=zlib-1.2.11.tar.gz
 14 zlib_version=zlib-1.2.11
 15 
 16 openssl=openssl-1.1.0f.tar.gz
 17 openssl_version=openssl-1.1.0f
 18 
 19 pcre=pcre-8.10.tar.gz
 20 pcre_version=pcre-8.10
 21 
 22 nginx=nginx-1.13.1.tar.gz
 23 nginx_version=nginx-1.13.1
 24 
 25 module1=nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.zip
 26 module1_version=nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
 27  
 28 module2=nginx_upstream_check_module-master.zip
 29 module2_version=nginx_upstream_check_module-master
 30 
 31 #cdrom="/app/system/rhel6.SIO"   #光盘位置,全路径
 32 
 33 
 34 #依赖包,#yum安装源配置
 35 
 36 #安装nginx
 37 
 38 #系统变量
 39 
 40 
 41 cp /etc/sysctl.conf  /etc/sysctl.conf_swyang.conf
 42 
 43 cat <<EOF> /etc/sysctl.conf
 44 net.ipv4.ip_forward = 0
 45 net.ipv4.conf.default.rp_filter = 1
 46 net.ipv4.conf.default.accept_source_route = 0
 47 kernel.sysrq = 0
 48 kernel.core_uses_pid = 1
 49 net.ipv4.tcp_syncookies = 1
 50 kernel.msgmnb = 65536
 51 kernel.msgmax = 65536
 52 kernel.shmmax = 68719476736
 53 kernel.shmall = 4294967296
 54 net.ipv4.tcp_max_tw_buckets = 6000
 55 net.ipv4.tcp_sack = 1
 56 net.ipv4.tcp_window_scaling = 1
 57 net.ipv4.tcp_rmem = 4096 87380 4194304
 58 net.ipv4.tcp_wmem = 4096 16384 4194304
 59 net.core.wmem_default = 8388608
 60 net.core.rmem_default = 8388608
 61 net.core.rmem_max = 16777216
 62 net.core.wmem_max = 16777216
 63 net.core.netdev_max_backlog = 262144
 64 net.core.somaxconn = 262144
 65 net.ipv4.tcp_max_orphans = 3276800
 66 net.ipv4.tcp_max_syn_backlog = 262144
 67 net.ipv4.tcp_timestamps = 0
 68 net.ipv4.tcp_synack_retries = 1
 69 net.ipv4.tcp_syn_retries = 1
 70 net.ipv4.tcp_tw_recycle = 1
 71 net.ipv4.tcp_tw_reuse = 1
 72 net.ipv4.tcp_mem = 94500000 915000000 927000000
 73 net.ipv4.tcp_fin_timeout = 1
 74 net.ipv4.tcp_keepalive_time = 30
 75 net.ipv4.ip_local_port_range = 1024 65000
 76 net.ipv4.tcp_syncookies = 1  
 77 fs.file-max = 999999  
 78 net.ipv4.tcp_tw_reuse = 1  
 79 net.ipv4.tcp_keepalive_time = 600  
 80 net.ipv4.tcp_fin_timeout = 30  
 81 net.ipv4.tcp_max_tw_buckets = 5000  
 82 net.ipv4.ip_local_port_range = 1024 61000  
 83 net.ipv4.tcp_rmem = 10240 87380 12582912  
 84 net.ipv4.tcp_wmem = 10240 87380 12582912  
 85 net.core.netdev_max_backlog = 8096  
 86 net.core.rmem_default = 6291456  
 87 net.core.wmem_default = 6291456  
 88 net.core.rmem_max = 12582912  
 89 net.core.wmem_max = 12582912  
 90 net.ipv4.tcp_max_syn_backlog = 8192
 91 EOF
 92 
 93 if [ $? -ne 0 ]
 94     then
 95         echo "sysctl.conf   install error"
 96         exit 1
 97     else
 98         echo "11 sysctl.conf    success" >> ${cur_dir}/tddh_install.log 
 99 fi
100 
101 sysctl -p
102 
103 
104 echo  "    ${nginx_user}          soft        nproc               20480" >> /etc/security/limits.conf 
105 echo  "    ${nginx_user}          hard        nproc               26384" >> /etc/security/limits.conf 
106 echo  "    ${nginx_user}          soft        nofile              10240" >> /etc/security/limits.conf 
107 echo  "    ${nginx_user}          hard        nofile              65536" >> /etc/security/limits.conf 
108 echo  "    ${nginx_user}          soft        stack               10240" >> /etc/security/limits.conf 
109 
110 echo "session    required     pam_limits.so"  >> /etc/pam.d/login
111 if [ $? -ne 0 ]
112     then
113         echo "limits.conf  install error"
114         exit 1
115     else
116         echo "12 limits.conf   success" >> ${cur_dir}/tddh_install.log 
117 fi
118 
119 echo "UseDNS no"  >> /etc/ssh/sshd_config
120 echo "UseLogin yes"  >> /etc/ssh/sshd_config
121 /etc/init.d/sshd restart
122 if [ $? -ne 0 ]
123     then
124         echo "sshd  install error"
125         exit 1
126     else
127         echo "13 sshd   success" >> ${cur_dir}/tddh_install.log 
128 fi
129  
130 #install nginx
131 cd ${cur_dir}/packages/
132 tar -zxvf ${zlib}
133 tar -zxvf ${openssl}
134 tar -zxvf ${pcre}
135 tar -zxvf ${nginx}
136 unzip ${module1}
137 unzip ${module2}
138 
139 if [ $? -ne 0 ]
140     then
141         echo "tar nginx   install error"
142         exit 1
143     else
144         echo "14 tar nginx   success" >> ${cur_dir}/tddh_install.log 
145 fi
146 
147 cd ${nginx_version}/
148 ./configure --user=${nginx_user} --group=${nginx_user} --prefix=${cur_dir}/${nginx_version} --with-http_stub_status_module --with-http_ssl_module --add-module=${cur_dir}/packages/${module1_version} --add-module=${cur_dir}/packages/${module2_version} --with-http_realip_module --with-pcre=${cur_dir}/packages/${pcre_version}  --with-zlib=${cur_dir}/packages/${zlib_version}  --with-openssl=${cur_dir}/packages/${openssl_version}/ --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
149 
150 if [ $? -ne 0 ]
151     then
152         echo "nginx configure  install error"
153         exit 1
154     else
155         echo "15 nginx configure  success" >> ${cur_dir}/tddh_install.log 
156 fi
157 
158 make 
159 if [ $? -ne 0 ]
160     then
161         echo "nginx make  install error"
162         exit 1
163     else
164         echo "16 nginx make  success" >> ${cur_dir}/tddh_install.log 
165 fi
166 
167 make install
168 if [ $? -ne 0 ]
169     then
170         echo "nginx make install install error"
171         exit 1
172     else
173         echo "17 nginx make install success" >> ${cur_dir}/tddh_install.log 
174 fi
175 
176 
177 
178 #配置
179 
180 [ -d ${cur_dir}/${nginx_version}/lock ] || mkdir ${cur_dir}/${nginx_version}/lock
181 [ -d ${cur_dir}/${nginx_version}/run ] || mkdir ${cur_dir}/${nginx_version}/run
182 [ -d ${cur_dir}/${nginx_version}/script ] || mkdir ${cur_dir}/${nginx_version}/script
183 
184 #nginx configure
185 
186 cat <<EOF> ${cur_dir}/${nginx_version}/conf/proxy.conf
187 fs.file-max = 999999
188 net.ipv4.tcp_tw_reuse = 1
189 net.ipv4.tcp_max_tw_buckets = 5000
190 net.ipv4.ip_local_port_range = 1024 61000
191 net.ipv4.tcp_rmem = 4096 32768 262142
192 net.ipv4.tcp_wmem = 4096 32768 262142
193 net.ipv4.tcp_syncookies = 1
194 net.core.netdev_max_backlog = 8096
195 net.core.rmem_default = 262144
196 net.core.wmem_default = 262144
197 net.core.rmem_max = 2097152
198 net.core.wmem_max = 2097152
199 net.ipv4.tcp_max_syn.backlog = 1024
200 EOF
201 
202 if [ $? -ne 0 ]
203     then
204         echo "nginx proxy.conf install error"
205         exit 1
206     else
207         echo "18 nginx proxy.conf success" >> ${cur_dir}/tddh_install.log 
208 fi
209 
210 
211 
212 cpu_number=`cat /proc/cpuinfo | grep process | awk '{print $3}' | wc -l`
213 
214 
215 cat <<EOF> ${cur_dir}/${nginx_version}/conf/nginx.conf
216 user  ${nginx_user};
217 worker_processes  ${cpu_number};
218 
219 error_log  logs/error.log;
220 error_log  logs/error.log  notice;
221 error_log  logs/error.log  info;
222 
223 pid        run/nginx.pid;
224 
225 
226 events {
227     worker_connections  1024;
228 }
229 
230 
231 http {
232     include       mime.types;
233     default_type  application/octet-stream;
234 
235     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
236     #                  '$status $body_bytes_sent "$http_referer" '
237     #                  '"$http_user_agent" "$http_x_forwarded_for"';
238 
239     access_log  logs/access.log  main;
240 
241     sendfile        on;
242     #tcp_nopush     on;
243 
244     #keepalive_timeout  0;
245     keepalive_timeout  65;
246 
247     gzip  on;
248 
249     server {
250         listen       80;
251         server_name  localhost;
252 
253         #charset koi8-r;
254 
255         #access_log  logs/host.access.log  main;
256 
257         location / {
258             root   html;
259             index  index.html index.htm;
260         }
261 
262         #error_page  404              /404.html;
263 
264         # redirect server error pages to the static page /50x.html
265         #
266         error_page   500 502 503 504  /50x.html;
267         location = /50x.html {
268             root   html;
269         }
270 
271         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
272         #
273         #location ~ .php$ {
274         #    proxy_pass   http://127.0.0.1;
275         #}
276 
277         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
278         #
279         #location ~ .php$ {
280         #    root           html;
281         #    fastcgi_pass   127.0.0.1:9000;
282         #    fastcgi_index  index.php;
283         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
284         #    include        fastcgi_params;
285         #}
286 
287         # deny access to .htaccess files, if Apache's document root
288         # concurs with nginx's one
289         #
290         #location ~ /.ht {
291         #    deny  all;
292         #}
293     }
294 
295 
296     # another virtual host using mix of IP-, name-, and port-based configuration
297     #
298     #server {
299     #    listen       8000;
300     #    listen       somename:8080;
301     #    server_name  somename  alias  another.alias;
302 
303     #    location / {
304     #        root   html;
305     #        index  index.html index.htm;
306     #    }
307     #}
308 
309 
310     # HTTPS server
311     #
312     #server {
313     #    listen       443 ssl;
314     #    server_name  localhost;
315 
316     #    ssl_certificate      cert.pem;
317     #    ssl_certificate_key  cert.key;
318 
319     #    ssl_session_cache    shared:SSL:1m;
320     #    ssl_session_timeout  5m;
321 
322     #    ssl_ciphers  HIGH:!aNULL:!MD5;
323     #    ssl_prefer_server_ciphers  on;
324 
325     #    location / {
326     #        root   html;
327     #        index  index.html index.htm;
328     #    }
329     #}
330 
331 }
332 EOF
333 
334 if [ $? -ne 0 ]
335     then
336         echo "nginx nginx.conf install error"
337         exit 1
338     else
339         echo "19 nginx nginx.conf success" >> ${cur_dir}/tddh_install.log 
340 fi
341 
342 
343 cat <<EOF> ${cur_dir}/${nginx_version}/script/nginx.sh
344 #!/bin/bash  
345 # nginx Startup script for the Nginx HTTP Server  
346 # description: Nginx is a high-performance web and proxy server.  
347 #              It has a lot of features, but it's not for everyone.  
348 # processname: nginx  
349 # pidfile: /var/run/nginx.pid  
350 # config: /usr/local/nginx/conf/nginx.conf
351 
352 #nginx启动文件  
353 nginxd=${cur_dir}/${nginx_version}/sbin/nginx 
354 
355 #nginx配置文件
356 nginx_config=${cur_dir}/${nginx_version}/conf/nginx.conf  
357 
358 #nginx的pid文件
359 nginx_pid=${cur_dir}/${nginx_version}/sbin/nginx.pid  
360 RETVAL=0  
361 prog="nginx"  
362 # Source function library.  
363 . /etc/rc.d/init.d/functions  
364 # Source networking configuration.  
365 . /etc/sysconfig/network  
366 # Check that networking is up.  
367 [ ${NETWORKING} = "no" ] && exit 0  
368 [ -x $nginxd ] || exit 0  
369 # Start nginx daemons functions.  
370 start() {  
371 if [ -e $nginx_pid ];then  
372    echo "nginx already running...."  
373    exit 1  
374 fi  
375    echo -n $"Starting $prog: "  
376    daemon $nginxd -c ${nginx_config}  
377    RETVAL=$?  
378    echo  
379    [ $RETVAL = 0 ] && touch ${cur_dir}/${nginx_version}/lock/nginx  
380    return $RETVAL  
381 }  
382 # Stop nginx daemons functions.  
383 stop() {  
384     echo -n $"Stopping $prog: "  
385     killproc $nginxd  
386     RETVAL=$?  
387     echo  
388     [ $RETVAL = 0 ] && rm -f ${cur_dir}/${nginx_version}/lock/nginx ${cur_dir}/${nginx_version}/run/nginx.pid  
389 }  
390 # reload nginx service functions.  
391 reload() {  
392     echo -n $"Reloading $prog: "  
393     #kill -HUP \`cat ${nginx_pid}\`  
394     killproc $nginxd -HUP  
395     RETVAL=$?  
396     echo  
397 }  
398 # See how we were called.  
399 case "$1" in  
400 start)  
401     start  
402     ;;  
403 stop)  
404     stop  
405     ;;  
406 reload)  
407     reload  
408     ;;  
409 restart)  
410     stop  
411     start  
412     ;;  
413 status)  
414     status $prog  
415     RETVAL=$?  
416     ;;  
417 *)  
418     echo $"Usage: $prog {start|stop|restart|reload|status|help}"  
419     exit 1  
420 esac  
421 exit $RETVAL 
422 EOF
423 
424 
425 if [ $? -ne 0 ]
426     then
427         echo "nginx nginx.sh install error"
428         exit 1
429     else
430         echo "20 nginx nginx.sh success" >> ${cur_dir}/tddh_install.log 
431 fi
432 
433 chmod +x ${cur_dir}${nginx_version}/script/nginx.sh 
434 chown ${nginx_user}.${nginx_user} -R ${cur_dir}/nginx
435 
436 if [ $? -ne 0 ]
437     then
438         echo "nginx ${nginx_user} install error"
439         exit 1
440     else
441         echo "21 nginx ${nginx_user} success" >> ${cur_dir}/tddh_install.log 
442         echo #########################End##############################
443         exit 1
444 fi
原文地址:https://www.cnblogs.com/tddh/p/8407508.html