Linux下搭建Nginx+Tomcat+Redis搭建分布式项目
1. 所需软件版本及个数
Linux版本:Centos6.5 数量 :1
Tomcat版本:apache-tomcat-7.0.82.tar.gz 数量:3
Redis版本:redis-2.8.9.tar.gz 数量:1
Nginx版本:nginx-1.4.2.tar.gz 数量:1
Jdk版本:java version "1.8.0_131" 数量:1
软件安装包和所需jar包地址:
https://pan.baidu.com/s/1eUm0n5o
密码:33a2
目录下 linux安装环境/linux搭建nginx+tomcat+redis安装软件和jar包.rar
2. 软件存放位置(根据自己需要而定)
在搭建环境的过程中,我再/opt目录下创建了一个目录software,以后所有的安装包都放在此目录下。 完整存放目录为/opt/software
3. 各个软件安装过程
3.1 jdk安装
copy文件:将jdk-linux-i586.tar.gz文件 copy 到/opt/software里
解压jdk:
解压jdk 解压命令 :tar–xzvf jdk-linux-i586.tar.gz。在/opt/software下创建javahome 文件夹, 然后将jdk解压之后的文件拷贝到此文件夹下。
配置java环境变量:
配置环境变量(配置环境变量的文件 /etc/profile)
使用vi编辑器打开 环境变量的配置文件 vi /etc/profile
在最后面 加上下面的命令(具体的javahome的位置由环境而定)
#set java environment
JAVA_HOME=/opt/software/javahome/jdk1.8.0_131
JRE_HOME=/opt/software/javahome/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOMEPATH CLASSPATH
保存退出
启用刷新配置 source /etc/profile
测试jdk是否安装成功:
命令 java –version 如下显示了jdk的版本号就证明 jdk安装成功了。
[root@hserver1 ~]# java-version
java version"1.8.0_131"
Java(TM) SE RuntimeEnvironment (build 1.8.0_131-b11)
Java HotSpot(TM) Client VM(build 25.131-b11, mixed mode)
3.2 Tomcat安装
注意事项:
安装tomcat的过程与安装jdk的过程大致相同,唯一不同的是在搭建Nginx环境的过程中,因为需要安装多个tomcat来进行测试。如果tomcat的环境变量配置有问题的话会造成一台tomcat启动,另一台机器会启动不起来的问题。
多台tomcat运行,tomcat环境变量配置(以两台tomcat为例):
端口号冲突:由于tomcat是复制过来的,故tomcat启动的端口号是一样的,首先解决就应该是端口号的问题。在tomcat解压目录下 /conf/server.xml 在如下图所示的位置修改端口号(修改三处)
我在此将端口号分别修改成了8011,8010,8012,其他两台tomcat我分别修改为了,
tomcat2:8021,8020,8022
tomcat3:8031,8030,8032
环境变量配置 :打开 profile文件加入如下配置
#firstTomcat
CATALINA_BASE=/opt/software/tomcat
CATALINA_HOME=/opt/software/tomcat
TOMCAT_HOME=/opt/software/tomcat
export CATALINA_BASECATALINA_HOME TOMCAT_HOME
#secondTomcat
CATALINA_2_BASE=/opt/software/tomcat2
CATALINA_2_HOME=/opt/software/tomcat2
TOMCAT_2_HOME=/opt/software/tomcat2
export CATALINA_2_BASECATALINA_2_HOME TOMCAT_2_HOME
#thirdTomcat
CATALINA_3_BASE=/opt/software/tomcat3
CATALINA_3_HOME=/opt/software/tomcat3
TOMCAT_3_HOME=/opt/software/tomcat3
export CATALINA_3_BASECATALINA_3_HOME TOMCAT_3_HOME
第一个默认的tomcat的环境变量,不需修改,只要修改tomcat2和tomcat3文件下的文件即可。
具体修改文件 进入tomcat2的安装目录, 使用vi编辑器打开 /bin/catalina.sh 加入如下的配置(tomcat3同理)
exportCATALINA_BASE=$CATALINA_2_BASE
exportCATALINA_HOME=$CATALINA_2_HOME
加入位置如下图所示:
新建测试项目sso测试tomcat启动是否正常:
测试项目我是直接复制webapps下的examples 文件修改名称为sso
在sso下为了方便以后整合后的测试,新建了两个jsp,index.jsp和clearSession.jsp
(借鉴博客地址
http://blog.csdn.net/winwll/article/details/78341867?locationNum=9&fps=1)
如下图所示
文件具体内容
Index.jsp
<%@ pagecontentType="text/html; charset=utf-8" language="java"import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<h1>这个是第1个页面</h1><br>
<%
if(session.getAttribute("ss") == null) {
session.setAttribute("ss", "page1 session");
}
out.print("session ss is " +session.getAttribute("ss").toString()+"<br/>");
out.print("session id is " +session.getId());
%>
</body>
</html>
clearSession.jsp
<%@ pagecontentType="text/html; charset=utf-8" language="java"import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<h1>这个是第1个页面</h1><br>
<%
if(session.getAttribute("ss") != null) {
session.removeAttribute("ss");
}
%>
session is clear.
</body>
</html>
启动测试:
启动命令 在bin下 输入 ./startup.sh
测试结果如下图所示
3.3 安装Nginx(所有包均下载到software下)
安装nginx借鉴博客原地址:https://www.cnblogs.com/www-vnote-net/p/6277942.html
一、准备nginx的安装环境
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
下面正式开始
---------------------------------------------------------------------------
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
跟Windows安装软件一样,可以自定义目录,这里以/soft 为例
一:Nginx安装
[root@user ~]# cd /soft
1.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
[root@user ~]# cd /opt/software
[root@user ~]# wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
[root@user ~]# tar -zxvf pcre-8.40.tar.gz
[root@user ~]# cd pcre-8.40
[root@user ~]# ./configure
[root@user ~]# make
[root@user ~]# make install
2.安装zlib库
http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
[root@user ~]# cd /opt/software
[root@user ~]#wgethttp://zlib.net/zlib-1.2.10.tar.gz
[root@user ~]#tar -zxvf zlib-1.2.10.tar.gz
[root@user ~]# cd zlib-1.2.10
[root@user ~]#./configure
[root@user ~]#make
[root@user ~]#make install
3.安装ssl(某些vps默认没装ssl)
[root@user ~]#cd /opt/software
[root@user ~]#wgethttp://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
[root@user ~]#tar -zxvfopenssl-fips-2.0.14.tar.gz
[root@user ~]#yum -y install opensslopenssl-devel
4.安装nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个。
注意:nginx的默认安装路径是 /usr/local/nginx 其运行文件在其/usr/local/nginx/sbin目录下面
[root@user ~]# cd /opt/software
[root@user ~]# wgethttp://nginx.org/download/nginx-1.4.2.tar.gz
[root@user ~]# tar -zxvf nginx-1.4.2.tar.gz
[root@user ~]# cd nginx-1.4.2
[root@user ~]# ./configure
[root@user ~]# make
[root@user ~]# make install
如果直接执行 ./configure则nginx安装到默认路径,自定义安装步骤如下,安装到/soft/nginx目录
[root@user ~]# ./configure --sbin-path=/soft/nginx/nginx \--conf-path=/soft/nginx/nginx.conf \--pid-path=/soft/nginx/nginx.pid \--with-http_ssl_module \--with-pcre=/soft/pcre-8.40 \--with-zlib=/soft/zlib-1.2.10 \--with-openssl=/soft/openssl-fips-2.0.14
注意与安装的版本号、目录一致
5.启动
确保系统的 80 端口没被其他程序占用,默认路径安装运行/usr/local/nginx/sbin/nginx命令来启动 Nginx。
说明:
由于我本身是按照默认安装的启动nginx 的命令是 ./usr/local/nginx/sbin/nginx
使用80 端口访问如下图所示就证明安装nginx成功了,由于我已经改了端口号,图片上显示的端口号不是80,而是800,这个在后面整合的时候会说到。
3.4 安装redis
1, 下载并解压
[root@hserver1 bin]#cd /opt/software
[root@hserver1 bin]# wgethttp://download.redis.io/releases/redis-2.8.9.tar.gz 如果已存在就不用从网上获取
[root@hserver1 bin]# tar-xzvfredis-2.8.9.tar.gz
[root@hserver1 bin]# cd redis-2.8.9
[root@hserver1 bin]# make
[root@hserver1 bin]# cd src
[root@hserver1 bin]# make install
2, 转移redis编译后的文件到指定文件目录下,创建一个bin一个etc,将必要文件(redis.conf配置文件和bin需要的文件)进行拷贝。
#mkdir /opt/software/redis
# mkdir /opt/software/redis/bin
# mkdir /opt/software/redis/etc
# cp /opt/software/redis-2.8.9/redis.conf /opt/software/redis
# cd /op/redis-2.8.9/src/
# cp mkreleasehdr.sh redis-benchmarkredis-check-aof redis-check-dump redis-cli redis-sentinel redis-server/opt/software/redis/bin
3, 启动redis,进入到bin/redis-server中,执行下列命令启动:
# cd /opt/software/redis/bin
# ./redis-server/opt/software/redis/redis.conf
4. 测试启动结果展示借用别人的图
如果显示如上所示的图,证明redis搭建成功了。
注意事项:
5 退出后,发现redis也跟着退出了,解决如下:修改redis.conf文件daemonize由no改为yes,这样便可以在后台运行啦。
4.tomcat交给Nginx管理
4.1 配置反向代理,修改nginx下的conf/nginx.conf。
Nginx默认安装目录/usr/local/nginx nginx.conf文件在cd /usr/local/nginx/conf目录下
加入如下设置(具体放置位置如下图所示,切记粘贴的时候小心空格丢失)
#gzip on;
upstream sso {
server localhost:8010;
server localhost:8020;
server localhost:8030;
}
Location /sso {
index index.jsp;
proxy_pass http://sso;
client_max_body_size 100m;
proxy_set_header Host$http_host;
proxy_set_header X-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
}
配置完成后就可以测试nginx管理tomcat了
4.2 测试nginx管理tomcat
输入http://ip:800/sso/测试 可以看到三个tomcat都可以通过nginx来访问
5. Tomcat修改配置共享Session
5.1 导入jar包
向三个tomcat文件夹lib中首先导入三个jar包
分别为
commons-pool2-2.4.2.jar
jedis-2.8.2.jar
tomcat-redis-session-manage-tomcat7.jar
5.2 配置tomcat中context.xml
文件位置 tomcat/conf/context.xml (三个tomcat都要修改)
在文件的</Context> 前加入如下配置 (配置和图示如下)
<ValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
<ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="3"
maxInactiveInterval="60" />
5.3 测试三个tomcatsession是否一致
6. 参考资料(安装过程遇到的问题)
整体参考:
http://blog.csdn.net/winwll/article/details/78341867?locationNum=9&fps=1
部分问题:
https://www.cnblogs.com/act123/archive/2011/08/22/2148819.html
http://blog.csdn.net/yzh54ak/article/details/5787808
http://blog.csdn.net/qq_27028561/article/details/51691284
http://blog.csdn.net/testcs_dn/article/details/51461750
http://www.linuxidc.com/Linux/2014-04/100755.htm
安装nginx参考:
https://www.cnblogs.com/www-vnote-net/p/6277942.html