一、Linux下的Java运行环境
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(软件开发工具包)。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。
二、CentOS支持的JDK
在CentOS 7 中,既可以安装开源的OpenJDK,也可以安装Oracle的Java SE(JDK)。通常CentOS 7官方仓库提供的开源的openjdk对于Java应用程序已经够用了,但是国内的开发者通常使用Windows平台上的Java SE进行开发,为了保证生产服务器和开发者计算机上的环境相一致,也可以在Linux上安装Oracle的Java SE。
三、Tomcat服务简介
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。因为Tomcat技术先进、性能稳定而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat不仅仅是一个Java容器,同时也具有传统的Web服务器的功能:处理HTML页面,但是与Apache/Nginx相比,其处理静态HTML的能力不如Apache/Nginx,通常可以将Tomcat和Apache/Nginx集成到一起,让Apache/Nginx处理静态HTML,而让Tomcat处理JSP和Java。
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
[官方网站:](http://tomcat.apache.org/)
Tomcat虽然可以跑jsp网页,通常不会使用它作为web服务器,而是作为中间件。
四、Tomcat服务的搭建与配置
如果你的系统已经安装了开发工具包,那么本机就已经有了java
如果没有安装开发工具包,使用yum源命令安装
英文系统安装: # yum -y groupinstall "Development tools"
中文系统安装: # yum -y groupinstall "开发工具"
1. 验证java版本
[root@Tomcat ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
2. 安装Java和Tomcat
在这里系统自带的java我们不使用,我们使用下载的最新版java版本。因为jdk是java程序运行的环境,解压即能用,不需要修改。
第一步:下载、解压安装jdk
[root@Tomcat ~]
[root@Tomcat ~]
第二步:更改解压后的名称,方便识别
[root@Tomcat ~]
第三步:下载、解压安装tomcat
[root@Tomcat ~]
[root@Tomcat ~]
[root@Tomcat ~]
3. Tomcat 目录结构说明
[root@Tomcat ~]
[root@Tomcat tomcat]
bin --启动命令目录
conf --配置文件目录 *重点
lib --库文件目录
logs --日志文件目录 *重点
temp --临时缓存文件
webapps --web应用家目录 *重点
work --工作缓存目录
4. 修改Tomcat环境变量
Tomcat是需要jdk才能运行,上面解压安装后,还需要在tomcat里配置jdk的目录
修改tomcat环境变量有三种方法:
第一种:定义在全局里;如果装有多个JDK的话,定义全局会冲突,不建议
[root@Tomcat ~]
第二种:写用户家目录下的环境变量文件.bash_profile
第三种:是定义在单个tomcat的启动和关闭程序里,建议使用这种
[root@Tomcat ~]
[root@Tomcat ~]
把startup.sh和shutdown.sh这两个脚本里的最前面加上下面一段:
export JAVA_HOME=/usr/local/java
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASS_PATH=$JAVA_HOME/bin/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tool.jar
export PATH=$PATH:/usr/local/java/bin:/usr/local/tomcat/bin
classpath是指定你在程序中所使用的类(.class)文件所在的位置。
path是系统用来指定可执行文件的完整路径。
5. 启动Tomcat
前面安装和配置好后,下面就可以启动了,启动时会有下面这一段输出。
[root@Tomcat ~]
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
查看端口,tomcat默认是8080端口
[root@Tomcat ~]
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 31259 root 49u IPv6 465528 0t0 TCP *:webcache (LISTEN)
关闭tomcat方法
[root@Tomcat ~]
使用浏览器打开测试
[root@Tomcat ~]
可以看到如下界面
6. 修改Tomcat监听端口
[root@Tomcat ~]
69 <Connector port="80" protocol="HTTP/1.1" ----把8080改成80的话,重启后就监听80端口
70 connectionTimeout="20000"
71 redirectPort="8443" />
7. 目录布署
Tomcat的数据目录(网站家目录)
/usr/local/tomcat/webapps/ROOT/
把test目录与ROOT同级或者是在ROOT的下一级都是可行的
[root@Tomcat ~]
[root@Tomcat ~]
welcome to here!
8. 使用浏览器打开网页进行测试
[root@Tomcat ~]
[root@Tomcat ~]
五、搭建Java应用系统
1. 环境介绍
linux + apache + php + mysql --lamp环境 这是php环境
linux + nginx + php + mysql --lnmp环境 这是php环境
linux + tomcat + jsp + mysql --ljtm环境 这是java环境
2. 软件包
jdk-8u161-linux-x64.tar.gz --java包
apache-tomcat-9.0.5.tar.gz --tomcat包
mysql-connector-java-5.1.45.tar.gz --tomcat连接mysql的工具包
jsprun_6.0.0_GBK.zip --java语言开发的应用系统(网上可以自行下载)
3. 开始部署
第一步:解压应用系统
解压应用系统:
[root@Tomcat ~]
更改名称:
[root@Tomcat ~]
[root@Tomcat tomcat]
移动应用至前面文件夹:
[root@Tomcat tomcat]
[root@Tomcat jsprun]
第二步:下载、解压java连接mysql的工具包
[root@Tomcat ~]
[root@Tomcat ~]
解压后,把连接工具拷到tomcat的应用目录
[root@Tomcat ~]
[root@Tomcat mysql-connector-java-5.1.45]
第三步:安装mysql数据库(注意:CentOS 7版本开始,系统自带的数据库为mariadb,已经舍弃mysql数据库)
[root@Tomcat ~]
[root@Tomcat ~]
uid=27(mysql) gid=27(mysql) 组=27(mysql)
如果没有mysql这个用户,手工创建一个mysql用户
[root@Tomcat ~]
[root@Tomcat ~]
启动数据库
[root@Tomcat ~]
登陆数据库,创建java应用所需要的帐号和库
[root@Tomcat ~]
MariaDB> create database bbs;
MariaDB> show databases ;
MariaDB> grant all on bbs.* to 'bbs'@'localhost' identified by '123';
MariaDB> flush privileges;
MariaDB> select user,host,password from mysql.user;
第五步:修改java应用配置连接数据库
[root@Tomcat ~]
dbhost = localhost
dbport=3306
dbuser = bbs
dbpw = 123
dbname = bbs
pconnect = 0
tablepre = jrun_
database = mysql
dbcharset =
charset = gbk
headercharset = 0
tplrefresh = 1
version=5.1
第六步:重启tomcat才能生效
[root@Tomcat ~]
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@Tomcat ~]
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
第七步:使用浏览器打开访问安装
[root@Tomcat ~]
然后按照图形指引安装步骤下一步即可。
六、模块调度举例
1. 使用 Apache 的 ajp 模块调用进行调度后面两台 Apache
第一步:先在调度机上的 apache 配置
[root@Apache ~]
[root@Apache ~]
ProxyPass /apache balancer://apache/
<Proxy balancer://apache/>
BalancerMember http://10.1.1.128
BalancerMember http://10.1.1.129
</Proxy>
[root@Apache ~]
扩展一:
ProxyPass /apache balancer://apache/ # proxypass 后面不是/,而是/tomcat
<Proxy balancer://apache/>
BalancerMember http://10.1.1.128
BalancerMember http://10.1.1.129:8080
</Proxy>
这样实现的是当客户端访问 http://192.168.1.200/apache 时才会调度,如果访问 http://192.168.1.200的话,则还是 192.168.1.200 上的网站
扩展二:
实现访问 http://192.168.1.200/apache/调度给 128 和 129:8080
访问 http://192.168.1.200/test/调度给 130 和 131:8081
访问 http://192.168.1.200 的话,则还是访问 192.168.1.200
ProxyPass /apache balancer://apache/
<Proxy balancer://apache/>
BalancerMember http://10.1.1.128
BalancerMember http://10.1.1.129:8080
</Proxy>
ProxyPass /abc balancer://test/
<Proxy balancer://test/>
BalancerMember http://10.1.1.130
BalancerMember http://10.1.1.131:8081
第二步:在两台后台 web 服务器上也安装 httpd,并做一个不同的主页方便测试
在 128 上操作:
[root@Apache1 ~]
[root@Apache1 ~]
在 129 上操作:
[root@Apache2 ~]
[root@Apache2 ~]
第三步: 在Apache调度机上访问 http://192.168.1.20/apache ,就可以实现调度
2. 使用 Apache 的 ajp 模块调用进行调度后面两台 Tomcat
第一步: 先在 Apache 调度机上配置
[root@Apache ~]
[root@Apache ~]
ProxyPass /tomcat balancer://tomcat/
<Proxy balancer://tomcat/>
BalancerMember ajp://10.1.1.128:8009/ route=tomcat1
</Proxy>
[root@Apache ~]
第二步:分别在被调度机 Tomcat 上加上消息路由
在 128 上的 Tomcat1 上操作:
[root@Tomcat1 ~]
128 <Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat1">
[root@Tomcat1 ~]
[root@Tomcat1 ~]
在 129 上的 Tomcat2 上操作:
[root@Tomcat2 ~]
128 <Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat2">
[root@Tomcat2 ~]
[root@Tomcat2 ~]
第三步:在 Apache 调度机上访问 http://192.168.1.20/tomcat ,就可以实现调度
(1)它支持健康检查,当一台挂掉,就不调度它,当它 OK 了,需要对 apache reload 一下,才能再重新都调度两台。
(2)tomcat1 和 tomcat2 监听的端口是 80 还是 8080 都可以,因为是由 8009 调过来的。
(3)在两台的tomcat的index.jsp 主页里做两个不同的标记:
在 128 上的 Tomcat1 上操作:
[root@Tomcat1 ~]
在 129 上的 Tomcat2 上操作:
[root@Tomcat2 ~]
最后,在 Apache 调度机上访问 http://192.168.1.20/tomcat ,就可以实现调度,看到效果。
3. mod_jk 结合 Apache+Tomcat 实现负载均衡,动静分离
在完成两台Tomcat1,Tomcat2的安装之后,实现负载均衡,使用mod_jk可以实现节点的故障恢复功能,即一个节点出现问题,mod_jk会其不参与负载,在节点故障恢复后,mod_jk会让其参与负载,对此节点是否失败,对用户而言是透明的。
实现流程:
-
(1)用户访问数据达到Apache后,如果是静态内容,Apache立即回应;
-
(2)如果Apache发现用户请求的是动态内容如jsp,就将请求丢给其中的一台tomcat来处理。
-
(3)每次用户重复访问时,都被分配到同一台机器上(可以做会话粘滞或是会话复制)
负责负载均衡的主要是由一个配置文件完成!那就是workers.propertise。通过定义worker.list,port,host,type,lbfactor的值来定义每一台Tomcat的主机;通过lbfactor来区别每台机器的权重,权重数值越大得到的用户请求数就越多。所以,只要重点关注这个文件的内容就行了。
第一步:实验前准备写/etc/hosts记录
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
时间同步:详见CentOS 7.3 Xinetd服务的安装与配置(http://blog.51cto.com/13525470/2060765)
关闭 iptables,selinux
第二步:在 Tomcat1 和 Tomcat2 上安装好 Tomcat
详见上面部分
第三步:在 Apache调度机上安装 Apache,下面是源码版的做法
如果以前编译过 Apache,先使用下面两条命令把源码和安装路径全删除
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
上面的编译参数,可以不加--enable-proxy,--enable-proxy-ajp,--enable-proxy-balancer。因为,我们这里是使用 mod_jk 的。
第四步:在 Apache 调度机上编译 mod_jk 模块
[root@Apache ~]
http://tomcat.apache.org/download-connectors.cgi --上面的包(mod_jk)下载地址
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
conf HOWTO-RELEASE.txt LICENSE NOTICE support xdocs
docs jkstatus native README.txt tools
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
[root@Apache ~]
第五步:配置 Apache 主配置文件,使其使用 mod_jk 的子配置文件
[root@Apache ~]
Include conf/extra/httpd-jk.conf
第六步:拷贝要用到的配置文件模版
--拷贝 mod_jk 的配置文件模版到对应的 apache 配置目录
[root@Apache ~]
--拷贝定义调度的配置文件模版
[root@Apache ~]
--拷贝定义动静分离的配置文件模版
[root@Apache ~]
第七步:配置这三个配置文件
[root@Apache ~]
28 JkWorkersFile conf/extra/workers.properties
99 JkMountFile conf/extra/uriworkermap.properties
115 SetEnvIf REQUEST_URI"\.(htm|html|css|gif|jpg|js)$"no-jk
<Location /jk-status>
JkMountjk-status
Orderdeny,allow
Deny from all
Allowfrom 127.0.0.1 192.168.1.20
</Location>
<Location /jk-manager>
JkMount jk-manager
Order deny,allow
Deny from all
Allowfrom 127.0.0.1 192.168.1.20
</Location>
[root@Apache ~]
worker.list=balancer
worker.balancer.type=lb
worker.balancer.balance_workers=node1
worker.node1.reference=worker.template
worker.node1.host=10.1.1.128
worker.node1.port=8009
worker.node1.activation=A
worker.balancer.balance_workers=node2
worker.node2.reference=worker.template
worker.node2.host=10.1.1.129
worker.node2.port=8009
worker.node2.activation=A
worker.template.type=ajp13
[root@Apache ~]
/admin/*=balancer
/manager/*=balancer
/jsp-examples/*=balancer
/servlets-examples/*=balancer
/examples/*=balancer
/*.jsp=balancer
第八步:部署网站内容
一个网站,在 Apache 和后台 Tomcat 的家目录里都要部署相同的内容,实际情况可以使用共享存储。
我这里就把 Tomcat 里的内容拷过来
要注意的是目录的对应
我现在编译版 Apache 的家目录为默认的/usr/local/apache2/htdocs/
所以我现在在 Tomcat1 上操作:
把下面目录所有文件拷到 Apache 的家目录
[root@Tomcat1 ~]
第九步:配置两台 Tomcat 的 jvmroute
在 Tomcat1 上操作
[root@Tomcat1 ~]
<Engine name="Catalina"defaultHost="localhost"jvmRoute="node1">
在 Tomcat2 上操作:
[root@Tomcat2 ~]
<Engine name="Catalina"defaultHost="localhost"jvmRoute="node2">
第十步:启动服务
在1上的 Apache 上操作:
[root@Apache ~]
在 128 上的 Tomcat1 上操作:
[root@Tomcat1 ~]
[root@Tomcat1 ~]
在 129 上的 Tomcat2 上操作:
[root@Tomcat2 ~]
[root@Tomcat2 ~]
第十一步:测试
-
在客户端上的 firefox 直接访问 Apache http://192.168.1.20
得到的是 Tomcat 的主页,因为我拷过来了。
去 Apache 把/usr/local/apache2/htdocs/index.html 里的内容改一下
去 Tomcat1 和 Tomcat2 把/usr/local/tomcat/webapps/ROOT/index.jsp 里的内容也简单改成不同
再访问 http://192.168.1.20 会看到修改的内容
再访问 http://192.168.1.20/index.jsp 会访问会调度到后台的两台 tomcat
-
访问 http://192.168.1.20/jk-status
-
访问 http://192.168.1.20/jk-manager
-
在 Tomcat 上安装 jsprun
步骤省略
最后
[root@Tomcat1 ~]
再访问
http://10.1.1.1/jsprun
会看到所有的文件都以列表形式显示,因为默认 Apache 访问的主页为 index.html。所以 http://10.1.1.1/jsprun/index.jsp 访问,就可以访问 OK 了。
(责任编辑:IT) |