目录
一、系统准备:VMware安装Centos 7
二、JAVA环境安装
三、数据库环境安装和数据导入
1、数据库环境安装
2、数据导入
数据导入步骤
解决Linux(Centos7)显示中文乱码
四、Java程序打包上传并部署
附录:
杀掉进程
1、准备好Centos7安装镜像,如果没有,请先去官网下载,免费的。
2、VMware安装Centos7:点击:文件->新建虚拟机,会弹出安装向导,选择自定义安装(自定义分配处理器核数和内存大小),基本傻瓜式安装,直接点击下一步就可以了,以下列出关键安装步骤的图示:
(1)选择镜像
(2)处理器和虚拟内存配置,我这边是做演示项目用的,给虚拟机分配的处理器为2核,内存为2G,硬盘大小给定为50GB。
(3)网络类型选择——使用桥接模式
(4)Centos7安装路径和网络开启,在Centos安装中,这两个非常重要,尤其是网络开启。
磁盘选择
网络开启
(5)登录虚拟机后,查看IP地址:ip addr
系统安装到此结束,没有给出图示的,基本上都是不太重要的部分,可以直接下一步或者看提示就能知道如何操作。
更详细的教程:VMware安装Centos7超详细过程(图文)_小七的博客-CSDN博客_vmware安装centos7
关于Java环境安装的具体步骤,请参考这篇文章:
Linux系统(Centos7)——安装tomcat_swadian2008的博客-CSDN博客
(1)使用yum命令安装mysql,可以安装mysql所有的相关依赖,解决依赖问题
yum install mysql*
(2)在Centos7中,使用mysql还需要安装mariadb,使用命令如下:
yum install mariadb-server
(3)安装完mariadb后,启动该服务
systemctl start mariadb.service
(4)查看mysql是否已经启动
ps -ef | grep mysql
如图,可以看到mysql相应进程都已经启动成功
同样,mysql默认启动的端口号为:3306,我们也可以通过命令查看此端口是否已经启用来验证
yum install net-tools // 如果netstat不存在,先安装此工具
netstat -anp | grep 3306 // 查看3306端口使用情况
使用结果如图
(5)修改mysql用户名和密码
mysqladmin -u root password root // 用户名为root ,密码为root
(6)连接mysql
mysql -uroot -proot // root为用户名和密码
登录结果如下:
通过show databases;命令,我们可以看到原始的数据库信息,至此,mysql已经安装完毕且能正常使用
yum安装的mysql 目录结构
(1)备份数据库数据和表结构,文件格式为*.sql
(2)使用put上传*.sql文件
put D:\mysqldata.sql // 上传数据库备份文件
上传图示:
(3)登录mysql,并马上执行mysqldata.sql文件
mysql -uroot -proot < //home/root123/mysqldata.sql
(4)执行完后,登录mysql查看数据库
mysql -uroot -proot // 登录mysql
show databases; // 查看数据库
展示如下:
可以继续使用如下命令,查看表结构和数据是否和本地上传的数据保持一致
use seckill; // 使用秒杀数据库
show tables; // 展示数据库表
select * from item; // 查看item表数据
乱码图示:
(1)查看系统当前语言
echo $LANG // 查看系统当前支持语言命令
如图,系统当前语言为:en_US.UTF-8,此语言并不支持中文
使用locale命令查看系统支持的语言种类,其中并没有中文,所以,我们需要安装linux对中文支持
(2)使用yum命令安装中文支持
yum groupinstall chinese-support -y // 安装中文支持
但是仅仅有语言包还不行,我们得设置相应的字符集,接下来更改Linux默认语言为中文
(3)修改Linux配置文件,将应用语言设置为中文
vi /etc/profile // 编辑配置文件
在配置文件里添加如下行:
export LANG="zh_CN.UTF-8"
source /etc/profile // 重新加载配置文件
此时可以使用echo $LANG 和 locale 命令来查看当前系统使用的语言及支持的语言
(4)修改终端工具的编码格式为UTF-8
修改完Linux的配置后,在终端还显示为乱码,这个时候我们需要修改终端的编码格式,如图:
更改后,查看数据,中文显示正常
1、确保项目中有支持maven打包的插件,pom.xml文件中有如下配置
org.springframework.boot
spring-boot-maven-plugin
2、在IDEA中使用Maven的package命令打包项目
打包命令执行后,在项目的文件夹下会新增一个target的文件夹,在target文件夹下,可以看到已经打好的jar包
3、使用put把jar包上传到Linux服务器上并授权
上传完成后,把jar包移动到指定的目录中,对jar包文件进行授权
chmod -R 777 * // 对文件进行授权
操作图示:
4、关闭Linux防火墙或者开放对应的端口号
关闭防火墙命令:
firewall-cmd --state // 查看防火墙状态
systemctl stop firewalld.service // 停止防火墙
systemctl disable firewalld.service // 禁止防火墙开机启动
5、编写deploy启动脚本
场景:生产环境下和测试环境下的配置在一般会不一样,为了尽量减少代码的修改,我们可以在不同环境的服务器上分别配置对应的外挂配置文件。
springboot项目在启动时会优先读取springboot项目中的配置文件,然后再读取外挂中的配置文件。外挂配置文件中的属性会替换掉springboot项目中相同的属性的配置,最终以外挂配置文件为主。
(1)在jar包的同名目录下创建外挂配置文件application.properties,修改项目的启动的端口为8091,如图
vi application.properties // 创建并编辑文件
文件中重新定义了项目启动的端口为8091
(2)启动Java项目+spring相关命令
java -jar com.demo.seckill-1.0-SNAPSHOT.jar \
--spring.config.addtion-location=/var/www/seckill/application.properties
(3)编写deploy.sh启动脚本
在日常的工作当中,如果只使用java -jar命令启动项目,那么系统在进行其他操作,就必须得暂停掉当前项目的运行,我们可以nohup命令来解决这一问题。为了方便,我把启动命令编写成了启动脚本。
vi deploy.sh // 创建并编写*.sh脚本
在脚本中输入以下内容,其中还额外添加了虚拟机配置参数
nohup java \
-Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m \
-jar com.demo.seckill-1.0-SNAPSHOT.jar \
--spring.config.addtion-location=/var/www/seckill/application.properties
添加成功后,需要对文件进行执行操作的授权,授权成功后,执行此脚本
chmod -R 777 * // 对当前文件夹下的所有文件授予所有权限
./deploy.sh& // 使用.命令执行脚本文件
注:在命令的末尾加上一个 &
号,将这个任务放到后台去执行
执行脚本后,会发现项目启动的日志并没有输出到终端显示,而此时对应的文件夹下却新增了一个名为nohup.out的输出文件
打开配置文件,我们可以看到,所有的项目启动日志都被写进了nohup.out的文件中
此时,项目在后台启动,系统执行其他操作时,并不会终止项目的运行。
1、程序启动时报错,端口被占用
Caused by: java.net.BindException: 地址已在使用
2、执行netstat -alnp | grep 8091 查看此端口号的相关进程号
ps -ef | grep java 查看java进程
3、执行kill -9 11713 强制删掉此进程
kill -9 和 kill -s的区别:
kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。TERM(或数字9)表示“无条件终止”;因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。