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. 1.service nginx status

然后应该返回nginx is stopped

启动:

  1. 1.service nginx start

停止:

  1. 1.service nginx stop

重启:

  1. 1.service nginx restart

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

设置开机启动

vi /etc/rc.d/rc.local

编辑这个文件



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

Nginx的配置

nginx的配置文件nginx.conf

  1. 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. 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. 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. 1.Tomcat started

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

  1. 1.cat catalina.out

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

  1. 1.tail -f catalina.out

停止Tomcat的运行

  1. 1.bin/shutdown.sh

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

在最后加上

  1. 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. 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. 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. java中的302和sendRedirect的区别

    java中有一个sendRedirect函数这个用于跳转到另外一个页面,这个实际上是一个302跳转,但是不完全等同于302跳转 点击(此处)折叠或打开 response.sendRedirect(&q ...

  2. JavaScript中forEach的用法相关

    首先说下JavaScript的forEach的标准格式. 为数组中的每个元素执行指定操作. array1.forEach(callbackfn[, thisArg]) 参数 定义 array1 必需. ...

  3. .Net 缓存依赖详解

    缓存命名空间的讲解流程 16.1  System.Web.Caching简介 本节从缓存命名空间的总体简介和组成结构入手,从整体上对System.Web.Caching进行概述. 16.1.1  Sy ...

  4. 取得网站的IP 地址

    select utl_inaddr.get_host_address('smtp.163.com') ipaddress from dual;

  5. Android_使用getIdentifier()获取资源Id

    Android 获取资源ID的另外一种方法,常规获取ID是在特定的文件夹下面的资源,如果在比较特殊的文件夹下面,就需要其他方法获取ID 了: 使用getIdentifier()方法可以方便的获各应用包 ...

  6. Weex 开发入门

    去年也听说过 React Native 技术,现在好像很多大公司都在这套技术中踩坑,在开发自己的UI.工作中涉及不到,一直没有学习相关的知识. 并且听说阿里的 vue native,一直很期待.前段时 ...

  7. ajax查询数据的举例

    1.根据下拉框的值异步查询信息 HTML代码如下: <script> $(function(){ //页面载入时执行 $("#key").change(function ...

  8. 安装ecshop出错

    在安装Ecshop的时候,遇到两个问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be cal ...

  9. 4x4矩阵键盘扫描

    4x4矩阵键盘扫描 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架 ...

  10. 学习使用Free RTOS ,移植最新的STM32 v3.5固件库

    最近拿到了一块万利的EK-STM32F的学习板,打算先用它来熟悉下STM32的编程环境,不过在这过程中和一个同事聊的时候觉得如果只调用STM32的库写程序,可能在芯片资源的利用上面可能就会差一点,在这 ...