目录:
- 前言:
- 0.服务器的准备
- 1.前端排查打包。
- 1.1 打开vscode前端,查看所有前端的请求端口,并且修改:
- 1.2 打包前端到后端IDEA中。
- 2.后端排查打包
- 2.1 配置sql请求的域名
- 2.2 打包项目,生成jar包。
- !!!主角:服务器mysql的配置。
- 1️⃣用ssh工具连接服务器,或者本地cmd输入指令
- 2️⃣ 安装mysql
- 获取并挂载社区版mysql
- 3️⃣进行配置。
- 启动mysql
- 验证是否运行
- 创建密码登陆
- 大小写敏感(mybatis设置驼峰了,没必要看了)
- 创建数据库
- 导入sql
- 设置用户授权问题(==重点==)---1045错误
- mysql连接出现2003错误
- 3.本地测试一波(前提服务器mysql要配置完)
- 3.1 运行jar包
- 4.把jar包部署到服务器
- 4.1 配置java环境---jdk
- 4.2 xftp上传文件
- 4.3在服务器中运行jar包(运行项目)
- 5.配置持久化服务器。
- 5.1 配置原因
- 5.1.1 为什么ssh一旦断开我们的进程也将会被杀掉?
- 5.2 三种可利用技术。(1-3往下升级)
- screen命令:
前言:
首先:该项目是一个前后端分离的项目。
前端------Vue、vue-cli、element等技术,
后端------springboot+mybatis,
数据库------mysql-5.6.51(服务器上的版本),因为服务器上的mysql版本比较旧,开发的时候用的8.0.17的,从高版本到低版本会出现一些sql语句结构的冲突。
0.服务器的准备
1.本项目服务器是华为弹性云服务器ECS,配置信息:
2.采用的安全组sg-test-lcc
服务器准备好了,往下继续。
1.前端排查打包。
1.1 打开vscode前端,查看所有前端的请求端口,并且修改:
1.2 打包前端到后端IDEA中。
在config目录index.js是vue项目配置启动文件,能看到对应的运行模式dev和打包build。
话不多说,开始打包:
1️⃣打开项目src下的控制台:
2️⃣运行项目打包
3️⃣打包完成后会出现一个根据你build中自定义的路径出现的文件。
4️⃣将dist内的文件整一个放入IDEA项目中的static下
2.后端排查打包
2.1 配置sql请求的域名
spring:
#数据库连接
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://120.46.156.84:3306/db_coal?characterEncoding=utf-8
username: root
password: root
#mybatis的相关配置,请特别注意层级,空格会引发血案!
servlet:
multipart:
max-file-size: 10MB
mybatis:
#开启驼峰命名
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/*.xml
server:
port: 8088
2.2 打包项目,生成jar包。
为了避免缓存问题,先把项目clean,完事后再package
完事后就会生成对应的target目录,里面有相关的文件和jar包(这个jar包我改过名,name不一样不要介意)。
!!!主角:服务器mysql的配置。
1️⃣用ssh工具连接服务器,或者本地cmd输入指令
本地cmd:(失败)
C:\Users\PJX>ssh 120.46.156.84
The authenticity of host ‘120.46.156.84 (120.46.156.84)’ can’t be established.
ECDSA key fingerprint is SHA256:4oSHC9jNbWAf5BSKsVu1JdkS95S5/nAg3yOFxT6Q8BM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘120.46.156.84’ (ECDSA) to the list of known hosts.
啊?这里本地出问题了,不知道为啥。我们因为后期还要上传数据,就不用本地cmd连接了。
xshell工具连接:(成功)
[C:~]$ ssh 120.46.156.84
然后填入自己的相关信息。连接成功:
[root@coal-pjx ~]#
2️⃣ 安装mysql
因为yum上的mysql资源有问题,需要先获取相对应的资源再yum安装
获取并挂载社区版mysql
cd /tmp
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql mysql-server mysql-devel -y --nogpgcheck
等待下载安装完就好了。若嫌弃这个版本太低了,那就自己去mysql社区找到对应的下载地址。先wget下载,然后tar解压就行
mysql社区链接 或者去mysql源先wget挂载一个资源进来,跟上面一样yum
mysql源
展示一下吧:
有时间借鉴一下这个错误:https://stackoverflow.com/questions/59993633/yum-dnf-error-failed-to-download-metadata-for-repo/60151238
mysql社区版(待成品):这里展示展示失败了,用上面那个吧,果然yum上的mysql资源不太行。
可以看到对应的下载链接
[root@coal-pjx tmp]# wget https://dev.mysql.com/get/mysql80-community-release-fc34-1.noarch.rpm[root@coal-pjx tmp]# rpm -ivh mysql80-community-release-fc34-1.noarch.rpm
这里出现了错误信息,查看发现是什么头什么V3啥的签名错误。罢工了,百度瞅瞅。
百度后说是
yum安装了旧版本的GPG keys造成的
[root@coal-pjx tmp]# rpm -ivh mysql80-community-release-fc34-1.noarch.rpm --force --nodeps
接着就安装吧
[root@coal-pjx tmp]# yum install mysql mysql-server mysql-devel -y --nogpgcheck
啥玩意啊??刚下了点皮毛就不给下了。
这里暂时罢工了,暂时摸索不到原因,到时候看到了回来更新。
垃圾箱警告!
[root@coal-pjx tmp]#
rm -rf mysql80-community-release-fc34-1.noarch.rpm
mysql源:(这个也G了)
找到最新的,然后获取地址
开始操作:
[root@coal-pjx tmp]# wget http://repo.mysql.com/mysql80-community-release-fc33.rpm
[root@coal-pjx tmp]# rpm -ivh mysql80-community-release-fc33.rpm --force --nodeps
[root@coal-pjx tmp]# yum install mysql mysql-server mysql-devel -y --nogpgcheck
两个地址的资源都没法下最新的,
有缘江湖再见。
可以探究一下换个yum源
3️⃣进行配置。
启动mysql
[root@coal-pjx tmp]# systemctl start mysql.service
验证是否运行
[root@coal-pjx tmp]# netstat -anp|grep 3306
创建密码登陆
[root@coal-pjx tmp]# mysqladmin -u root password 123
[root@coal-pjx tmp]# mysql -uroot -p123
大小写敏感(mybatis设置驼峰了,没必要看了)
Linux MySQL默认是大小写敏感的,项目是在windows上开发的,而windows上的Mysql默认是非大小写敏感的,所以JDBC代码有的表名是大写,有的是小写的,一旦运行起来就会因为大小写不一致导致无法识别表名。 为了解决这个矛盾,就需要把MySQL的大小写敏感修改为非敏感。
- 打开mysql配置文件
vi /etc/my.cnf- 如图所示在[mysqld]后添加添加
lower_case_table_names=1
- 重启mysql
systemctl restart mysqld.service
创建数据库
mysql -uroot -proot
CREATE DATABASE db_coal;
show databases;
导入sql
use db_coal;
然后运行复制的sql语句。
此处有个注意事项:高版本数据库(8.0)转存sql文件 并导入低版本数据库(5.7)会出现错误。
MySql数据库导入sql错误 Unknown collation: ‘utf8mb4_0900_ai_ci’
错误原因:高版本数据库(8.0)转存sql文件 并导入低版本数据库(5.7)
解决办法:
方案一:升级mysql至高版本
方案二:将需要导入的sql文件,把其中的
utf8mb4_0900_ai_ci全部替换为utf8_general_ci
utf8mb4替换为utf8
重新执行sql文件
导入成功。
设置用户授权问题(重点)—1045错误
!!!!!此处一定要设置不然会sql用不上-------
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123’ with grant option;
mysql连接出现2003错误
方案一:(有些服务器不会及时响应防火墙端口的状态,我们linux开一下)
开放命令:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
查看命令:netstat -an|grep 3306
mysql就此告一段落。
3.本地测试一波(前提服务器mysql要配置完)
因为mysql的请求主机是服务器的,所以要运行这个项目jar包,前提服务器要把mysql配置好。
如果不想先上服务器,可以把前端的请求端口和后端的mysql连接调成localhost本机先。
3.1 运行jar包
cmd进入命令行模式,然后输入指令
java -jar jar包的路径(这个指令要有jdk,没有看到4.吧)
例如:
E:\桌面\coal-spring\target>java -jar coal.jar
4.把jar包部署到服务器
4.1 配置java环境—jdk
- 安装Java: yum -y install java-1.8.0-openjdk.x86_64
- 运行: java -version //这里能看到版本信息,就ok了。
4.2 xftp上传文件
4.3在服务器中运行jar包(运行项目)
运行java -jar coal.jar命令
出现运行信息,项目就能正常跑了。
5.配置持久化服务器。
5.1 配置原因
因为在使用华为云ECS服务器的时候,发现如果我们xshell连接中断后,相关的服务器进程会中断,导致这和我们云服务器的初衷违背了,需要开启服务器进程还需要在本机维持ssh会话连接。
5.1.1 为什么ssh一旦断开我们的进程也将会被杀掉?
元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。
在Linux/Unix中,有这样几个概念:
进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
这里我认为我们的进程被杀掉也就是因为ssh与服务器之间的通信断掉了,这个通信断掉之后linux程序就默认将该连接下的所有进程都杀掉!
5.2 三种可利用技术。(1-3往下升级)
- nohup命令
- screen命令
- byobu命令
我们这里采用screen命令。就记录这个了,需要深究。
screen命令:
1️⃣先安装screen。
yum install
输入y回车 等待下载完成。
如果此处出现了错误:没错就跳过这部分
[root@coal-pjx ~]# yum install screen
MySQL Tools Community 4.2 B/s | 10 B 00:02
Error: Failed to download metadata for repo 'mysql-tools-community': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
出现这个repo的错误是我们yum源中有错误检索不到的源。我们可以先去查看一下我们的repo源。
[root@coal-pjx ~]# yum repolist all
可以看到mysql-tools-community是开启状态enabled。我们把它关了。
[root@coal-pjx ~]# yum-config-manager --disable mysql-tools-community
关了之后就能安装了。
普及两个命令:
yum repolist all //查看您拥有的仓库。
yum-config-manager --enable <仓库名> //启用仓库
yum-config-manager --disable <仓库名> //关闭仓库
2️⃣直接使用命令
[root@coal-pjx~]# screen java -jar coal.jar
完事了。