手把手教将Java程序部署到Centos7

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 看这个教程,可以很轻松的将Java程序部署到Centos7。

看了这个教程,可以很轻松的将Java程序部署到Centos7。


虚拟机centos7配置IP地址和各种坑


一、导入centos7虚拟机


打开VMWare,点击“打开虚拟机”,选择centos7.ova之后,选择存储路径:


微信图片_20221009173245.png


点击导入:


微信图片_20221009173255.png


选择“不再显示此消息”,点击“重试”按钮:


微信图片_20221009173259.png


点击“编辑虚拟机设置”,修改处理器、内存、硬盘等信息后,启动。


按Ctrl+Alt键可以切换到windows下。


启动成功后,输入账号root密码123456登录。


二、配置ip地址


先在VMWare里设置好网络连接方式为桥接模式:


微信图片_20221009173302.png


有关于centos7获取IP地址的方法主要有两种,1:动态获取ip;2:设置静态IP地址。


1、动态获取ip(前提是你的路由器已经开启了DHCP)


修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 (最后一个为网卡名称)


微信图片_20221009173646.png


动态获取IP地址需要修改两处地方即可


(1)bootproto=“dhcp”


(2)onboot=“yes”


微信图片_20221009173306.png


修改后重启一下网络服务即可 systemctl restart network


|[root@mini ~]# systemctl restart network
|[root@mini ~]# 


这样动态配置IP地址就设置好了,这个时候再查看一下ip addr 就可以看到已经获取了IP地址,且可以上网(ping 百度)


2、设置固定ip


BOOTPROTO=“static”


IPADDR=“192.168.0.121” #你想要设置的固定IP,理论上192.168.1.4-192.168.1.253之间都可以,请自行验证;

NETMASK=“255.255.255.0” #子网掩码,不需要修改;

GATEWAY=“192.168.0.1” #网关,这里是VMware网关IP地址,前面要你记录下的那个IP。


DNS1=“114.114.114.114” #这个是国内的DNS地址,是固定的;


三、各种坑


1、systemctl restart network报错


Job for network.service failed. See ‘systemctl status network.service’ and ‘journalctl -xn’ for details.


2、ping不通百度


四、解决办法


1、 排除ip冲突


用主机ping这个ip看是否已存在。


2、删除多余的网卡配置文件


删除ifcfg-e开头的多余的网卡配置文件


|rm -f /etc/sysconfig/network-scripts/ifcfg-eXXX


3、HWADDR错误 ,查到正确的HWADDR


输入 ip addr,查找到HWADDR


微信图片_20221009173326.png


进入 cd /etc/sysconfig/network-scripts 目录编辑对应的 vim ifcfg-ensXX,将HWADDR设置正确,重启 service network restart


或者删除HWADDR。


00:0c:29:ad:24:51


4、将ifc-ethXX中的DEVICE 那一行注释掉,或者删掉


5、将ifcfg-xxx中的NAME改为和文件名一致


5、删除网卡的UUID


6、停止NetworkManager.service


停止网络管理服务


[root@localhost Desktop]# systemctl stop NetworkManager.service

[root@localhost Desktop]# systemctl disable NetworkManager.service

Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.

Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.

Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.


重启network服务


[root@localhost network-scripts]# service network restart


Restarting network (via systemctl): [ OK ]


7、删除设备规则配置文件


无论有无这文件,删就是了


|rm -f /etc/udev/rules.d/70-persistent-net.rules


8、打开VMWare的虚拟机服务


微信图片_20221009173333.png

9、看VMWare右下角的网络适配器是否连接,如果没有连接则连接上


10、重启大法


如果以上都没有解决,还有最后一招-- 重启 看一看有没有奇迹发生!


五、无论如何,还是不行


1、使用NAT模式


2、先改为动态获取ip地址


3、查看当前DNS


cat /etc/resolv.conf


4、改为静态ip


5、更新完需要的软件后可再次改回桥接模式


六、CentOS7下安装JDK1.8


1、检查是否已经安装了jdk


键入命令 java -version 查看。


2、下载JDK


下载地址https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html


往下拉


微信图片_20221009173338.png


3、上传到centos


微信图片_20221009173341.png

将本地d:/tmp/jdk-8u281-linux-x64.tar.gz上传到/usr下,重命名为java1.8:


本地目录切换到d:/tmp1


sftp>lcd d:/tmp1


centos目录切换到/usr


sftp>cd /usr


查看本地目录


sftp> lpwd

d:/tmp


查看centos目录


sftp> pwd

/usr


上传


sftp> put jdk-8u281-linux-x64.tar.gz


重命名


sftp> mv jdk-8u281-linux-x64.tar.gz java1.8


4、解压安装JDK


键入命令 cd /usr 来到刚才的复制文件处,键入命令tar -zxvf java1.8 进行解压,解压出一个文件夹jdk1.8.0_281,进入该文件夹


微信图片_20221009173347.png


5、配置JDK环境变量


键入命令 vi /etc/profile 修改配置文件,记得要在root权限下修改


输入i进入编辑状态,然后将光标移到最后一行,粘贴如下内容,JAVA_HOME=/usr/jdk1.8.0_281 要根据自己的解压目录设置


#java environment

export JAVA_HOME=/usr/jdk1.8.0_281

export CLASSPATH=.:J A V A H O M E / j r e / l i b / r t . j a r : {JAVA_HOME}/jre/lib/rt.jar:JAVA

H


OME/jre/lib/rt.jar:{JAVA_HOME}/lib/dt.jar:J A V A H O M E / l i b / t o o l s . j a r e x p o r t P A T H = {JAVA_HOME}/lib/tools.jar export PATH=JAVA

H


OME/lib/tools.jarexportPATH=PATH:${JAVA_HOME}/bin

效果如下


微信图片_20221009173351.png

点击esc 进入命令模式 输入:wq 保存修改信息


然后键入命令source /etc/profile 使配置文件生效。


6、测试是否安装成功


键入命令 java -version 查看。


微信图片_20221009173355.png


七、centos7下安装mysql5.7


1、安装wget


yum -y install wget


2、下载rpm包


|sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
|sudo rpm -ivh mysql57-community-release-el7-10.noarch.rpm


3、yum 安装mysql-community-server


|sudo yum -y install mysql-community-server


这一步比较耗时


4、启动mysql

|sudo systemctl start mysqld


5、设置开机启动


|sudo systemctl enable mysqld


6、查找初始密码


在/var/log/mysqld.log文件中找到初始密码


|cat /var/log/mysqld.log


微信图片_20221009173405.png


此处初始密码为:waf_eHWkr42K


7、登陆mysql

|sudo mysql -uroot -p


输入初始密码:waf_eHWkr42K


8、修改密码


|ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz!QAZ';


密码强度默认规则为(长度最少8位,包含大小写字母、数字、特殊字符)


9、设置允许远程登陆


1.执行授权命令


|GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1qaz!QAZ' WITH GRANT OPTION;


2.退出mysql操作控制台


|exit


3.开放3306端口


开启防火墙


|sudo systemctl start firewalld.service


永久开放3306端口


|sudo firewall-cmd --add-port=3306/tcp --permanent


重新加载


|sudo firewall-cmd --reload


关闭防火墙


|sudo systemctl stop firewalld.service


10、设置默认编码为utf8


查看修改前mysql编码


|show variables like '%chara%';


微信图片_20221009173411.png


修改/etc/my.cnf文件,加入下面两行


|sudo vi /etc/my.cnf
|character_set_server=utf8
|init_connect='SET NAMES utf8'


微信图片_20221009173415.png

修改后,重启mysql


|sudo systemctl restart mysqld


查看修改后的mysql编码


微信图片_20221009173418.png


11、测试


使用navicat连接mysql


微信图片_20221009173421.png


数据文件位置:/var/lib/mysql


配置文件位置:/etc/my.cnf


日志文件位置:/var/log/mysqld.log


八、centos7实现springboot项目开机自启动


1、导入数据库


导入mysql数据库。


2、上传打包好的jar包文件


上传jar包到到/usr/local/project/ 。


试运行java -jar springboot.jar


3、新增service文件


在 /etc/systemd/system/ 目录下面编辑一个以service为后缀的文件:


cd /etc/systemd/system

vi java.service


文件内容如下:


|[Unit]
|Description=java
|After=syslog.target
|[Service]
|Type=simple
|ExecStart=/usr/jdk1.8.0_281/bin/java -jar /usr/local/project/springboot.jar
|[Install]
|WantedBy=multi-user.target


其中:/usr/jdk1.8.0_281为jdk安装路径,/usr/local/project/springboot.jar 为打包好的jar包文件。


4、添加执行权限


chmod +x /etc/systemd/system/java.service


5、重新加载服务


systemctl daemon-reload


6、启动服务并加入开机自启动


systemctl start java

systemctl enable java


ps -ef | grep “java”| grep -v grep


systemctl status java.service -l


九、centos7下安装Tomcat8.5


1、下载tomcat8.5


https://tomcat.apache.org/download-80.cgi


微信图片_20221009173428.png


2、上传打包好的jar包文件并解压


上传到/usr/。


tar -zxvf apache-tomcat-8.5.63.tar.gz


3、tomcat增加启动参数


tomcat 根目录下需要增加一个pid文件tomcat.pid。


|touch tomcat.pid


在tomcat/bin 目录下面,增加 setenv.sh 配置,catalina.sh启动的时候会调用,同时配置Java内存参数。


|export CATALINA_HOME=/usr/apache-tomcat-8.5.63
|export CATALINA_BASE=/usr/apache-tomcat-8.5.63
|#add tomcat pid
|CATALINA_PID="$CATALINA_BASE/tomcat.pid"
|#add java opts
|JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"


4、新增service文件


在 /etc/systemd/system/ 目录下面编辑一个以service为后缀的文件:


|vi /etc/systemd/system/tomcat.service


文件内容如下:


|[Unit]
|Description=Tomcat
|After=syslog.target network.target remote-fs.target nss-lookup.target 
|[Service]
|Type=forking
|Environment="JAVA_HOME=/usr/jdk1.8.0_281"
|PIDFile=/usr/apache-tomcat-8.5.63/tomcat.pid
|ExecStart=/usr/apache-tomcat-8.5.63/bin/startup.sh
|ExecReload=/bin/kill -s HUP $MAINPID
|ExecStop=/bin/kill -s QUIT $MAINPID
|PrivateTmp=true 
|[Install]
|WantedBy=multi-user.target


5、添加执行权限


chmod +x /etc/systemd/system/tomcat.service


6、重新加载服务


systemctl daemon-reload


7、启动服务并加入开机自启动


直接启动


systemctl start tomcat


加入开机启动


systemctl enable tomcat


查看启动状态


systemctl status tomcat.service


停止服务


systemctl stop tomcat


查询tomcat 进程


ps -ef | grep “tomcat”| grep -v grep


如果多个tomcat,则拷贝到不同的目录,使用不同的端口。tomcat.service文件名不同即可。


例如:tomcat1.service tomcat2.service tomcat3.service


8、重启服务器


重启,试试能不能访问。

目录
相关文章
|
28天前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
14天前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
13 1
|
19天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
31 2
|
21天前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
|
24天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
32 1
|
26天前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
22 0
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
68 0
|
1月前
|
Java
java的程序记录时间
java的程序记录时间
24 0
|
8天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
3天前
|
存储 设计模式 分布式计算
Java中的多线程编程:并发与并行的深度解析####
在当今软件开发领域,多线程编程已成为提升应用性能、响应速度及资源利用率的关键手段之一。本文将深入探讨Java平台上的多线程机制,从基础概念到高级应用,全面解析并发与并行编程的核心理念、实现方式及其在实际项目中的应用策略。不同于常规摘要的简洁概述,本文旨在通过详尽的技术剖析,为读者构建一个系统化的多线程知识框架,辅以生动实例,让抽象概念具体化,复杂问题简单化。 ####