[每周一更]-(第46期):Linux下配置Java所需环境及Java架构选型

发布时间:2023年12月30日

在这里插入图片描述

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格式证书,两种证书格式任选其一。

文件说明:

  1. 证书文件214279090710514.pem,包含两段内容,请不要删除任何一段内容。
  1. 如果是证书系统创建的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);
}
文章来源:https://blog.csdn.net/hmx224_2014/article/details/135286095
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。