赞
踩
首先:该项目是一个前后端分离的项目。
前端------Vue、vue-cli、element等技术,
后端------springboot+mybatis,
数据库------mysql-5.6.51(服务器上的版本),因为服务器上的mysql版本比较旧,开发的时候用的8.0.17的,从高版本到低版本会出现一些sql语句结构的冲突。
1.本项目服务器是华为弹性云服务器ECS,配置信息:
2.采用的安全组sg-test-lcc
服务器准备好了,往下继续。
在config目录index.js是vue项目配置启动文件,能看到对应的运行模式dev和打包build。
话不多说,开始打包:
1️⃣打开项目src下的控制台:
2️⃣运行项目打包
3️⃣打包完成后会出现一个根据你build中自定义的路径出现的文件。
4️⃣将dist内的文件整一个放入IDEA项目中的static下
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
为了避免缓存问题,先把项目clean,完事后再package
完事后就会生成对应的target目录,里面有相关的文件和jar包(这个jar包我改过名,name不一样不要介意)。
本地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 ~]#
因为yum上的mysql资源有问题,需要先获取相对应的资源再yum安装
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源,参考链接
[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
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;
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文件
导入成功。
!!!!!此处一定要设置不然会sql用不上-------指导链接
其实这里也就用到
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123’ with grant option;
方案一:(有些服务器不会及时响应防火墙端口的状态,我们linux开一下)
开放命令:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
查看命令:netstat -an|grep 3306
方案二:解决方案参考链接
mysql就此告一段落。
因为mysql的请求主机是服务器的,所以要运行这个项目jar包,前提服务器要把mysql配置好。
如果不想先上服务器,可以把前端的请求端口和后端的mysql连接调成localhost本机先。
cmd进入命令行模式,然后输入指令
java -jar jar包的路径(这个指令要有jdk,没有看到4.吧)
例如:
E:\桌面\coal-spring\target>java -jar coal.jar
安装Java: yum -y install java-1.8.0-openjdk.x86_64
运行: java -version //这里能看到版本信息,就ok了。
运行java -jar coal.jar命令
出现运行信息,项目就能正常跑了。
因为在使用华为云ECS服务器的时候,发现如果我们xshell连接中断后,相关的服务器进程会中断,导致这和我们云服务器的初衷违背了,需要开启服务器进程还需要在本机维持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程序就默认将该连接下的所有进程都杀掉!
我们这里采用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
完事了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。