Nginx与Tomcat的部署

Nginx笔记


参考

入门博客:https://blog.csdn.net/qq_29677867/article/details/90112120

https://www.cnblogs.com/biglittleant/p/8979966.html

菜鸟教程(Nginx安装配置)

Linux下Nginx+Tomcat负载均衡和动静分离配置要点

Nginx的入门介绍

什么是Nginx

Nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

Nginx可以提供的服务
  1. web 服务.
  2. 负载均衡 (反向代理)
  3. web cache(web 缓存)
Nginx 的优点
  1. 高并发。静态小文件
  2. 占用资源少。2万并发、10个线程,内存消耗几百M。
  3. 功能种类比较多。web,cache,proxy。每一个功能都不是特别强。
  4. 支持epoll模型,使得nginx可以支持高并发。
  5. nginx 配合动态服务和Apache有区别。(FASTCGI 接口)
  6. 利用nginx可以对IP限速,可以限制连接数。
  7. 配置简单,更灵活。
Nginx应用场合
  1. 静态服务器。(图片,视频服务)另一个lighttpd。并发几万,html,js,css,flv,jpg,gif等。
  2. 动态服务,nginx——fastcgi 的方式运行PHP,jsp。(PHP并发在500-1500,MySQL 并发在300-1500)。
  3. 反向代理,负载均衡。日pv2000W以下,都可以直接用nginx做代理。
  4. 缓存服务。类似 SQUID,VARNISH。
主流Web服务产品对比说明
Apache-特性
  1. 2.2版本本身稳定强大,据官方说:其2.4版本性能更强。
  2. prefork模式取消了进程创建开销,性能很高。
  3. 处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在与Apache本身。
  4. 高并发时消耗系统资源相对多一些。
  5. 基于传统的select模型。
  6. 扩展库,DSO方法。
Nginx-特性
  1. 基于异步IO模型,(epoll,kqueue),性能强,能够支持上万并发。
  2. 对小文件支持很好,性能很高(限静态小文件1M)。
  3. 代码优美,扩展库必须编译进主程序。
  4. 消耗代码资源比较低。
  5. lighttpd(百度贴吧,豆瓣)
  6. 基于异步IO模式,性能和nginx相近。
  7. 扩展库是SO模式,比nginx要灵活。
    8.通过差距(mod_secdownload)可实现文件URL地址加密。
web服务产品性能对比测试
静态数据性能对比
  1. 处理静态文件Apache性能比nginx和lighttpd要差。
  2. nginx在处理小文件优势明显。
  3. 处理静态小文件(小于1M),nginx和lighttpd比Apache更有优势,lighttpd最强。
动态数据性能对比
  1. 处理动态内容三者相差不大,主要取决于PHP和数据库的压力。
  2. 当处理动态数据时,三者差距不大,从测试结果看,Apache更有优势一点。这是因为处理动态数据能力取决于PHP和后端数据的提供服务能力。也就是说瓶颈不在web服务器上。
  3. 一般PHP引擎支持的并发参考值300-1000,JAVA引擎并发300-1000,数据库的并发300-1000.
为什么Nginx的总体性能比Apache高。
  1. nginx使用最新的epoll和kqueue网络IO模型,而Apache使用床头的select模式。
  2. 目前Linux下能够承受高并发访问的squid、Memcached 都采用的是epoll网络IO模型。
如何选择WEB服务器

静态业务:高并发、采用nginx,lighttpd,根据自己的掌握程度或公司的要求。
动态业务:采用nginx和Apache均可。
既有静态业务又有动态业务:nginx或Apache,不要多选要单选。

动态业务可以由前端代理(haproxy),根据页面元素的类型,向后转发相应的服务器进行处理。

思想:我们工作都不要追求一步到位,满足需求的前提下,先用,然后逐步完善。
提示:nginx做web(Apache,lighttpd)、反向代理(haproxy,lvs,nat)及缓存服务器(squid)也是不错的。
最终建议:对外的业务nginx,对内的业务Apache(yum httpd mysql-server php)。

入门操作

Nginx的安装
1、先安装Nginx依赖的包

Nginx是C语言开发,建议在linux上运行,本教程使用Centos7作为安装环境。

  • gcc

​ 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:

yum install gcc-c++ 
  • PCRE

​ PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。Nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

yum install -y pcre pcre-devel

注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

  • zlib

​ zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel
  • openssl

​ OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

​ nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

综上所述,即运行以下四条命令:

[root@master ~]# yum install gcc-c++ 
[root@master ~]# yum install -y pcre pcre-devel
[root@master ~]# yum install -y zlib zlib-devel
[root@master ~]# yum install -y openssl openssl-devel

或者:

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel 
2、下载并上传安装包

下载地址:http://nginx.org/en/download.html 下载nginx1.8.1版本

或者直接用wget下载:

wget http://nginx.org/en/download.html/nginx-1.8.1.tar.gz
3、解压
tar -zvxf nginx-1.8.1.tar.gz -C /usr/local
4、进入到Nginx的安装目录进行configure编译

先创建相应的文件夹,为后续编译做准备

[root@master nginx-1.8.1]# cd /var 
[root@master var]# mkdir temp

[root@master var]# cd temp
[root@master temp]# ls
[root@master temp]# mkdir nginx
[root@master temp]# ls
nginx

回到Nginx目录下进行编译

[root@master ~]# cd /usr/local/nginx-1.8.1/

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建/temp以及/temp/nginx目录

编译完成结果:
在这里插入图片描述

参数含义:

prefix=/usr/local/nginx:指定nginx安装路径

–pid-path=/var/run/nginx/nginx.pid: 设置nginx.pid将存储主进程的进程ID的文件的名称。安装后,可以nginx.conf使用PID指令随时在配置文件中更改文件名。默认情况下该文件被命名 prefix/logs/nginx.pid

–lock-path=/var/lock/nginx.lock:为锁文件的名称设置前缀。安装完成后,可以nginx.conf使用LOCK_FILE指令随时在配置文件中更改该值。默认值是 prefix`/logs/nginx.lock```

–error-log-path=/var/log/nginx/error.log:设置主要错误的名称,警告和诊断文件。安装完成后,可以nginx.conf使用的的error_log指令始终在配置文件中更改文件名。默认的情况下该文件被命名 prefix/logs/error.log

–http-log-path=/var/log/nginx/access.log:设置HTTP服务器的主要请求日志文件的名称。安装之后,可以nginx.conf使用的访问日志指令随时在配置文件中更改文件名。默认情况下该文件被命名 prefix/logs/access.log

–with-http_gzip_static_module:启用构建 ngx_http_gzip_static_module 模块,使用“ .gz”文件扩展名而不是普通文件发送预压缩文件。该模块不是默认生成的。

–http-client-body-temp-path=/var/temp/nginx/client: 定义一个用于存储保存客户端请求体的临时文件的目录。安装完成后,可以nginx.conf使用client_body_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的prefix/client_body_temp

–http-proxy-temp-path=/var/temp/nginx/proxy: 定义了一个目录,用于存储从代理服务器接收到的数据的临时文件。安装后,可以nginx.conf使用proxy_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix/proxy_temp

–http-fastcgi-temp-path=/var/temp/nginx/fastcgi: 定义一个目录,用于存储从FastCGI的服务器接收到的数据的临时文件。安装完成后,可以nginx.conf使用fastcgi_temp_path 指令在配置文件中更改目录。默认情况下,该目录是命名的 prefix/fastcgi_temp

–http-uwsgi-temp-path=/var/temp/nginx/uwsgi: 定义一个目录,用于存储从uwsgi服务器接收到的数据的临时文件。安装之后,可以nginx.conf使用uwsgi_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix/uwsgi_temp

–http-scgi-temp-path=/var/temp/nginx/scgi

定义了一个目录,用于存储从SCGI服务器接收到的数据的临时文件。安装完成后,可以nginx.conf使用scgi_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix`/scgi_temp```


5、安装
[root@master nginx-1.8.1]# make

在这里插入图片描述

[root@master nginx-1.8.1]# make install

在这里插入图片描述

6、查看版本

注意:这里的Nginx目录不是上面的Nginx-1.8.1目录,而是刚刚配置安装的–prefix=/usr/local/nginx这个Nginx目录

[root@master local]# /usr/local/nginx/sbin/nginx -v

如图所示:
在这里插入图片描述

5、Nginx的启动与停止

①启动:

进入到Nginx的sbin目录下

[root@master sbin]# ./nginx

查看是否启动:

[root@master sbin]# ps -ef|grep nginx

在这里插入图片描述

或者:通过网页进入该虚拟机的IP,查看是否启动成功

192.168.100.11
在这里插入图片描述

如果访问不到,首先查看防火墙是否关闭

Nginx安装成功!

②关闭(停止)Nginx

[root@master sbin]# ./nginx -s stop

③重启nginx

[root@master sbin]# ./nginx -s reopen

⑤重新载入配置文件

[root@master sbin]# ./nginx -s reload
6、nginx的配置

nginx.conf

    # 一个server就是一个虚拟机
    server {
        listen       80;     # 监听端口
        server_name  localhost;   # 域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;     # 虚拟机的根目录
            index  index.html index.htm;     # 站点目录
        }
    }

若要在nginx.conf文件中添加一个Service节点,修改端口号就好

检查配置文件的正确性命令:

[root@master conf]# /usr/local/nginx/sbin/nginx -t

如图所示:
在这里插入图片描述

Tomcat的安装与配置
1、下载

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/

选择自己需要的版本下载,我下载的是 apache-tomcat-7.0.104.tar.gz

或者:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.104/bin/apache-tomcat-7.0.104.tar.gz
2、解压
tar -zxvf apache-tomcat-7.0.104.tar.gz -C /usr/local 
3、Tomcat的配置和内存设置

到Tomcat的bin目录下,修改 catalina.sh 文件

在# OS specific support. $var must be set to either true or false.后面,cygwin=false前面输入以下内容

JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=1024m -XX:MaxPermSize=1024m"
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre

如图所示:
在这里插入图片描述

参数含义:

-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些

-Xmx:Java heap最大值,使用的最大内存 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。

-Xss: 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.

-XX:PermSize:设定内存的永久保存区域

-XX:MaxPermSize:设定最大内存的永久保存区域

4、启动Tomcat服务

到Tomcat的bin目录下启动Tomcat服务

[root@master bin]# ./startup.sh

在这里插入图片描述

然后在网页打开 IP地址:端口号 测试Tomcat是否启动成功

PS:默认端口号为8080,可在conf目录下的server.xml里修改端口号

例如:192.168.100.11:8080
在这里插入图片描述
Tomcat启动成功!

5、关闭Tomcat
[root@master bin]# ./shutdown.sh

如图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值