Java是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具备卓越的通用性、高效性、平台移植性和安全性,普遍应用于我的PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具有了显著优点和广阔前景。php
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最普遍的Java SDK(软件开发工具包)。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。css
在CentOS 7 中,既能够安装开源的OpenJDK,也能够安装Oracle的Java SE(JDK)。一般CentOS 7官方仓库提供的开源的openjdk对于Java应用程序已经够用了,可是国内的开发者一般使用Windows平台上的Java SE进行开发,为了保证生产服务器和开发者计算机上的环境相一致,也能够在Linux上安装Oracle的Java SE。html
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是不少的场合下被广泛使用,是开发和调试JSP程序的首选。由于Tomcat技术先进、性能稳定并且免费,于是深受Java爱好者的喜好并获得了部分软件开发商的承认,成为目前比较流行的Web应用服务器。java
Tomcat不只仅是一个Java容器,同时也具备传统的Web服务器的功能:处理HTML页面,可是与Apache/Nginx相比,其处理静态HTML的能力不如Apache/Nginx,一般能够将Tomcat和Apache/Nginx集成到一块儿,让Apache/Nginx处理静态HTML,而让Tomcat处理JSP和Java。node
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一块儿创建的一种动态网页技术标准。JSP技术有点相似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而造成JSP文件,后缀名为(.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其余操做系统上运行。mysql
[官方网站:](http://tomcat.apache.org/)
Tomcat虽然能够跑jsp网页,一般不会使用它做为web服务器,而是做为中间件。linux
若是你的系统已经安装了开发工具包,那么本机就已经有了java
若是没有安装开发工具包,使用yum源命令安装nginx
英文系统安装: # yum -y groupinstall "Development tools" 中文系统安装: # yum -y groupinstall "开发工具"
[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)
在这里系统自带的java咱们不使用,咱们使用下载的最新版java版本。由于jdk是java程序运行的环境,解压即能用,不须要修改。
第一步:下载、解压安装jdkweb
[root@Tomcat ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz [root@Tomcat ~]# tar xvf jdk-8u161-linux-x64.tar.gz -C /usr/local/
第二步:更改解压后的名称,方便识别sql
[root@Tomcat ~]# mv /usr/local/jdk1.8.0_161/ /usr/local/java/
第三步:下载、解压安装tomcat
[root@Tomcat ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.5/bin/apache-tomcat-9.0.5.tar.gz [root@Tomcat ~]# tar xvf apache-tomcat-9.0.5.tar.gz -C /usr/local/ [root@Tomcat ~]# mv /usr/local/apache-tomcat-9.0.5/ /usr/local/tomcat/
[root@Tomcat ~]# cd /usr/local/tomcat/ [root@Tomcat tomcat]# ls bin --启动命令目录 conf --配置文件目录 *重点 lib --库文件目录 logs --日志文件目录 *重点 temp --临时缓存文件 webapps --web应用家目录 *重点 work --工做缓存目录
Tomcat是须要jdk才能运行,上面解压安装后,还须要在tomcat里配置jdk的目录
修改tomcat环境变量有三种方法:
第一种:定义在全局里;若是装有多个JDK的话,定义全局会冲突,不建议
[root@Tomcat ~]# vim /etc/profile
第二种:写用户家目录下的环境变量文件.bash_profile
第三种:是定义在单个tomcat的启动和关闭程序里,建议使用这种
[root@Tomcat ~]# vim /usr/local/tomcat/bin/startup.sh --tomcat的启动程序 [root@Tomcat ~]# vim /usr/local/tomcat/bin/shutdown.sh --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是系统用来指定可执行文件的完整路径。
前面安装和配置好后,下面就能够启动了,启动时会有下面这一段输出。
[root@Tomcat ~]# /usr/local/tomcat/bin/startup.sh 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 ~]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 31259 root 49u IPv6 465528 0t0 TCP *:webcache (LISTEN)
关闭tomcat方法
[root@Tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
使用浏览器打开测试
[root@Tomcat ~]# firefox http://192.168.1.20:8080/
能够看到以下界面
[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml 69 <Connector port="80" protocol="HTTP/1.1" ----把8080改为80的话,重启后就监听80端口 70 connectionTimeout="20000" 71 redirectPort="8443" />
Tomcat的数据目录(网站家目录)
/usr/local/tomcat/webapps/ROOT/
把test目录与ROOT同级或者是在ROOT的下一级都是可行的 [root@Tomcat ~]# mkdir /usr/local/tomcat/webapps/test --目录名字可自定义 [root@Tomcat ~]# vim /usr/local/tomcat/webapps/test/index.jsp --自定义页面内容,以下面的话(不要写中文) welcome to here!
[root@Tomcat ~]# firefox http://192.168.1.20/test/ --这个是端口改成80的打开浏览器网页的方法 [root@Tomcat ~]# firefox http://192.168.1.20:8080/test/ --这个是端口为8080的打开浏览器网页的方法
linux + apache + php + mysql --lamp环境 这是php环境
linux + nginx + php + mysql --lnmp环境 这是php环境
linux + tomcat + jsp + mysql --ljtm环境 这是java环境
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语言开发的应用系统(网上能够自行下载)
第一步:解压应用系统
解压应用系统: [root@Tomcat ~]# unzip jsprun_6.0.0_GBK.zip -d /usr/local/tomcat/webapps/ 更更名称: [root@Tomcat ~]# cd /usr/local/tomcat [root@Tomcat tomcat]# mv ./webapps/JspRun\!_6.0.0_GBK/ ./webapps/jsprun/ 移动应用至前面文件夹: [root@Tomcat tomcat]# cd /usr/local/tomcat/webapps/jsprun/ [root@Tomcat jsprun]# mv upload/* ./
第二步:下载、解压java链接mysql的工具包
[root@Tomcat ~]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.45.tar.gz [root@Tomcat ~]# tar xvf mysql-connector-java-5.1.45.tar.gz -C /usr/src/ 解压后,把链接工具拷到tomcat的应用目录 [root@Tomcat ~]# cd /usr/src/mysql-connector-java-5.1.45/ [root@Tomcat mysql-connector-java-5.1.45]# cp /usr/src/mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar /usr/local/tomcat/webapps/jsprun/WEB-INF/
第三步:安装mysql数据库(注意:CentOS 7版本开始,系统自带的数据库为mariadb,已经舍弃mysql数据库)
[root@Tomcat ~]# yum -y install mariadb* [root@Tomcat ~]# id mysql uid=27(mysql) gid=27(mysql) 组=27(mysql) 若是没有mysql这个用户,手工建立一个mysql用户 [root@Tomcat ~]# groupadd -g 27 mysql [root@Tomcat ~]# useradd -u 27 mysql -g mysql 启动数据库 [root@Tomcat ~]# systemctl restart mariadb 登录数据库,建立java应用所须要的账号和库 [root@Tomcat ~]# mysql # 登陆数据库 MariaDB> create database bbs; # 建立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; # 查看user表容许登陆的用户
第五步:修改java应用配置链接数据库
[root@Tomcat ~]# vim /usr/local/tomcat/webapps/jsprun/config.properties 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 ~]# /usr/local/tomcat/bin/shutdown.sh --关闭omcat 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 ~]# /usr/local/tomcat/bin/startup.sh --启动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 ~]# firefox http://192.168.1.20:8080/jsprun/install.jsp --注意这里后面的jsprun和install.jsp要本身输出来(若是没有改端口的话还要加上端口)
而后按照图形指引安装步骤下一步便可。
第一步:先在调度机上的 apache 配置
[root@Apache ~]# yum -y install httpd* [root@Apache ~]# vim /etc/httpd/conf.d/proxy_ajp.conf # 注意,centos 7下没有这个文件,可是也是支持 proxy_ajp 的,因此本身创建一个这个文件就能够了 ProxyPass /apache balancer://apache/ # 定义一个负载调度的名字,这个 apache 后面要加/,不然 就只能调网站家目录的主页,而不能调家目录的其它文件 <Proxy balancer://apache/> BalancerMember http://10.1.1.128 # 成员 128 BalancerMember http://10.1.1.129 # 成 员 129 , 如 果 129 的 端 口 为 8080 , 则 就 写 http://10.1.1.129:8080 就能够了 </Proxy> [root@Apache ~]# systemctl restart httpd.service --启动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.200ProxyPass /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 ~]# yum -y install httpd* [root@Apache1 ~]# echo 128 > /var/www/html/index.html 在 129 上操做: [root@Apache2 ~]# yum -y install httpd* [root@Apache2 ~]# echo 129 > /var/www/html/index.html
第三步: 在Apache调度机上访问 http://192.168.1.20/apache ,就能够实现调度
第一步: 先在 Apache 调度机上配置
[root@Apache ~]# yum -y install httpd* [root@Apache ~]# vim /etc/httpd/conf.d/proxy_ajp.conf ProxyPass /tomcat balancer://tomcat/ # 定义一个调度,随便写 <Proxy balancer://tomcat/> BalancerMember ajp://10.1.1.128:8009/ route=tomcat1 # 定义消息路由,名字自定义 BalancerMember ajp://10.1.1.129:8009/ route=tomcat2 </Proxy> [root@Apache ~]# systemctl restart httpd.service --启动Apache
第二步:分别在被调度机 Tomcat 上加上消息路由
在 128 上的 Tomcat1 上操做: [root@Tomcat1 ~]# vim /usr/local/tomcat/conf/server.xml 128 <Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat1"> # 在 128 的 tomcat 这一句后面加上 jvmRoute="tomcat1",名字和调度机上的对应 [root@Tomcat1 ~]# /usr/local/tomcat/bin/shutdown.sh [root@Tomcat1 ~]# /usr/local/tomcat/bin/startup.sh 在 129 上的 Tomcat2 上操做: [root@Tomcat2 ~]# vim /usr/local/tomcat/conf/server.xml 128 <Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat2"> # 在 128 的 tomcat 这一句后面加上 jvmRoute="tomcat2",名字和调度机上的对应 [root@Tomcat2 ~]# /usr/local/tomcat/bin/shutdown.sh [root@Tomcat2 ~]# /usr/local/tomcat/bin/startup.sh
第三步:在 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 ~]# echo 128 >> /usr/local/tomcat/webapps/ROOT/index.jsp 在 129 上的 Tomcat2 上操做: [root@Tomcat2 ~]# echo 129 >> /usr/local/tomcat/webapps/ROOT/index.jsp
最后,在 Apache 调度机上访问 http://192.168.1.20/tomcat ,就能够实现调度,看到效果。
在完成两台Tomcat1,Tomcat2的安装以后,实现负载均衡,使用mod_jk能够实现节点的故障恢复功能,即一个节点出现问题,mod_jk会其不参与负载,在节点故障恢复后,mod_jk会让其参与负载,对此节点是否失败,对用户而言是透明的。
实现流程:
负责负载均衡的主要是由一个配置文件完成!那就是workers.propertise。经过定义worker.list,port,host,type,lbfactor的值来定义每一台Tomcat的主机;经过lbfactor来区别每台机器的权重,权重数值越大获得的用户请求数就越多。因此,只要重点关注这个文件的内容就好了。
第一步:实验前准备写/etc/hosts记录
[root@Apache ~]# echo "10.1.1.1 Apache.com" >> /etc/hosts [root@Apache ~]# echo "10.1.1.128 Tomcat1.com" >> /etc/hosts [root@Apache ~]# echo "10.1.1.129 Tomcat2.com" >> /etc/hosts [root@Apache ~]# scp /etc/hosts 10.1.1.128:/etc/hosts --远程拷贝 /etc/hosts 文件到128机子 [root@Apache ~]# scp /etc/hosts 10.1.1.129:/etc/hosts --远程拷贝 /etc/hosts 文件到129机子
时间同步:详见CentOS 7.3 Xinetd服务的安装与配置(https://blog.51cto.com/13525470/2060765)
关闭 iptables,selinux
第二步:在 Tomcat1 和 Tomcat2 上安装好 Tomcat
详见上面部分
第三步:在 Apache调度机上安装 Apache,下面是源码版的作法
若是之前编译过 Apache,先使用下面两条命令把源码和安装路径全删除 [root@Apache ~]# rm -rf /usr/src/httpd-2.4.28/ [root@Apache ~]# rm -rf /usr/local/apache2/ [root@Apache ~]# tar xf httpd-2.4.28.tar.bz2 -C /usr/src --解压编译安装 [root@Apache ~]# cd /usr/src/httpd-2.4.28/ [root@Apache ~]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-modules=all --enable-mods-shared=all --with-mpm=prefork [root@Apache ~]# make && make install 上面的编译参数,能够不加--enable-proxy,--enable-proxy-ajp,--enable-proxy-balancer。由于,咱们这里是使用 mod_jk 的。
第四步:在 Apache 调度机上编译 mod_jk 模块
[root@Apache ~]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz http://tomcat.apache.org/download-connectors.cgi --上面的包(mod_jk)下载地址 [root@Apache ~]# tar xf tomcat-connectors-1.2.42-src.tar.gz -C /usr/src/ [root@Apache ~]# cd /usr/src/tomcat-connectors-1.2.42-src/ [root@Apache ~]# ls --这里面 conf 里有配置的模版,native 目录里能够与 apache 的 apxs 指令编译出 mod_jk 模块 conf HOWTO-RELEASE.txt LICENSE NOTICE support xdocs docs jkstatus native README.txt tools [root@Apache ~]# cd native/ [root@Apache ~]# ./configure --with-apxs=/usr/local/apache2/bin/apxs --源码版的编法 [root@Apache ~]# make && make install [root@Apache ~]# ls /usr/local/apache2/modules/mod_jk.so --编译后产生 mod_jk 模块
第五步:配置 Apache 主配置文件,使其使用 mod_jk 的子配置文件
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-jk.conf # 主配置文件加上这一句
第六步:拷贝要用到的配置文件模版
--拷贝 mod_jk 的配置文件模版到对应的 apache 配置目录 [root@Apache ~]# cp /usr/src/tomcat-connectors-1.2.42-src/conf/httpd-jk.conf /usr/local/apache2/conf/extra/ --拷贝定义调度的配置文件模版 [root@Apache ~]# cp /usr/src/tomcat-connectors-1.2.42-src/conf/workers.properties /usr/local/apache2/conf/extra/ --拷贝定义动静分离的配置文件模版 [root@Apache ~]# cp /usr/src/tomcat-connectors-1.2.42-src/conf/uriworkermap.properties /usr/local/apache2/conf/extra/
第七步:配置这三个配置文件
[root@Apache ~]# vim /usr/local/apache2/conf/extra/httpd-jk.conf 28 JkWorkersFile conf/extra/workers.properties # 由于我拷到 conf/extra,因此这里改为对应的路径 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 # 加上容许 192.168.1.20 查看 jk-status </Location> <Location /jk-manager> JkMount jk-manager Order deny,allow Deny from all Allowfrom 127.0.0.1 192.168.1.20 # 加上容许 192.168.1.20 查看 jk-manager </Location> [root@Apache ~]# vim /usr/local/apache2/conf/extra/workers.properties worker.list=balancer worker.balancer.type=lb worker.balancer.balance_workers=node1 # 指定的后面被调度的jvmroute worker.node1.reference=worker.template worker.node1.host=10.1.1.128 # 后面被调度的 tomcat 的 IP worker.node1.port=8009 # 改为 8009 worker.node1.activation=A worker.balancer.balance_workers=node2 worker.node2.reference=worker.template worker.node2.host=10.1.1.129 # 另外一台的 IP worker.node2.port=8009 # 改成 8009 worker.node2.activation=A worker.template.type=ajp13 [root@Apache ~]# vim /usr/local/apache2/conf/extra/uriworkermap.properties /admin/*=balancer # 这些目录下的全部文件都交给 balancer 去调度 /manager/*=balancer /jsp-examples/*=balancer /servlets-examples/*=balancer /examples/*=balancer /*.jsp=balancer # 表示 apache 家目录下*.jsp 就给 balancer 去进行后台两个 tomcat 的调度
第八步:部署网站内容
一个网站,在 Apache 和后台 Tomcat 的家目录里都要部署相同的内容,实际状况可使用共享存储。
我这里就把 Tomcat 里的内容拷过来
要注意的是目录的对应
我如今编译版 Apache 的家目录为默认的/usr/local/apache2/htdocs/
因此我如今在 Tomcat1 上操做:
把下面目录全部文件拷到 Apache 的家目录
[root@Tomcat1 ~]# scp -r /usr/local/tomcat/webapps/ROOT/* 10.1.1.1:/usr/local/apache2/htdocs/
第九步:配置两台 Tomcat 的 jvmroute
在 Tomcat1 上操做 [root@Tomcat1 ~]# vim /usr/local/tomcat/conf/server.xml <Engine name="Catalina"defaultHost="localhost"jvmRoute="node1"> 在 Tomcat2 上操做: [root@Tomcat2 ~]# vim /usr/local/tomcat/conf/server.xml <Engine name="Catalina"defaultHost="localhost"jvmRoute="node2">
第十步:启动服务
在1上的 Apache 上操做: [root@Apache ~]# /usr/local/apache2/bin/apachectl restart 在 128 上的 Tomcat1 上操做: [root@Tomcat1 ~]# /usr/local/tomcat/bin/shutdown.sh [root@Tomcat1 ~]# /usr/local/tomcat/bin/startup.sh 在 129 上的 Tomcat2 上操做: [root@Tomcat2 ~]# /usr/local/tomcat/bin/shutdown.sh [root@Tomcat2 ~]# /usr/local/tomcat/bin/startup.sh
第十一步:测试
最后
[root@Tomcat1 ~]# scp -r /usr/local/tomcat/webapps/jsprun/ apache.com:/usr/local/apache2/htdocs/
再访问
http://10.1.1.1/jsprun
会看到全部的文件都以列表形式显示,由于默认 Apache 访问的主页为 index.html。因此 http://10.1.1.1/jsprun/index.jsp 访问,就能够访问 OK 了。