模拟tomcat集群

1、下载tomcat7,/usr/local下新建目录tomcat,将tomcat7剪切到/usr/local/tomcat

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.100/bin/apache-tomcat-7.0.100.tar.gz
mkdir /usr/local/tomcat
mv /root/apache-tomcat-7.0..tar.gz /usr/local/tomcat

2、解压,复制一份,分别重命名为tomcat1、tomcat2

cd /usr/local/tomcat
tar -zxvf apache-tomcat-7.0..tar.gz
rm apache-tomcat-7.0..tar.gz
mv apache-tomcat-7.0. tomcat1
cp -r tomcat1 tomcat2

3、修改tomcat2使用的端口号,避免与tomcat1使用的端口号冲突

vim tomcat2/conf/server.xml

4、分别在2个tomcat的satrtup.sh中设置CATALINA_HOME

vim tomcat1/bin/startup.sh

开头添加一行:

export CATALINA_HOME=/usr/local/tomcat/tomcat1

同样的方式修改tomcat2,把tomcat1换成tomcat2即可。

其实就是配置CATALINA_HOME环境变量,也可以在/etc/profile中配置环境变量CATALINA_HOME_TOMCAT1、CATALINA_HOME_TOMCAT2,值分别是tomcat1、2的主目录,

然后分别2个tomcat的stratup.sh中引用export CATALINA_HOME=$CATALINA_HOME_TOMCAT1|2引用,麻烦些。

5、设置防火墙,打开8080、8081端口。

firewall-cmd --zone=public --add-port=/tcp --permanent
firewall-cmd --zone=public --add-port=/tcp --permanent

重启防火墙生效:

firewall-cmd --reload

我把tomcat2的端口改为8081,所以打开的是8081,使用哪个就打开哪个。

如果要使用https、ajp,自然也要打开对应的端口。

CentOS7之前使用itables命令控制端口,CentOS7即之后的版本使用firewall-cmd命令控制端口。

6、分别启动tomcat1、tomcat2,在Windows浏览器上已能访问Linux上的tomcat1、tomcat2

tomcat1/bin/startup.sh
tomcat2/bin/startup.sh

windows浏览器地址栏分别输入:

192.168.43.143:
192.168.43.143:

显示tomcat的首页,配置成功。

Linux机器的ip要换为你的,可ifconfig查看:


Nginx的使用

Nginx的windows版已经编译打包为.exe,直接用就行了,Linux版未编译,需要自己编译。

Nginx所需的依赖

  • gcc

gcc是在类Unix系统上使用的c语言的编译器,包含了编译c语言所需的库,nginx是c语言写的,编译时自然需要gcc库。

  • pcre

pcre是一个Perl的正则表达式库,nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库。

  需要pcre、pcre-devel2个库。

  • zlib

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

  需要zlib、zlib-devel2个库。

  • openssl

nginx不仅支持http协议,还支持https,使用https需要在linux安装openssl库。

    需要openssl openssl-devel2个库。

gcc只包含c的编译器,gcc-c++包含c、c++的编译器,安装哪个都行。

pcre、zlib、openssl都需要2个库,带devel的是nginx编译时用的库,不带的是nginx运行时需要的库。

1、安装依赖

一次性全部安装:

yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

已安装的会自动跳过。

yum -y install gcc automake autoconf libtool make

gcc需要配置一下,单独安装。如果不配置,执行gcc的make、make install命令时会出现“找不到命令”的错误。

很闲的可以依次检查:gcc、pcre、pcre-devel、zlib、zlib-devel、openssl、openssl-devel,未安装的安装上

yum list installed | grep pcre
yum -y install pcre

2、下载Linux版本的nginx,放到/usr/local/nginx,解压

mkdir /usr/local/nginx
cd /usr/local/nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xzvf nginx-1.16..tar.gz
rm nginx-1.16..tar.gz

3、进入解压出来的目录,编译、安装

cd nginx-1.16.

这个目录下有个src文件夹,放着nginx的源码,全是.c、.h文件。

./configure --prefix=/usr/local/nginx

运行解压目录下的configure文件,检查配置,并自动创建一个objs目录,objs下创建多个空目录,用来存放编译产生的文件。

--prefix指定nginx的安装目录。

检查配置时最好在nginx下新建一个temp目录,然后把上面这堆临时文件的保存路径改了,nginx后面加/temp,不然运行nginx后,nginx下会产生一堆临时文件的目录。

make

编译,将编译产生的文件放到objs中。

make install

安装,会安装在prefix指定的目录(nginx)下。

看到nginx下生成4个目录:sbin  放置可执行程序(只有一个nginx),conf  放置配置文件,logs  放置日志,html  放置html文档。

将解压的目录删除:

cd ..
rm -r nginx-1.16.

4、看下防火墙打开80端口没有,默认是没有打开的,需要我们打开

firewall-cmd --query-port=/tcp
firewall-cmd --zone=public --add-port=/tcp --permanent
fire-wall --reload

5、启动nginx

sbin/nginx

执行sbin下的nginx即启动nginx,Linux本地浏览器输入localhost可看到Nginx首页,windows浏览器输入Linux的ip地址也可看到nginx的首页。(默认就是80端口)


nginx的常用命令

  • whereis nginx  查看nginx的主目录
  • nginx  启动nginx
  • nginx -s stop  停止nginx
  • nginx -s quit  停止并退出nginx
  • nginx -s reload  重新加载配置文件
  • nginx -t 检测配置文件中的配置是否正确
  • nginx -v  查看nginx版本

修改nginx的配置文件后,一般都是先nginx -t测试下,没问题再nginx -s reload重新加载配置。

以上5个命令(不包括whereis nginx)的三种执行方式:

  • 绝对路径执行,/usr/local/nginx/sbin/nginx
  • 相对路径执行,比如当前目录时/usr/local,直接nginx/sbin/nginx  执行
  • 切换到nginx的sbin目录,./nginx执行。如果当前目录时要执行文件的上一级,必须加./表示当前目录下。

Linux上所有可执行文件都可以这么执行。


开机启动

设置tomcat1、tomcat2、nginx的开机启动:

vim /etc/rc.d/rc.local

把启动的程序加进去即可。


使用nginx实现负载均衡

我们在tomcat1、tomcat2上部署一个相同的项目,为了方便看效果,分别将部署在tomcat1、tomcat2上的test的index.jsp的<body>改为tomcat1,tomcat2。

修改nginx的conf/nginx.conf:添加红框的2处

重启Linux,因为我们设置了开机自启,会自动开启tomcat1、tomcat2、nginx。

在windows地址栏输入:Linux机器ip/项目名,多刷新几次,看到tomcat1、tomcat2交替处理。


nginx的官方文档:

http://nginx.org/en/docs/

Linux下使用Nginx的更多相关文章

  1. 【云服务器部署】---Linux下安装nginx

    [云服务器部署]---Linux下安装nginx 之前两篇,分别讲了:Linux下安装MySQL  和  springboot项目部署云服务器 nginx安装也是挺简单的.具体步骤如下: 第一步,下载 ...

  2. Linux下的Nginx的配置+Tomcat启动

    Linux下的Nginx的配置 首次如果你只仅主机模式,那么请你切换到桥接模式或者net模式. 1.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc ...

  3. 负载均衡---在window与linux下配置nginx

    最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar.不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx,sq ...

  4. Linux下查看Nginx的并发连接数和连接状态-乾颐堂

    Linux下查看Nginx等的并发连接数和连接状态. 1.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$N ...

  5. Linux下配置nginx,负载IIS的页面

    最近研究了下Linux下的nginx结果贴一下: 反向代理概念: 一般访问流程:a=>b,a访问b服务器, 加n来做反向代理流程:a=>n=>b 负载均衡概率:a访问B站点,B站点有 ...

  6. 【转】玩玩负载均衡---在window与linux下配置nginx

    最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar.不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx,sq ...

  7. Linux下利用nginx实现负载均衡

    linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配 ...

  8. 玩玩负载均衡---在window与linux下配置nginx

      最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar.不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx, ...

  9. Linux下查看Nginx安装目录、版本号信息?

    Linux环境下,怎么确定Nginx是以那个config文件启动的? 输入命令行: ps  -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 ngi ...

  10. linux下搭建Nginx

    Linux上搭建nginx,及简单配置  在上家公司都是运维安装nginx,到新公司后代码开发完成部署测试服务器要求自己装nginx,研究了好久安装好之后,到正式上线还要自己安装,索性把安装步骤自己记 ...

随机推荐

  1. OpenCV图像数字化

    灰度图像数字化 我们平时使用PS或者其它图像处理的软件打开一个要处理的图像,当我们将图像放大的足够大的时候我们会发现很多个灰度程度不同的小方格,其中每个方格就相当于一个像素,水平方向的方格数代表这个图 ...

  2. ZJCTF预赛一个.py的逆向题

    #!/usr/bin/env python # -*- coding:utf-8 -*- from hashlib import sha256 def xor(a,b): result = [] fo ...

  3. 简单看看LockSupport和AQS

    这次我们可以看看并发中锁的原理,大概会说到AQS,ReentrantLock,ReentrantReadWriteLock以及JDK8中新增的StampedLock,这些都是在java并发中很重要的东 ...

  4. 【模板】普通平衡树(权值splay)

    安利splay讲解: [洛谷日报第62期]Splay简易教程 [模板]普通平衡树(luogu) Description 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下 ...

  5. FileUpload实现图片的无重上传

    //如果确认了上传文件,则判断文件类型是否符合要求        if (this.FileUpload1.HasFile)        {            //获取上传文件的后缀       ...

  6. java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

    问题描述 今天在使用SpringBoot整合spring security,使用内存用户验证,但无响应报错:java.lang.IllegalArgumentException: There is n ...

  7. 马尔科夫随机场(MRF)及其在图像降噪中的matlab实现

    (Markov Random Field)马尔科夫随机场,本质上是一种概率无向图模型 下面从概率图模型说起,主要参考PR&ML 第八章 Graphical Model (图模型) 定义:A g ...

  8. vue2.x中使用计算属性巧妙的实现多选框的“全选”

    接下来我会以一个购物车的例子,来演示如果借助计算属性,精巧的实现多选框的全选功能.当然,有全选,自然对应的也还有取消全选. 以下这张gif图,就是最终的实现效果: 第一步,针对购物车每一个商品进行设置 ...

  9. python笔记04

    数据类型(二) 今日内容 1.列表 2.元组 内容回顾和补充 1.计算机基础 ①硬件:cpu,内存,硬盘,主板,网卡 ②操作系统:linux,centos, Ubuntu,redhat windows ...

  10. linux --- 杀掉特定端口进程与启用SSH服务

    Linux下端口被占用解决 有时候关闭软件后,后台进程死掉,导致端口被占用.下面以JBoss端口8083被占用为例,列出详细解决过程. 解决方法: 1.查找被占用的端口 netstat -tln ne ...