• 记一下部署后端和数据库到腾讯云过程遇到的坑(SpringBoot、Mysql、腾讯云)


    一、打包项目

    双击这里就行,打包生成的jar在target目录下


    二、部署后端到服务器

    1、将jar包移到服务器上

    直接用xftp拖进去就行

    2、运行该jar包

    java -jar xxx.jar
    

    如果报错 -bash: java: command not found,原因在于没装JDK

    3、安装JDK

    使用yum安装JDK

    yum -y  install java-1.8.0-openjdk*
    

    完成后输入以下指令查看是否安装成功

    java -version
    

    4、查询运行该jar包

    java -jar xxx.jar
    

    项目启动成功

    5、设置后台运行

    通过命令java -jar xxx.jar虽然可以启动并运行项目,但是一旦关闭可控制台,项目也随之关闭了,没法实时访问该项目。所以接下来还需要解决jar包后台运行的问题。

    这里 命令后面加的空格和'&'是让程序在后台运行,2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的log文件中,从此终端彻底清静了。

    nohup java -jar xxx.jar > log.file 2>&1 &
    

    用这句命令运行jar包即可,运行结果:

    之后用

    tail -f log.file
    

    命令查看控制台输出,若要停止项目

    pkill -f xxx.jar
    

    三、部署数据库到服务器

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

    1、下载并安装MySQL官方的 Yum Repository

    wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
    rpm -ivh mysql57-community-release-el7-9.noarch.rpm
    

    执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

    我是直接去官网下的tar,解压出来的rpm安装的,用这个命令安装应该会更简便一些

    2、完成安装

    使用yum命令即可完成安装

    yum install mysql-server
    

    如果是去官网下的rpm包,需按照依赖关系依次安装common→libs→client→server

    rpm -ivh {rpm文件名}
    

    若报错

    [root@nfs_client tools]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
    warning: mysql-community-libs-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    error: Failed dependencies:
            mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.22-1.el7.x86_64
            mariadb-libs is obsoleted by mysql-community-libs-5.7.22-1.el7.x86_64
    

    在命令后面加上--nodeps --force即可

    3、开启MySql

    开启mysql服务

    systemctl start  mysqld.service 启动mysql
    systemctl status mysqld.service 查看mysql状态
    systemctl stop mysqld.service   关闭mysql
    
    ps -ef|grep mysql 查看mysql进程 
    netstat -anop|grep 3306 查看3306端口 
    

    4、登陆mysql修改root密码

    查找临时密码

    grep 'temporary password' /var/log/mysqld.log
    

    使用临时密码登陆

    mysql -uroot -p
    

    然后输入临时密码

    执行下面的命令修改MySql root密码

    set password for root@localhost=password('你的密码');
    

    在5.6后,mysql内置密码增强机制,低强度密码会报错:

    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    

    查看安全策略

    SHOW VARIABLES LIKE 'validate_password%';
    

    修改有效密码验证要求

    set global validate_password.policy=0;
    set global validate_password.length=1;
    

    设置所有的ip可以访问该sql;

    use mysql;
    update mysql.user set host = '%' where user = 'root';
    

    刷新权限,使设置生效

    flush privileges;
    

    5、服务器配置防火墙

    做完上述步骤后尝试用navicat远程连接数据库,结果报了10038错误,查了一下是远程3306端口未对外开放的原因。

    # 检查状态 
    systemctl stauts firewalld.service 
    # 其余还有 开始,重启等
    systemctl start firewalld.service
    systemctl restart firewalld.service
    
    # 开机自启动
    systemctl enable firewalld.service
    
    #配置防火墙
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    systemctl restart firewalld.service
    firewall-cmd --query-port=3306/tcp # 检查是否ok
    

    我是用iptables的,不过应该一样

    6、配置安全组

    设置安全组 (进入方法:进入控制台后,搜索私有网络,点击进入,点击安全与诊断->安全组)

    配置安全组、设置规则

    选自己云服务器所在的地区

    点击新建然后弹出的对话框,其他的比较简单,就以自定义为例,点击确定后的对话框中选设置规则

    添加入站和出站规则即可, 示例如下,配置所有ip可访问3306端口。

    (这一步不知道是不是必须的,好像不配置安全组也能连上)

    7、腾讯云配置防火墙

    在进入到腾讯云控制台之后(在首页点击右上角的控制台->点击左上角的云产品->点击自己的服务器类型->点击服务器右上角的更多->管理->防火墙->添加规则)

    8、安装Mysql数据库并连接成功!

    其实我做完这些还是连不上,后来又执行

    SHOW VARIABLES LIKE 'validate_password%';
    

    发现,有效密码长度居然还是8没改过来,改正之后终于成功用navicat连上了


    四、前端尝试向后台发送请求

    在前端尝试向后台发送请求,发现后台根本没接到,原因是没有配置防火墙,为8080端口配置好防火墙即可

    后台成功接到请求并报错,

    解决方法:在连接参数里加上useSSL=false即可

    部署完成!


    五、后记

    部署成功后正常连接了一段时间,某天下午突然使用navicat突然无法连接数据库并报错

    见到这个错误我是完全懵逼的,因为前一秒还可以正常使用。上网查了很多解决办法:

    1、修改mysql配置文件 my.cnf [mysqld]段加skip-name-resolve

    2、修改hosts.allow 加mysqld : ALL : ALLOW

    3、重启数据库

    4、注释bind-address

    等等都没有用,

    之后我还尝试了重装数据库,重置服务器,使用mariadb等方法,依赖报同样的错误

    最后终于发现了解决方案

    https://blog.csdn.net/qq_45256805/article/details/107996700

    总之原因就是连接腾讯云的MariaDB(mysql)数据库是使用Navicat和平常连接数据库的方式不同。连接腾讯云的MariaDB(mysql)数据库需要使用ssh通道进行连接。

  • 相关阅读:
    C++ error C2678: 二进制“+”: 没有找到接受“const char [22]”类型的左操作数的运算符(或没有可接受的转换)没有与这些操作数匹配的“+”运算符...
    Qt 没有byte
    C++ 解决:错误 1 error MSB8031: Building an MFC project for a non-Unicode character set is deprecated
    .NET Core-插件如何读取指定配置结点
    CodeSmith4-案例
    CodeSmith3-对象(CodeTemplate、Response、CodeTemplateInfo)
    CodeSmith2-Property(属性)
    vscode
    OPCUA suscription TimeoutError
    OPCUA 节点层级
  • 原文地址:https://www.cnblogs.com/cykablyat/p/14598523.html
Copyright © 2020-2023  润新知