搭建一个java环境的博客网站(zrlog)需要tomcat(是一个运行java网站的容器),tomcat的运行需要支持java运行的虚拟机(jvm)—所以需要先安装jdk
[root@linux2019 src]# yum list |grep jdk
[root@linux2019 src]# yum install -y java-1.8.0-openjdk
[root@linux2019 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.16/bin/apache-tomcat-9.0.16.tar.gz
[root@linux2019 src]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@linux2019 src]# mv apache-tomcat-9.0.16 /usr/local/tomcat
[root@linux2019 src]# /usr/local/tomcat/bin/startup.sh
查看进程
[root@linux2019 src]# ps aux|grep java #或者ps aux |grep tomcat
root 8401 1.4 5.9 3064980 120836 pts/2 Sl 16:17 0:12 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 8530 0.0 0.0 112724 988 pts/2 S+ 16:31 0:00 grep --color=auto java
[root@linux2019 src]# netstat -ltnp |grep java
tcp6 0 0 :::8009 :::* LISTEN 8401/java
tcp6 0 0 :::8080 :::* LISTEN 8401/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 8401/java
[root@linux2019 src]# iptables -nvL|grep 8080
[root@linux2019 src]# firewall-cmd --add-port=8080/tcp --permanent
success
[root@linux2019 src]# firewall-cmd --reload
success
[root@linux2019 src]# curl http://192.168.85.129:8080 -I
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 14 Feb 2019 08:45:38 GMT
[root@linux2019 src]# wget http://dl.zrlog.com/release/zrlog-2.1.0-3617b2e-release.war?attname=ROOT.war&ref=index
[root@linux2019 src]# mv zrlog-2.1.0-3617b2e-release.war\?attname\=ROOT.war zrlog-2.1.0.war
[root@linux2019 src]#mv zrlog-2.1.0.war /usr/local/tomcat/webapps/ #不需要手动解压,放入目标文件路径下会自动解压
[root@linux2019 webapps]# mv zrlog-2.1.0 zrlog
[root@linux2019 webapps]# mv ROOT ROOT.bak
[root@linux2019 webapps]# mv zrlog ROOT
[root@linux2019 webapps]# ll
总用量 10136
drwxr-x--- 14 root root 4096 2月 14 16:17 docs
drwxr-x--- 6 root root 83 2月 14 16:17 examples
drwxr-x--- 5 root root 87 2月 14 16:17 host-manager
drwxr-x--- 5 root root 103 2月 14 16:17 manager
drwxr-x--- 8 root root 111 2月 14 16:40 ROOT
drwxr-x--- 3 root root 283 2月 14 16:17 ROOT.bak
drwxr-x--- 8 root root 111 2月 14 16:40 zrlog-2.1.0
-rw-r--r-- 1 root root 10373409 1月 1 23:29 zrlog-2.1.0.war
PS:访问zrlog网站后台实际访问的是/usr/local/tomcat/webapps/ROOT/目录文件,所以直接将zrlog目录重命名成ROOT
创建zrlog数据库和用户
MariaDB [(none)]> create database zrlog;
Query OK, 1 row affected (0.002 sec)
MariaDB [(none)]> grant all on zrlog.* to 'zrlog'@'127.0.0.1' identified by 'yourpassword';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| bbs |
| blog |
| information_schema |
| mysql |
| performance_schema |
| zrlog |
+--------------------+
6 rows in set (0.002 sec)
为什么要为Tomcat配置反向代理?
[root@linux2019 conf.d]# vi zrlog.aibenwoniu.xyz.conf
server{
server_name zrlog.aibenwoniu.xyz;
location /
{
proxy_pass http://127.0.0.1:8080; #实际需要访问的内网IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
测试
[root@linux2019 conf.d]# curl -x127.0.0.1:8080 zrlog.aibenwoniu.xyz -I
HTTP/1.1 200
X-ZrLog: 2.1.0
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 15 Feb 2019 04:00:49 GMT
部署第二个Java应用
部署方式类似与nginx应用部署(IP/端口/域名)
#修改配置文件,添加host域名
[root@linux2019 conf]# cd /usr/local/tomcat/conf/
[root@linux2019 conf]# vi server.xml
#配置的appbase目录不需要手动创建,重启tomcat服务后会自动创建
[root@linux2019 conf]# /usr/local/tomcat/bin/shutdown.sh
[root@linux2019 conf]# /usr/local/tomcat/bin/startup.sh
[root@linux2019 conf]# netstat -tnlp|grep java
[root@linux2019 conf]# ps aux|grep java
#拷贝java应用的war包到webapps目录下
[root@linux2019 conf]# cd /usr/local/tomcat/webapps/
[root@linux2019 conf]# cp zrlog-2.1.0.war /data/wwwroot/ztow.aibenwoniu.xyz/
[root@linux2019 conf]# cd /data/wwwroot/ztow.aibenwoniu.xyz/
[root@linux2019 ztow.aibenwoniu.xyz]# mv zrlog-2.1.0 ROOT; rm -f zrlog-2.1.0.war
#curl测试
[root@linux2019 local]# curl -x127.0.0.1:8080 -I ztow.aibenowniu.xyz
HTTP/1.1 200
X-ZrLog: 2.1.0
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 15 Feb 2019 09:16:25 GMT
#网页访问ztow.aibenwoniu.xyz:8080安装应用
[root@linux2019 ztow.aibenwoniu.xyz]# cd /usr/local/
[root@linux2019 local]# cp -r tomcat/ tomcat_2
[root@linux2019 local]# vim tomcat_2/conf/server.xml
#删除之前新加的host域名配置,默认的host域名配置可以自定义,此次实验环境保持默认,修改默认的三个端口配置
#删除8009端口配置
#修改8080为8081
#修改8005为8006
[root@linux2019 local]# /usr/local/tomcat_2/bin/startup.sh
[root@linux2019 local]# firewall-cmd --add-port=8081/tcp --permanent
[root@linux2019 local]# firewall-cmd --reload
[root@linux2019 local]# ps aux |grep java
[root@linux2019 local]# netstat -ltnp|grep java
#curl测试
[root@linux2019 local]# curl -x127.0.0.1:8081 -I zrlog.aibenowniu.xyz
HTTP/1.1 200
X-ZrLog: 2.1.0
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 15 Feb 2019 09:14:42 GMT
#网页访问zrlog.aibenwoniu.xyz:8081
PS
通过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)