4.58、Tomcat_JDK安装
4.59、安装zrlog
4.60、nginx代理tomcat
4.61、第二个java应用
一、Tomcat_JDK安装
JAVA 应用要运行起来,需要一个JVM(JAVA虚拟机),JDK可以提供这个虚拟机
JVM ---> JDK
JDK到Oracle官方下载:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
openjdk是开源的,可以直接安装。
此处实验使用openjdk
CentOS7上使用yum安装openjdk:
查找到安装包并安装:
yum list |grep jdk yum install -y java-1.8.0-openjdk
Tomcat官方网站:
http://tomcat.apache.org/
到官网下载二进制包(Binary Distributions):
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
安装Tomcat
tar zxvf apache-tomcat-9.0.27.tar.gz mv apache-tomcat-9.0.27 /usr/local/tomcat #解压完后可以直接使用
启动:
/usr/local/tomcat/bin/startup.sh
关闭:
/usr/local/tomcat/bin/shutdown.sh
查看端口
netstat -lntp |grep java tomcat有三个端口: 8080 为WEB端口 8005 shutdown(管理端口) 8009 AJP端口(第三方的应用连接这个接口,和Tomcat结合起来),可以关闭
查看进程
ps aux |grep java 或 ps aux |grep tomcat
二、安装zrlog
zrlog 是一款开源的JAVA应用,博客系统
官网: https://www.zrlog.com/
下载并改名:
wget 'http://dl.zrlog.com/release/zrlog-2.1.3-b5f0d63-release.war?attname=ROOT.war&ref=index' mv zrlog-2.1.3-b5f0d63-release.war\?attname\=ROOT.war\&ref\=index zrlog-2.1.3.war #.war包不需要解压,直接放到tomcat的webapps目录中,自动解压
安装:
mv zrlog-2.1.3.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/webapps/
放到webapps这个目录下,会自动解压
添加防火墙规则:
firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload
浏览器访问默认页面 :
ip:8080
浏览器默认访问的是ROOT的默认页面,如果要访问zrlog,需要ip:8080/zrlog,或者先把ROOT备份,在直接把zrlog-2.1.3改成ROOT,当浏览器直接访问ip:8080时,可以直接安装
mv ROOT ROOT.bak 原始的ROOT做备份 mv zrlog-2.1.3 ROOT
数据库操作:
mysql -uroot -ptobe123 -e "create database zrlog" mysql -uroot -ptobe123 -e "grant all on zrlog.* to 'zrlog'@'127.0.0.1' identified by 'zrlog-pass'" zrlog.* 针对zrlog库中所有的表 用户是zrlog 密码为zrlog-pass
三、nginx代理tomcat
为什么要为Tomcat配置反向代理?
1)如果同一台机器又有Nginx又有Tomcat,则会产生端口冲突。 2)我们需要把8080端口变成默认的80端口 3)Nginx对于静态的请求速度上要优于Tomcat,Tomcat不擅长做高并发的静态文件请求处理
配置虚拟主机:
vi /etc/nginx/conf.d/zrlog.tobe.cc
server { server_name zrlog.tobe.cc; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
配置完成后,绑定Hosts,使用域名到浏览器访问即可,也可以在虚拟主机中配置访问日志、日志切割等
四、第二个java应用
方法一:
#把ROOT恢复成刚开始的样子
在配置文件部署一个新的虚拟主机:
/usr/local/tomcat/conf/server.xml
<Host name="www.zrlog.cc" appBase="/data/wwwroot/zrlog.cc" unpackWARs="true" autoDeploy="true"> </Host> name后面是域名 appBase是应用所在的路径,当tomcat重启后,会在此目录创建站点文件夹,在此目录下部署应用,需要把war的包放到这里来 unpackWARs=”true” 是否自动解压;(也就是说,当我们往站点目录里面直接上传一个war的包,它会自动解压)
重启:
/usr/local/tomcat/bin/shutdown.sh #先关闭 /usr/local/tomcat/bin/startup.sh # 再开启 启动时,8005端口起来非常慢,这是因为tomcat在启动时会调用系统的一个随机字符设备
当tomcat完全启动后,会在配置文件中设置的位置生成对应目录
把网站war包放到该目录下会自动解压
cp /usr/local/src/zrlog-2.1.3.war /data/wwwroot/www.zrlog.cc/
解压完成后 mv zrlog-2.1.3 ROOT 改名为ROOT
然后把war包删除,否则解压后的包改名后还会自动解压
绑定hosts,然后到浏览器访问: www.zrlog.cc:8080
浏览器访问:www.zrlog.cc:8080,如果不加后面的端口8080,可以继续在nginx中配置虚拟主机,然后直接使用域名访问即可。
方法二:可以省略创建虚拟主机
在启动一个tomcat服务,监听不同的端口
拷贝一个tomcat目录,修改server.xml里面的三个端口(其中8009可以删掉,8080改为8081,8005改为8006)
cp -r tomcat/ tomcat_2 vim /usr/local/tomcat_2/conf/server.xml 修改里面的三个端口,并把最后的host修改或删除 /usr/local/tomcat_2/bin/startup.sh 启动第二个tomcat /usr/local/tomcat_2/bin/shutdown.sh 关闭第二个tomcat firewall-cmd --add-port=8081/tcp --permanent 8081端口加入白名单 firewall-cmd --reload
浏览器访问: ip:8081
小常识:增加tomcat启动速度
通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是"SHA1PRNG",这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux上,与之相关的是/dev/random和/dev/urandom。 /dev/random设备会返回小于熵池噪声总数的随机字节。/dev/random可生成高随机性的公钥或一次性密码本。若熵池空了,对/dev/random的读操作将会被阻塞,直到收集到了足够的环境噪声为止,而 /dev/urandom 则是一个非阻塞的发生器。它是/dev/random的一个副本,它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random。 总之,8005端口启动慢就是因为JVM调用了系统的/dev/random设备生成随机数,而/dev/random生成随机数时被block了,自然就会导致8005端口启动慢,解决办法是不使用/dev/random,而是使用/dev/urandom。 具体步骤如下: # vim $JAVA_HOME/jre/lib/security/java.security //将securerandom.source=file:/dev/random改为securerandom.source=file:/dev/urandom 然后重启 $JAVA_HOME在哪里? 如果是openjdk(yum安装的),在/usr/lib/jvm/ 如果是下载的二进制包,就是jdk的主目录(如/usr/local/jdk_1.8)