Linux下配置Java所需环境及Java架构选型
一、配置基础环境
1.配置tomcat 环境变量
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.8/src/apache-tomcat-10.1.8-src.tar.gz
tar -zxvf apache-tomcat-10.1.8-src.tar.gz
在/etc/profile 末尾追加export CATALINA_HOME="/usr/local/tomcat"
export CATALINA_BASE="/usr/locall/tomcat"source /etc/prodfile 使配置立即生效在tomcat的主目录下bin文件中有starup.sh shutdown.sh 测试tomcat是否安装成功.
2.配置jdk的环境变量
打开/etc/profile
JAVA_HOME="/usr/local/jdk"
JAVA_BIN="/usr/local/jdk/bin"
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH!wq 保存退出
source /etc/profile 使配置立即生效哦
3.jdk解压并创建软链接
ln -s /usr/local/jdk_source /usr/local/jdk
4.赋予用户权限 chown
chmod 777 -R /usr/local/example
5. 修改.bash_profile文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。
- 用文本编辑器打开用户目录下的.bash_profile文件
- 在.bash_profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
6.给linux增加用户,并修改密码
useradd xiaohu 新增用户
passwd 123456 添加密码
userdel xiaohu 删除用户
rm -rf xiaohu 删除用户xiaohu所在目录
7.今天用Openssl生成证书,后来要涉及生成 java keytool 的 jks格式的证书,结果输入keytool
bash: keytool: command not found…
结果找了半天才发现javahome都没设置。。也是郁闷。。希望对遇到同样问题的有帮助
配置环境变量
vi /etc/profile
i插入
添加以下三句export到文件最后 注意JAVA_HOME的目录为你解压jdk的目录版本为你下载的jdk版本
export JAVA_HOME=/java/jdk1.7.0_79
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
8.tomcat配置https
安装证书
Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。
文件说明:
- 证书文件214279090710514.pem,包含两段内容,请不要删除任何一段内容。
- 如果是证书系统创建的CSR,还包含:证书私钥文件214279090710514.key、PFX格式证书文件214279090710514.pfx、PFX格式证书密码文件pfx-password.txt。
1、证书格式转换
在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含214279090710514.pem文件,还需要将私钥文件拷贝到cert目录,命名为214279090710514.key;如果是系统创建的CSR,请直接到第2步。
到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:
openssl pkcs12 -export -out 214279090710514.pfx -inkey 214279090710514.key -in 214279090710514.pem
2、PFX证书安装
找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443"标签,增加如下属性:
keystoreFile=“cert/214279090710514.pfx”
keystoreType=“PKCS12”
#此处的证书密码,请参考附件中的密码文件或在第1步中设置的密码
keystorePass=“证书密码”
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"protocol="HTTP/1.1"SSLEnabled="true"scheme="https"secure="true"keystoreFile="cert/214279090710514.pfx"keystoreType="PKCS12"keystorePass="证书密码"clientAuth="false"SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
3、JKS证书安装(帮助)
( 1 ) 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)
keytool -importkeystore -srckeystore 214279090710514.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
回车后输入JKS证书密码和PFX证书密码,强烈推荐将JKS密码与PFX证书密码相同,否则可能会导致Tomcat启动失败。
( 2 ) 找到安装 Tomcat 目录下该文件Server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443"标签,增加如下属性:
keystoreFile=“cert/your-name.jks”
keystorePass=“证书密码”
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"protocol="HTTP/1.1"SSLEnabled="true"scheme="https"secure="true"keystoreFile="cert/your-name.jks"keystorePass="证书密码"clientAuth="false"SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
( 注意:不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改 )
4、 重启 Tomcat。
5、 通过 https 方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看帮助视频。
二、Java架构选型结构图
1、基础对比
- Spring Cloud基于Spring Boot提供了一套微服务解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于Netflix的开源组件做高度抽象封装外,还有一些选型中立的开源组件。
- Spring Boot可以离开Spring Cloud单独使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖关系。
- Spring Boot专注于快速方便地开发单个个体微服务,Spring Cloud关注全局的服务治理框架。
- Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务。
2、技术细节
- 1、Showdoc做接口文档
- 2、Coding做仓库
- 3、Jenkins做自动化部署
- 4、Mysql数据库采用阿里云RDS
- 5、Java版本 1.8 (8,11,17是长期服务版本)
jdk(java development kit)是java的开发工具包,jre (java runtime environment) 是java程序的运行环境,jre是jdk的一个子集。 - 6、数据存储:OSS,ECS等
- 7、服务器阿里云ECS,基云惠医账户
- 8、Redis服务器,可添加
- 9、接口压力测试 Jmeter,可添加(性能指标,压力测试)
- 10、maven版本
Maven就是是专门为Java项目打造的管理和构建工具,它的主要功能有: 提供了一套标准化的项目结构; 提供了一套标准化的构建流程(编译,测试,打包,发布……); 提供了一套依赖管理机制。 - 11、Nginx版本 1.20.2稳定版本
三、JAVA - AES算法加密明文
/**
* @author ifanatic.cn
* @see AES算法加密明文
* @param data 明文
* @param key 密钥,长度16
* @param iv 偏移量,长度16
* @return 密文
*/public static byte[] encryptAES(byte[] dataBytes,String key,String iv) throws Exception {try {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");int blockSize = cipher.getBlockSize();//byte[] dataBytes = data.getBytes();int plaintextLength = dataBytes.length;if (plaintextLength % blockSize != 0) {plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));}byte[] plaintext = new byte[plaintextLength];System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, keyspec);byte[] encrypted = cipher.doFinal(plaintext);return encrypted;} catch (Exception e) {e.printStackTrace();return null;}
}/**
* @author ifanatic.cn
* @see AES算法解密密文
* @param data 密文
* @param key 密钥,长度16
* @param iv 偏移量,长度16
* @return 明文
*/
public static byte[] decryptAES(byte[] encrypted,String key,String iv) throws Exception {try {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.DECRYPT_MODE, keyspec);byte[] original = cipher.doFinal(encrypted);return original;} catch (Exception e) {e.printStackTrace();return null;}
}/**
* 编码
* @param byteArray
* @return
*/
public static String Base64HelperEncode(byte[] byteArray) {return new String(new Base64().encode(byteArray));
}/**
* 解码
* @param base64EncodedString
* @return
*/
public static byte[] Base64HelperDecode(String base64EncodedString) {return new Base64().decode(base64EncodedString);
}