背景: 最近几天一直在琢磨Nginx反向代理以及使用Redis保存session,因为本人对java开发比较熟悉,所以在闲暇之余将公司的一个系统在虚拟机上搭建一个集群。特此总结过程。

一.需要使用的一些Linux命令。

1.1. 查看端口占用程序

    netstat -tunlp |grep 22

  1.2. 查看服务的pid

   ps -ef |grep tomcat

  1.3. 根据对应端口杀死进程

    kill pid(找到端口号信息后通过pid)

  1.4. 查看防火墙的状态

    service iptables status

  1.5. 开启防火墙

    chkconfig iptables on

    /etc/init.d/iptables start

    service iptables start

  1.6. 关闭防火墙

    chkconfig iptables off

    /etc/init.d/iptables stop

    service iptables stop

  1.7. 开启80端口

    vi /etc/sysconfig/iptables

  添加

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

  1.8. 禁止指定ip访问80端口

    iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP

  1.9. 只打开22端口
    iptables -A INPUT -p tcp –dport 22 -j ACCEPT
    iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT

  1.10 参数讲解:
        –A 参数就看成是添加一条规则
        –p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端 口的DNS
        –dport 就是目标端口,当数据从外部进入服务器为目标端口
        –sport 数据从服务器出去,则为数据源端口使用
        –j 就是指定是 ACCEPT -接收 或者 DROP 不接收

  二.需要安装的软件

      Mysql5.1+JDK1.7+Tomcat7+Redis3.0.7+Nginx1.8.1

  三.环境

      Centos6.5

  四.安装JDK1.7

    4.1.1. 列出所有jdk版本

        yum list java*

    4.1.2.  安装

        yum install java-1.7.0-openjdk.x86_64

 4.2.1.  查看自带版本

        rpm -qa|grep jdk

    

   4.2.2. 安装

        rpm -ivh jdk-7u40-linux-i586.rpm

    4.3.1. 配置环境变量

        vim ~/.bashrc;vim /etc/profile

        配置过程略

  五.安装Mysql

    1.系统自带mysql版本过低

      yum update 更新试试没有放弃吧

    2.通过wget下载后rpm安装

      wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar(可以去官网下载)

        tar -xvf 解压后rpm -ivh 安装

  六. Mysql 初始化密码

    My.cnf是mysql的配置文件可以配置mysql的字符集,大小写敏感等,还可以加入

    [mysqld]

     skip-grant-tables

    重启服务进入无密码方式进入mysql

    use user;

    UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

    FLUSH;

    quit;

  七. 安装Redis

    1. 下载

    wget http://download.redis.io/releases/redis-3.0.7.tar.gz

    2. 解压

    tar -zxvf redis-3.0.7.tar.gz

     3. 安装

      1. cd redis-3.0.7

      2.ll

已经有Makefile,直接可以用make安装

        make&&make install

      再试试: make MALLOC=libc

    redis-cli

  八. 将Tomcat的session存储到redis中已达到在集群下用户session的数据一致性。

    1. 将所需的jar导入tomcat7的bin中

      commons-pool2-2.2.jar

      jedis-2.5.2.jar

      tomcat-redis-session-manager-2.0.0.jar

    2. 在./conf/context.xml做以下配置

      <Context>

        <WatchedResource>WEB-INF/web.xml</WatchedResource>

        <!-- tomcat-redis-session共享配置 -->

      <Valve  className="com.orangefunction.tomcat.redissessions

      .RedisSessionHandlerValve" />

      <Manager  className="com.orangefunction.tomcat.redissessions

      .RedisSessionManager"

      host="localhost"

      port="6379"

      database="0"

       maxInactiveInterval="60" />

<!----------------------------- -->

    </Context>

以上配置参数很容易明白什么意思。配置完成后最好重启tomcat7看看日志信息了解是否配置成功。

  九. 下载安装nginx-1.8.1稳定版(可以去官网找到下载路径)

    1.下载安装包

      wget  http://nginx.org/download/nginx-1.8.1.tar.gz

    2. 解压

      tar-zxvf nginx-1.8.1.tar.gz

      

    3. 安装

      可以看到里面有个configuer文件那么直接编译安装即可。

      ./configure

      错误原因没有找到pcre-**需要指定pcre路径

      查找:find/-name fileName没有找到需要安装

        yum remove pcre*

        yum list pcre*

        yum install pcre*

        make && make install

  安装完成

  十.配置启动

    1. 启动nginx

      /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    2.查看是否启动

     ps -ef | grep nginx

    或浏览器访问http://127.0.0.1

    3. 关闭nginx

     ps -ef |grep nginx

kll 5578(杀掉进程)

    4. 配置nginx实现反向代理

    vim /usr/local/nginx/conf/nginx.conf

下面是配置信息:

#Nginx所用用户和组,window下不指定

#user  maybo maybo;

#工作的子进程数量(通常等于CPU数量或者2倍于CPU)

worker_processes  2;

#错误日志存放路径

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

error_log  logs/error.log  info;

#指定pid存放文件

pid        logs/nginx.pid;

events {

#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

#use epoll;

#允许最大连接数

worker_connections  2048;

}

http {

include       mime.types;

default_type  application/octet-stream;

#定义日志格式

#log_format  main  '$remote_addr - $remote_user [$time_local] $request '

#                  '"$status" $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  off;

access_log  logs/access.log;

client_header_timeout  3m;

client_body_timeout    3m;

send_timeout           3m;

client_header_buffer_size    1k;

large_client_header_buffers  4 4k;

sendfile        on;

tcp_nopush      on;

tcp_nodelay     on;

#keepalive_timeout  75 20;

include    gzip.conf;

upstream localhost {

#根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。

#同一机器在多网情况下,路由切换,ip可能不同

#ip_hash;

server localhost:8080;

server localhost:8088;

}

server {

listen       80;

server_name  localhost;

location / {

proxy_connect_timeout   3;

proxy_send_timeout      30;

proxy_read_timeout      30;

proxy_pass http://localhost;

}

}

}

以上是配置文件内容

5.   测试文件的正确性

nginx -t -c /usr/local/nginx/conf/nginx.conf

  6. 在重新启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Nginx+Tomcat+Redis实现集群搭建的更多相关文章

  1. nginx+tomcat+redis的集群+session共享

    nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...

  2. 同主机下Docker+nginx+tomcat负载均衡集群搭建

    想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

  3. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  4. Redis本地集群搭建(5版本以上)

    Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...

  5. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  6. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  7. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  8. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  9. Redis笔记-集群搭建

    Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...

随机推荐

  1. VC程序只运行一个实例,并在打开多个时激活原窗口

    (一)单文档应用程序   1.在应用程序类C~~App::InitInstance()函数中判断是否已有一个应用程序实例正在运行 BOOL C~~App::InitInstance() {     . ...

  2. submit按钮修改宽高的坑

    近些天对h5非常感兴趣,边工作边学习,虽然比较累,但过得很踏实.每天都要学习一点东西,这样才能对得起自己.好了,废话不多说,进入今天的主题. 今天遇到了一个非常有趣的东西,就是在修改submit按钮的 ...

  3. 关于Nginx部署Django项目的资料收集

    参考:https://www.cnblogs.com/chenice/p/6921727.html 参考:https://blog.csdn.net/fengzq15/article/details/ ...

  4. 阿里巴巴 JAVA 开发手册

    阿里巴巴 JAVA 开发手册 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一. 编程规约(一) 命名规约1. [强制]所有编程相关命名均不能以下划线或美元符号开始, ...

  5. Angular学习笔记—HttpClient (转载)

    HttpClientModule 应用 导入新的 HTTP Module import {HttpClientModule} from '@angular/common/http'; @NgModul ...

  6. Hbase 学习笔记4----原理

    MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? Mapper类:包括一个内部类(Context)和四个方法(setup,map,cle ...

  7. java执行cmd命令和linux命令

    文章出处http://blog.csdn.net/xh16319/article/details/17302947 一:window下执行cmd指定 一:window下执行cmd指定 程序例子: [j ...

  8. Keras实践:实现非线性回归

    Keras实践:实现非线性回归 代码 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" import ke ...

  9. python之路 线程、进程、协程、队列、python-memcache、python-redis

    一.线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import threa ...

  10. Java8中时间日期库的20个常用使用示例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期, ...