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