Nginx与Tomcat安装、配置与优化

Nginx与Tomcat安装、配置与优化

Nginx的安装与使用

Nginx是一款优秀的反向代理服务器

安装:

  1. rpm(或者是pkg安装),是预编译好的程序包安装
  2. yum(或者apt-get)安装,自动联网下载安装包,自动管理依赖关系
  3. 编译安装
    1. 检查和安装依赖项

      yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    2. configure
    3. make && make install

启动、停止、重启:

安装好后,测试nginx服务:

1.service nginx status

然后应该返回nginx is stopped

启动:

1.service nginx start

停止:

1.service nginx stop

重启:

1.service nginx restart

启动成功后会在网页中显示

设置开机启动

vi /etc/rc.d/rc.local

编辑这个文件



加上最后一行/opt/nginx/sbin/nginx

Nginx的配置

nginx的配置文件nginx.conf

1.[root@iZ28gvqe4biZ ~]# locate nginx
2./etc/nginx
3./etc/nginx/conf.d
4./etc/nginx/default.d
5./usr/share/nginx
6./usr/share/augeas/lenses/dist/nginx.aug
7./usr/share/nginx/html
8.[root@iZ28gvqe4biZ ~]# cd /etc/nginx/
9.[root@iZ28gvqe4biZ nginx]# ls
10.conf.d fastcgi_params koi-win nginx.conf uwsgi_params
11.default.d koi-utf mime.types scgi_params win-utf
12.[root@iZ28gvqe4biZ nginx]#
13.vi nginx.conf

nginx是一个基于模块化设计的一个应用程序

1.# 顶层配置信息管理服务器级别行为
2.worker_processes 1;
3.
4.# event指令与事件模型有关,配置处理连接有关信息
5.events {
6. worker_connections 1024;
7.}
8.
9.# http指令处理http请求
10.http {
11. # mime type映射
12. include mime.types;
13. default_type application/octet-stream;
14.
15. sendfile on;
16. #tcp_nopush on;
17.
18. #keepalive_timeout 0;
19. keepalive_timeout 65;
20.
21. #gzip on;
22.
23. # server 表示一个虚拟主机,一台服务器可配置多个虚拟主机
24. server {
25. # 监听端口
26. listen 80;
27. # 识别的域名
28. server_name localhost;
29.
30. # 一个关键设置,与url参数乱码问题有关
31. charset utf-8;
32.
33. #access_log logs/host.access.log main;
34.
35. #location表达式:
36. #syntax: location [=|~|~*|^~|@] /uri/ { … }
37. #分为两种匹配模式,普通字符串匹配,正则匹配
38. #无开头引导字符或以=开头表示普通字符串匹配
39. #以~或~* 开头表示正则匹配,~*表示不区分大小写
40. #多个location时匹配规则
41. #总体是先普通后正则原则,只识别URI部分,例如请求为/test/1/abc.do?arg=xxx
42. #1. 先查找是否有=开头的精确匹配,即location = /test/1/abc.do {...}
43. #2. 再查找普通匹配,以 最大前缀 为规则,如有以下两个location
44. # location /test/ {...}
45. # location /test/1/ {...}
46. # 则匹配后一项
47. #3. 匹配到一个普通格式后,搜索并未结束,而是暂存当前结果,并继续再搜索正则模式
48. #4. 在所有正则模式location中找到第一个匹配项后,以此匹配项为最终结果
49. # 所以正则匹配项匹配规则受定义前后顺序影响,但普通匹配不会
50. #5. 如果未找到正则匹配项,则以3中缓存的结果为最终结果
51. #6. 如果一个匹配都没有,返回404
52.
53. #location =/ {...} 与 location / {...} 的差别
54. #前一个是精确匹配,只响应/请求,所有/xxx类请求不会以前缀匹配形式匹配到它
55. #而后一个正相反,所有请求必然都是以/开头,所以没有其它匹配结果时一定会执行到它
56.
57. #location ^~ / {...} ^~意思是非正则,表示匹配到此模式后不再继续正则搜索
58. #所有如果这样配置,相当于关闭了正则匹配功能
59. #因为一个请求在普通匹配规则下没得到其它普通匹配结果时,最终匹配到这里
60. #而这个^~指令又相当于不允许正则,相当于匹配到此为止
61. location / {
62. root html;
63. index index.html index.htm;
64. # deny all; 拒绝请求,返回403
65. # allow all; 允许请求
66. }
67.
68. location /test/ {
69. deny all;
70. }
71.
72. location ~ /test/.+\.jsp$ {
73. proxy_pass http://192.168.1.62:8080;
74. }
75.
76. location ~ \.jsp$ {
77. proxy_pass http://192.168.1.61:8080;
78. }
79.
80. # 定义各类错误页
81. error_page 404 /404.html;
82.
83. # redirect server error pages to the static page /50x.html
84. #
85. error_page 500 502 503 504 /50x.html;
86. location = /50x.html {
87. root html;
88. }
89.
90. # @类似于变量定义
91. # error_page 403 http://www.jikexueyuan.com这种定义不允许,所以利用@实现
92. error_page 403 @page403;
93. location @page403 {
94. proxy_pass http://http://www.jikexueyuan.com;
95. }
96. }
97.
98.
99. # another virtual host using mix of IP-, name-, and port-based configuration
100.
101. server {
102. listen 80;
103. #listen 9090
104. server_name www.test.com test.com other.cc;
105.
106. location / {
107. # root d:\\test; 注意,win下d:\test因转义符问题不允许
108. root d:/test
109. index index.html index.htm;
110. }
111. }
112.}
113.

Nginx的优化

1.
2.# nginx不同于apache服务器,当进行了大量优化设置后会魔术般的明显性能提升效果
3.# nginx在安装完成后,大部分参数就已经是最优化了,我们需要管理的东西并不多
4.
5.#user nobody;
6.
7.#阻塞和非阻塞网络模型:
8.#同步阻塞模型,一请求一进(线)程,当进(线)程增加到一定程度后
9.#更多CPU时间浪费到切换一,性能急剧下降,所以负载率不高
10.#Nginx基于事件的非阻塞多路复用(epoll或kquene)模型
11.#一个进程在短时间内可以响应大量的请求
12.#建议值 <= cpu核心数量,一般高于cpu数量不会带好处,也许还有进程切换开销的负面影响
13.worker_processes 1;
14.
15.#将work process绑定到特定cpu上,避免进程在cpu间切换的开销
16.worker_cpu_affinity 0001
17.#8内核4进程时的设置方法 worker_cpu_affinity 00000001 00000010 00000100 10000000
18.
19.# 每进程最大可打开文件描述符数量(linux上文件描述符比较广义,网络端口、设备、磁盘文件都是)
20.# 文件描述符用完了,新的连接会被拒绝,产生502类错误
21.# linux最大可打开文件数可通过ulimit -n FILECNT或 /etc/security/limits.conf配置
22.# 理论值 系统最大数量 / 进程数。但进程间工作量并不是平均分配的,所以可以设置的大一些
23.worker_rlimit_nofile 655350
24.
25.#error_log logs/error.log;
26.#error_log logs/error.log notice;
27.#error_log logs/error.log info;
28.#pid logs/nginx.pid;
29.
30.
31.events {
32. # 并发响应能力的关键配置值
33. # 每个进程允许的最大同时连接数,work_connectins * worker_processes = maxConnection;
34. # 要注意maxConnections不等同于可响应的用户数量,
35. # 因为一般一个浏览器会同时开两条连接,如果反向代理,nginx到后端服务器的连接也要占用连接数
36. # 所以,做静态服务器时,一般 maxClient = work_connectins * worker_processes / 2
37. # 做反向代理服务器时 maxClient = work_connectins * worker_processes / 4
38.
39. # 这个值理论上越大越好,但最多可承受多少请求与配件和网络相关,也可最大可打开文件,最大可用sockets数量(约64K)有关
40. worker_connections 500;
41.
42. # 指明使用epoll 或 kquene (*BSD)
43. use epoll
44.
45. # 备注:要达到超高负载下最好的网络响应能力,还有必要优化与网络相关的linux内核参数
46.}
47.
48.
49.http {
50. include mime.types;
51. default_type application/octet-stream;
52.
53. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
54. # '$status $body_bytes_sent "$http_referer" '
55. # '"$http_user_agent" "$http_x_forwarded_for"';
56.
57. # 关闭此项可减少IO开销,但也无法记录访问信息,不利用业务分析,一般运维情况不建议使用
58. access_log off
59. # 只记录更为严重的错误日志,可减少IO压力
60. error_log logs/error.log crit;
61. #access_log logs/access.log main;
62.
63. # 启用内核复制模式,应该保持开启达到最快IO效率
64. sendfile on;
65.
66. # 简单说,启动如下两项配置,会在数据包达到一定大小后再发送数据
67. # 这样会减少网络通信次数,降低阻塞概率,但也会影响响应及时性
68. # 比较适合于文件下载这类的大数据包通信场景
69. #tcp_nopush on; 在
70. #tcp_nodelay on|off on禁用Nagle算法
71.
72. #keepalive_timeout 0;
73.
74. # HTTP1.1支持持久连接alive
75. # 降低每个连接的alive时间可在一定程度上提高可响应连接数量,所以一般可适当降低此值
76. keepalive_timeout 30s;
77.
78. # 启动内容压缩,有效降低网络流量
79. gzip on;
80. # 过短的内容压缩效果不佳,压缩过程还会浪费系统资源
81. gzip_min_length 1000;
82. # 可选值1~9,压缩级别越高压缩率越高,但对系统性能要求越高
83. gzip_comp_level 4;
84. # 压缩的内容类别
85. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
86.
87. # 静态文件缓存
88. # 最大缓存数量,文件未使用存活期
89. open_file_cache max=655350 inactive=20s;
90. # 验证缓存有效期时间间隔
91. open_file_cache_valid 30s;
92. # 有效期内文件最少使用次数
93. open_file_cache_min_uses 2;
94.
95. server {
96. listen 80;
97. server_name localhost;
98.
99. #charset koi8-r;
100.
101. #access_log logs/host.access.log main;
102.
103. location / {
104. root html;
105. index index.html index.htm;
106. }
107.
108. #error_page 404 /404.html;
109.
110. # redirect server error pages to the static page /50x.html
111. #
112. error_page 500 502 503 504 /50x.html;
113. location = /50x.html {
114. root html;
115. }
116.
117. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
118. #
119. #location ~ \.php$ {
120. # proxy_pass http://127.0.0.1;
121. #}
122.
123. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
124. #
125. #location ~ \.php$ {
126. # root html;
127. # fastcgi_pass 127.0.0.1:9000;
128. # fastcgi_index index.php;
129. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
130. # include fastcgi_params;
131. #}
132.
133. # deny access to .htaccess files, if Apache's document root
134. # concurs with nginx's one
135. #
136. #location ~ /\.ht {
137. # deny all;
138. #}
139. }
140.
141.
142. # another virtual host using mix of IP-, name-, and port-based configuration
143. #
144. #server {
145. # listen 8000;
146. # listen somename:8080;
147. # server_name somename alias another.alias;
148.
149. # location / {
150. # root html;
151. # index index.html index.htm;
152. # }
153. #}
154.
155.
156. # HTTPS server
157. #
158. #server {
159. # listen 443 ssl;
160. # server_name localhost;
161.
162. # ssl_certificate cert.pem;
163. # ssl_certificate_key cert.key;
164.
165. # ssl_session_cache shared:SSL:1m;
166. # ssl_session_timeout 5m;
167.
168. # ssl_ciphers HIGH:!aNULL:!MD5;
169. # ssl_prefer_server_ciphers on;
170.
171. # location / {
172. # root html;
173. # index index.html index.htm;
174. # }
175. #}
176.
177.}
178.

Tomcat的安装使用

Tomcat的安装需要JDK的支持,所以在服务器上要先安装JDK(详情看前面文章)并配置环境变量

下载安装tomcat:http://tomcat.apache.org/

解压文件,解压完成直接就可以使用

进入目录下,执行bin/startup.sh

执行成功后会显示

1.Tomcat started

默认情况下,在linux下是后台运行的,因此控制台是看不到的,如果要看到log文件输出,则在目录下有一个logs文件夹,文件夹内有个catalina.out文件,查看它也就知道了整个运行结果

1.cat catalina.out

如果想要实时监控,则可以

1.tail -f catalina.out

停止Tomcat的运行

1.bin/shutdown.sh

设置开机自动运行vi /etc/rc.d/rc.local

在最后加上

1.export JAVA_HOME=/opt/jdk1.8.0_51
2.$JAVA_HOME/bin/startup.sh

由于rc.local文件与profile文件的启动顺序不一样,而且使用的脚本也不一样,所以有可能JAVA是不能一开始读到的,也就是说Tomcat没有JDK启动失败,所以要重新设置JAVA的环境变量

Tomcat的配置与优化

  • 内存使用配置catalina.sh

    中间的位置,有
1.# Uncomment the following line to make the umask available when using the
2.# org.apache.catalina.security.SecurityListener
3.#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
4.
5.# windows下设置方法
6.#set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:PermSize=512M -XX:MaxPermSize=512m
7.# 通过内存设置充分利用服务器内存
8.# -server模式启动应用慢,但可以极大程度提高运行性能
9.# java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError: PermGen space,可以不设置
10.# headless=true适用于linux系统,与图形操作有关,如生成验证码,含义是当前使用的是无显示器的服务器,应用中如果获取系统显示有关参数会抛异常
11.# 可通过jmap -heap proccess_id查看设置是否成功
12.JAVA_OPTS=$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true
13.# ----- Execute The Requested Command -----------------------------------------
14.
  • 最大连接数配置server.xml

    在中间部分
1.    <!-- protocol 启用 nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->
2. <!-- minProcessors最小空闲连接线程数-->
3. <!-- maxProcessors最大连接线程数-->
4. <!-- acceptCount允许的最大连接数,应大于等于maxProcessors-->
5. <!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名-->
6. <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
7. connectionTimeout="20000"
8. redirectPort="8443
9.
10. maxThreads=“500”
11. minSpareThreads=“100”
12. maxSpareThreads=“200”
13. acceptCount="200"
14. enableLookups="false"
15. />

Nginx与Tomcat安装、配置与优化的更多相关文章

  1. nginx+tomcat安装配置

    nginx+tomcat安装配置 # nginx+tomcat安装配置 #创建网站目录 mkdir -p /www/wwwroot cd /www #安装配置 wget http://mirrors. ...

  2. centos tomcat/resin安装配置 卸载系统自带的java tomcat安装配置 安装JDK resin安装配置 第二十八节课

    centos  tomcat/resin安装配置  卸载系统自带的java  tomcat安装配置  安装JDK   resin安装配置    第二十八节课 tomcat和java都不需要编译 tom ...

  3. Tomcat安装配置

    Tomcat安装配置 很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取 ...

  4. Zookeeper、Solr和Tomcat安装配置实践

    Zookeeper.Solr和Tomcat安装配置实践

  5. nginx,php-fpm的安装配置

    在centos7.2的系统下安装nginx和php-fpm nginx 安装 yum install -y nginx 即可完成安装 配置 由于之前项目使用的是apache,所以项目目录在var/ww ...

  6. tomcat 安装配置及问题解决

    最近没写程序 刚想运行一个jsp程序发现tomcat出现一些问题,然后就重新装了程序,重新配置 总结经验就是不要怕报错,把错误复制下来,百度里面都有解决办法 要安装与自己jdk版本相匹配的tomcat ...

  7. tomcat 安装配置部署到nginx+tomcat+https

    目录 1 Tomcat简介 2.下载并安装Tomcat服务 2.2 部署java环境 2.3 安装Tomcat 2.4 Tomcat目录介绍 (关注点 bin conf logs webapps) 2 ...

  8. jpress-配合nginx与tomcat安装

    目录 1. 前言 2. yum安装tomcat 2. yum安装MySQL 3. 下载JPress并安装 4. 配置tomcat使其可以部署多个网站 5. 安装nginx并配置 6. 将已经安装好的j ...

  9. tomcat安装配置.md

    tomcat 安装 安装jdk jdk我使用的是oracle的,如果下载请在oracle的官网上下载.或者你也可以使用openjdk,官网在http://openjdk.java.net/. # ta ...

随机推荐

  1. mysql jdbc 查询连接问题

    做了一个测试,mysql jdbc 链接A调用setAutoCommit,设置false,查询指定数据,可以查询出来,另个一链接把指定的数据给删除了,第一个链接在此查询的时候,仍然可以查询出来,使用的 ...

  2. Android简单登录系统

    很长时间没有写博客了,最近一直在写android for gis方面的项目.不过这篇博客就不写gis方面的了,今天刚刚做的一个简单的android登录系统.数据库是android自带的sqlite,s ...

  3. zepto 获取checked selected元素

    原文阅读:WISER CODER 1. Zepto.js and the :selected and :checked selectors 如果你已经看上了jQuery那残弱的表兄弟, Zepto.j ...

  4. 卸载cloudera manager

    卸载Cloudera-Manager sudo /usr/share/cmf/uninstall-cloudera-manager.sh 一直选择Yes 就好 卸载完成后,它会问你是否要将databa ...

  5. Ubuntu 13.04下安装Vmware tools 9.2.3

    更新13.04后 VmwareTools安装会出现三个问题 找不到generic kernel headers头文件 编译vmci出错 编译vmhgfs出错 第一个问题是系统的文件位置换了,而VMTO ...

  6. vim highlight whitespace at end of line and auto delete them

    install Vundle.vim mkdir ~/.vim/bundle git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bun ...

  7. php 数据结构 hash表

    hash表 定义 hash表定义了一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法.由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来 ...

  8. css3实现的三种loading动画(转载)

    收藏了: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  9. WF编译报错

    最近在研究WF的时候,遇到了一个未知的错误,错误信息时这样的 错误 102 扩展“Microsoft.Activities.Build.Validation.ValidationBuildExtens ...

  10. snort简介以及在Ubuntu下的安装

    一.简介 Snort是一套开放源代码的网络入侵预防软件与网络入侵检测软件.Snort使用了以侦测签章(signature-based)与通信协议的侦测方法.Snort是一个免费的IDS(入侵监测系统) ...