1:Hotspot Java 8 的安装(JDK)
1.1: 卸载其他版本
卸载其他所有版本,包括 OpenJDK 所有版本、Hotspot 非预期版本。
rpm -qa | grep -E "^jdk|openjdk" | sort ## 查看 OpenJDK 相关组件
sudo yum -y remove jdk1.8.0_111-1.8.0_111-fcs.x86_64
sudo yum -y remove java*openjdk* ## 卸载 OpenJDK
1.2 :下载
首页: http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
原链: http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm
## 参考: https://stackoverflow.com/questions/10268583/
wget --header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm
1.3 :安装 Hotspot 版本
sudo yum -y install jdk-8u161-linux-x64.rpm ## 安装 Hotspot
dirname `sudo find /usr/java -name src.zip` # 获取 JAVA_HOME
## sudo vim /etc/profile ## 所有用户有效
export JAVA_HOME=/usr/java/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
## 环境变量 CLASSPATH 已废弃
编辑profile文档立即生效 source /etc/profile
检查
## java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
1.4: 配置
## sudo vim $JAVA_HOME/jre/lib/logging.properties ## 日志配置
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = %1$tT,%1$tL %4$s [%3$s] - %5$s%6$s%n
2: Maven安装
2.1 下载与安装(9M)
### http://maven.apache.org/download.cgi
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
sudo tar -zxf apache-maven-3.5.2-bin.tar.gz -C /opt
sudo ln -sf /opt/apache-maven-3.5.2/bin/mvn /usr/bin/mvn
2.2 设置
## sudo vim /etc/profile ## 所有用户有效
export MAVEN_HOME=/opt/apache-maven-3.5.2
export PATH=$PATH:$MAVEN_HOME/bin
3 安装 Tomcat
选择 Tomcat7 的原因:
- Tomcat9: 首个 beta 版本刚刚发布(2017-11-15),不稳定;
- Tomcat8.5: 不支持第三方组件 redis sessions manager;
- Tomcat8.0: 支持 redis session manager,但官方声明即将结束支持(2018年6月30日);
- Tomcat7.0: 支持 redis session manager,且无结束支持的声明。
3.1 下载与安装(9M)
## https://tomcat.apache.org/download-80.cgi
## http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82-windows-x64.zip
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz
sudo tar -zxf apache-tomcat-7.0.82.tar.gz -C /opt
3.2 用户配置
## sudo vim /etc/profile ## 所有用户有效
export CATALINA_HOME=/opt/apache-tomcat-7.0.82 ## bin,lib
## export CATALINA_BASE=/opt/apache-tomcat-7.0.82 ## conf,logs,webapps,work,temp
export PATH=$PATH:$CATALINA_HOME/bin
alias slg='sudo tail -f $CATALINA_BASE/logs/catalina.out'
3.3 配置 Tomcat
## sudo vim $CATALINA_BASE/conf/logging.properties ## 日志配置
1catalina.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
2localhost.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
3manager.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
4host-manager.org.apache.juli.AsyncFileHandler.formatter = org.apache.juli.OneLineFormatter
# java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter ## 屏蔽
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tT,%1$tL %4$s [%3$s] - %5$s%6$s%n
sudo vim $CATALINA_BASE/conf/tomcat-users.xml ## 用户
# sudo vim $CATALINA_BASE/conf/server.xml ## 服务器【修改端口为 80/443】
sudo sed -i 's/8080/80/g' $CATALINA_BASE/conf/server.xml
sudo sed -i 's/8443/443/g' $CATALINA_BASE/conf/server.xml
sudo vim $CATALINA_BASE/conf/context.xml ## 站点
## sudo vim $CATALINA_BASE/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC -Xms512M -Xmx512M -Xmn256M -XX:SurvivorRatio=8 -XX:PermSize=64M -XX:MaxPermSize=128M"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log"
CATALINA_OUT=/dev/nul
3.4 脚本
sudo mkdir $CATALINA_HOME/bin/batch/
sudo mv $CATALINA_HOME/bin/*.bat $CATALINA_HOME/bin/batch/
sudo $CATALINA_HOME/bin/version.sh ## 查看系统版本、JDK、Tomcat 版本
sudo $CATALINA_HOME/bin/shutdown.sh ## 停止服务
sudo $CATALINA_HOME/bin/startup.sh ## 启动服务
## curl http://localhost/
3.5 日志
sudo chmod 755 $CATALINA_BASE/logs
sudo chmod 644 $CATALINA_BASE/logs/*
sudo tail -f $CATALINA_BASE/logs/catalina.out
sudo tail -f $CATALINA_BASE/logs/catalina.`date +%Y-%m-%d`.log
sudo tail -f $CATALINA_BASE/logs/localhost.`date +%Y-%m-%d`.log
sudo tail -f $CATALINA_BASE/logs/localhost_access_log.`date +%Y-%m-%d`.txt
3.6 防火墙放行(直接对外服务时才需要)
### sudo vim /etc/sysconfig/iptables
### 重启生效: sudo systemctl restart iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEP
3.7 配置为 systemd 服务
## sudo vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.82"
Environment="CATALINA_BASE=/opt/apache-tomcat-7.0.82"
ExecStart=/opt/apache-tomcat-7.0.82/bin/startup.sh
ExecStop=/opt/apache-tomcat-7.0.82/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable tomcat # 设置为开机自动启动
sudo systemctl start tomcat # 立即启动
4 Tomcat 单机多实例
- 与 MySQL 单机多实例类似,Tomcat 的单机多实例,也是指单个 Linux 的单个 Tomcat 安装,启动多个 Tomcat
服务进程,分别监听不同的端口,对外提供不同的 HTTP 服务。
4.1 关键点 Tomcat 有两个相关的环境变量:
CATALINA_HOME: 是 Tomcat 的安装目录,所有实例共用一份,相关子目录是 bin|lib;
CATALINA_BASE: 是 Tomcat 的工作目录,各个实例各自一份,相关子目录是 conf|webapps|work|logs|temp;
对于单实例,只需设置 CATALINA_HOME(此时认为 CATALINA_BASE 取相同值),多实例才必须设置 CATALINA_BASE。
4.2 准备各实例
4.2.1 准备实例目录
sudo systemctl stop tomcat
sudo systemctl disable tomcat
sudo cp -R $CATALINA_HOME $CATALINA_HOME.bak
sudo mkdir -p $CATALINA_HOME@{1,2}/{logs,temp,webapps,work}
sudo cp -R $CATALINA_HOME/{conf} $CATALINA_HOME@1/
sudo mv -f $CATALINA_HOME/{conf} $CATALINA_HOME@2/
4.2.2 替换各实例的监听端口
- HTTP 端口 8080 分别替换为 8081/8082
- HTTPS 端口 8443 分别替换为 8031/8032
- SHUTDOWN 端口 8005 分别替换为 8051/8052
- AJP 端口 8009 分别替换为 8091/8092(也可以直接删除该配置)
sudo sed -i 's/8080/8081/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8080/8082/g' $CATALINA_HOME@2/conf/server.xml
sudo sed -i 's/8443/8031/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8443/8032/g' $CATALINA_HOME@2/conf/server.xml
sudo sed -i 's/8005/8051/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8005/8052/g' $CATALINA_HOME@2/conf/server.xml
sudo sed -i 's/8009/8091/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8009/8092/g' $CATALINA_HOME@2/conf/server.xml
# sudo sed -i '/8009/d' $CATALINA_HOME@1/conf/server.xml
# sudo sed -i '/8009/d' $CATALINA_HOME@2/conf/server.xml
4.2.3 调整 JVM 参数
由于 Tomcat 实例数目增多,需要规划 JVM 内存容量,否则可能因为指定的容量过大而启动失败。
sudo vim $CATALINA_HOME/bin/catalina.sh
4.3 配置各实例的服务
4.3.1 创建多实例 service 文件
环境变量 JAVA_OPTS 与 CATALINA_OPTS 的区别:
- JAVA_OPTS: 所有Java程序共用(包括Tomcat),Tomcat 执行 start/run/stop 时用到;
- CATALINA_OPTS: 仅仅Tomcat用到,Tomcat 执行 start/run 时用到(不包括 stop);
所以,最佳方式是使用环境变量 CATALINA_OPTS,只影响 Tomcat 的启动选项。
## sudo vim /usr/lib/systemd/system/tomcat@.service
## 其中的 %i 将来会被替换为具体的 1/2
[Unit]
Description=Apache Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.82"
Environment="CATALINA_BASE=/opt/apache-tomcat-7.0.82@%i"
ExecStart=/opt/apache-tomcat-7.0.82/bin/startup.sh
ExecStop=/opt/apache-tomcat-7.0.82/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
4.3.2 设置为开机自动运行
sudo systemctl daemon-reload
sudo systemctl enable tomcat@{1,2}
sudo systemctl start tomcat@{1,2}
## curl http://localhost:8081/check.htm
## curl http://localhost:8082/check.htm
## sudo systemctl stop tomcat@{1,2}
## sudo systemctl disable tomcat@{1,2}
4.4 实用脚本
## vim ~/bin/tomcat-start.sh
sudo rm -rf $CATALINA_HOME*/logs/*
sudo systemctl start tomcat@{1,2}
## vim ~/bin/tomcat-stop.sh
sudo systemctl stop tomcat@{1,2}
## vim ~/bin/tomcat-restart.sh
sudo rm -rf $CATALINA_HOME*/logs/*
sudo systemctl restart tomcat@{1,2}
## vim ~/bin/tomcat-see.sh
sudo jps -lvm | grep Bootstrap | grep -v grep
5. zookeeper
5.1 zookeeper安装
5.1.1. 首先可以从Zookeeper的官方网站下载最新的安装包: http://www.apache.org/dist/zookeeper/
5.1.2. 上传并解压: tar -xzvf zookeeper-3.4.13.jar
5.1.3. 修改环境变量: vi /etc/profile 在文件最后添加:
export ZOOKEEPER_HOME=/home/zookeeper/zookeeper-3.4.13
export PATH=$PATH:$ZOOKEEPER_HOME/bin
保存执行命令: source /etc/profile ,使环境变量生效
5.1.4. 修改zookeeper的配置文件
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
conf/zoo.cfg 文件中增加
dataDir=/home/zookeeper/zookeeper-3.4.13/data
dataLogDir=/home/zookeeper/zookeeper-3.4.13/logs
clientPort=2181 //端口设置
5.1.5. 操作zookeeper
zkServer.sh start //启动zk,
zkServer.sh status //查看启动zk状态
zkServer.sh stop //停止zk
5.2.添加服务、设置开机启动
5.2.1. 以root用户登录系统
5.2.2. 进入init.d文件夹
cd /etc/init.d/
5.2.3. 创建并打开zookeeper文件
vim zookeeper
zookeeper文件如下:
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/local/jdk1.7 //JDK路径
export PATH=$JAVA_HOME/bin:$PATH
export ZK_HOME=/usr/local/zookeeper-3.4.9/bin // zookeeper路径
case $1 in
start) su root $ZK_HOME/zkServer.sh start;;
stop) su root $ZK_HOME/zkServer.sh stop;;
status) su root $ZK_HOME/zkServer.sh status;;
restart) su root $ZK_HOME/zkServer.shrestart;;
*) echo "requirestart|stop|status|restart" ;;
esac
保存退出
5.2.4. 加权限,把 zookeeper修改为可运行的文件,命令参考如下:
chmod 755 zookeeper
chmod a+x zookeeper
5.2.5. 使用chkconfig命令把 zookeeper命令加入到系统启动队列中:
chkconfig --add zookeeper
5.2.6. 查看zookeeper的状态:
chkconfig --list zookeeper
5.2.7.测试:
service zookeeper start
service zookeeper stop
service zookeeper restart
service zookeeper status