CentOS7 云服务器搭建及部署SpringBoot+vue项目

发布时间 2023-04-20 15:51:17作者: 云中誰寄锦书来

CentOS7 云服务器搭建及部署SpringBoot+vue项目

1)云服务器配置以及环境搭建

1.1 JDK安装

  1. 卸载现有环境(有则卸载)

    使用rpm命令查询相关java套件

    rpm -qa | grep java
    

    如果存在,通过命令删除对应版本的JDK

    rpm -e --nodeps java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
    rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
    rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.322.b06-1.el7_9.x86_64
    
  2. /usr/local 目录下新建 java 文件夹,并进入。(可以自己选择文件夹)

    cd /usr/local 
    mkdir java 
    cd java
    
  3. 打开FinalShell上传JDK压缩包至 /usr/local/java文件夹。

    注意:这里直接拖进来就可以了,但是一定要等他传输完毕,传输很慢,一定要耐心!!!

  1. 解压JDK安装包,并删除(注意压缩包后缀名)

    # .tar.gz 后缀
    tar -zxvf 文件名
    # .tar.xz 后缀
    tar -Jxvf 文件名
    
    # 解压压缩包 
    tar -zxvf jdk-8u152-linux-x64.tar.gz 
    # 删除压缩包
    rm -rvf jdk-8u152-linux-x64.tar.gz 
    
  2. 配置环境变量:vim /etc/profile

    4.1 输入配置信息:使用按键 移动光标至文件末尾,再按下i 键 表示输入,将下面代码贴在最后。

    export JAVA_HOME=/usr/local/java/jdk1.8.0_152
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    

4.2 退出文件编辑:ESC退出编辑,输入 :wq 退出保存。如果保存不了就输入:wq!,(:q是不保存退出,:q!强制退出)

4.3 使配置生效:配置完毕后,退出编辑,在命令行输入:source /etc/profile使得配置生效

 source /etc/profile
    
export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

    
    
    export PATH==$PATH:/usr/local/nginx/sbin


  1. 测试,输入java -versionjavac,出现了版本信息大概率是成功了。

1.2 MariaDB 安装 OR 安装MySQL

CentOS 7+ 不再默认使用 MySQL 数据库,而是 MariaDB 数据库。安装MySQL虽可以成功,但是启动有问题。

CentOS7 内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突。所以二者只可去一存一

如果无特别要求,还是安装mariadb简单一点,如果安装MySQL需自己找解决办法。

1.2.1安装 mariadb与配置

1.2.1.1 安装
  1. 卸载自带版本的mariadb(也可以选择复用)

    • 查看版本

      rpm -qa|grep mariadb
      
    • 卸载:执行以下指令。

      rpm -e --nodeps 文件名
      
  2. 安装mariadb和mariadb-server

    yum -y install mariadb  mariadb-devel  mariadb-server
    
  3. 启动服务

    systemctl start mariadb.service
    
  4. 添加到开机启动

    systemctl enable mariadb.service
    
  5. 设置密码:

    输入以下指令后,如果是第一次安装,就没有密码,直接回车即可,之后就会出现询问是否设置密码,

    如果安装过,并设置过密码,则输入以前的密码

    mysql_secure_installation
    

    设置密码:输入密码时是看不见,输入完毕回车即可

    Set root password? [Y/n]           # – 是否设置root用户密码,输入y并回车或直接回车
    
    New password:                      # – 输入root用户的密码
    
    Re-enter new password:             # – 再输入一次你设置的密码
    

    其他设置:

    Remove anonymous users? [Y/n]                  # – 是否删除匿名用户,回车
    
    Disallow root login remotely? [Y/n]            # –是否禁止root远程登录,回车,我选了否,最后还是要自己配置
    
    Remove test database and access to it? [Y/n]   # – 是否删除test数据库,回车
    
    Reload privilege tables now? [Y/n]             # – 是否重新加载权限表,回车
    
  6. 进入mariadb

     mysql -u root -p
     # 回车输入密码,密码不会显示,正常输入即可,输入完毕按下回车
    
1.2.1.2 相关配置
1 端口号
  1. 查看和修改mariadb端口号方式

    查看方式1:命令行方式查看端口号

    netstat -tunlp|grep mysqld*
    

    查看方式2:进入mariadb查看:

    show global variables like 'port';
    

    修改端口号,端口建议设置为10000以上60000以下(是命令行下,不是mairadb里面)

    vim /etc/my.cnf
    

重启 Mariadb 服务

systemctl restart mariadb
2 远程连接
  1. 登录到mariadb数据库,允许root 用户远程连接

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
    

    GRANT:赋权命令
    ALL PRIVILEGES:当前用户的所有权限
    ON:介词
    .:当前用户对所有数据库和表的相应操作权限
    TO:介词
    'root'@'%':权限赋给root用户,所有ip都能连接
    IDENTIFIED BY 'root':连接时输入密码,密码为root
    WITH GRANT OPTION:允许级联赋权

    使修改生效

    flush privileges;
    

    修改后查看授权情况:

    use mysql;	# 进入已有的数据库下
    SELECT host,user,password from user;
    

  1. 若如上配置没问题而且,阿里云也开放了端口,那就是CentOS防火墙拦截了,关闭防火墙,那是万万不能的,所以只有添加开放端口。(!!!重要重要重要!!!)

    如果防火墙不开放端口所报的错为:Can't connect to MySQL server on '47.120.3.22:3306' (10060)

    • 查看防火墙是否开启:

      firewall-cmd --state
      
      # systemctl stop firewalld (停止防火墙)
      # systemctl disable firewalld(禁止开机启动)
      # systemctl start firewalld(开启防火墙)
      # systemctl enable firewalld(开启自启)
      
    • 添加端口

      --permanent:永久生效,没有此参数时,重新启动系统之前的开启或删除端口失效了。

      firewall-cmd --zone=public --add-port=3306/tcp --permanent
      
      # 给定一个范围
      firewall-cmd --permanent --add-port=8080-8085/tcp --permanent
      
    • 删除端口(根据需要进行操作)

      firewall-cmd --permanent --remove-port=3306/tcp --permanent
      
    • 重启防火墙

      systemctl restart firewalld.service
      
    • 查看所有开放的端口

      firewall-cmd --list-ports
      
  2. 测试链接:mysql -h IP地址 -p 端口号 -uroot -p

1.2.2 安装MySQL

  1. 卸载 MariaDB

    CentOS 7+ 不再默认使用 MySQL 数据库,而是 MariaDB 数据库。

    直接安装 MySQL 会与 MariaDB 的文件冲突。

    • 查看版本:有则需要卸载。

      rpm -qa|grep mariadb
      
    • 卸载:执行以下指令。

      rpm -e --nodeps 文件名
      
    • 再次查询,确认是否卸载掉:

      rpm -qa|grep mariadb
      
  2. usr/locad下创建 mysql 文件夹,用于存放mysql

    cd /usr/local 
    mkdir mysql  
    cd mysql
    
  3. 这里是去官网下载:https://dev.mysql.com/downloads/mysql/

    根据个人电脑或服务器选择合适的版本进行下载,现在MySQL归属于Oracle,所以现在需要注册一下Oracle账号。

  4. 按照上面传输JDK的步骤,把下载好的MySQL安装包放到指定文件夹下,这里是usr/local/mysql,在此过程中可以检查是否存在旧版本的mysql:

    rpm -qa|grep mysql
    
    • 没有输出:说明当前系统没有安装 MySQL,开始安装。

    • 有输出则删除:显示有mysql版本号

      # 停止服务
      systemctl stop mysqld
      
      # 卸载
      rpm -e --nodeps 文件名
      
  5. 解压安装

    可进入 mysql 文件夹下输入ls显示压缩包名称,进行复制文件名

    # 解压压缩包 
    tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
    # 删除压缩包
    rm -rvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
    
  6. MySQL环境变量配置

    为了后续方便,可以对mysql文件夹重命名

    # 重命名(也可通过FinalShell修改)
    mv 原文件夹名 mysql8
    
    mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql8
    

    将路径添加至环境变量

    • 打开配置文件:vim /etc/profile

    • 将如下代码贴至最后:

      export PATH=$PATH:/usr/local/mysql/mysql8/bin
      
    • 使配置文件生效: source /etc/profile

  7. 验证是否安装成功:mysql --version

1.3 安装Nginx

1.3.1 安装nginx依赖

查看是否安装了某软件包:yum list installed | grep '依赖名'

  1. 安装 gcc-c++

    yum install gcc-c++
    gcc -v	# 查看版本
    
  2. 安装Open SSL

    yum install -y openssl openssl-devel
    openssl version	# 查看版本
    
  3. 安装PCRE pcre-devel

    yum install -y pcre pcre-devel
    yum list installed | grep 'pcre' # 查看是否安装了pcre
    
  4. 安装zlib

    yum install -y zlib zlib-devel
    yum list installed | grep 'zlib' # 查看是否安装了zlib
    

1.3.2 Nginx下载和安装

http://nginx.org/en/download.html

  1. 将创建nginx安装包存放目录,并解压安装。

    cd /usr/local
    mkdir nginx
    cd nginx
    

    将下载好的nginx压缩包通过finalShell上传到指定的文件夹下

    # 解压压缩包 
    tar -zxvf nginx-1.24.0.tar.gz
    # 删除压缩包
    rm -rvf nginx-1.24.0.tar.gz
    
  2. 安装ssl证书 添加两个模块 如不需要直接执行./configure即可

    cd /usr/local/nginx/nginx-1.24.0
    # 安装ssl证书
    ./configure --with-http_stub_status_module --with-http_ssl_module
    # 执行make命令(要是执行不成功请检查最开始安装的四个依赖有没有安装成功)
    make
    # 执行make install命令
    make install
    
  3. 查看nginx安装目录: whereis nginx

  4. 配置命令全局执行(这里配置了就可以不再使用1.3.3的方式

    如果不设置软连接,就需进入/usr/local/nginx/sbin/目录下进行开关操作

    cd /usr/local/nginx/sbin/
    
    #创建软连接
    ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
    
    nginx     #启动
    nginx -s stop  #停止
    nginx -s quit  #退出停止
    nginx -s reload  #重新加载配置文件
    
  5. 设置开机自启动

    vi /etc/rc.local
    #末尾增加一行 
    /usr/local/nginx/sbin/nginx 
    

1.3.3 一些可能遇到的问题

可能会出现的问题:

进行关闭或重启时报错:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory),大致意思是cd /usr/local/nginx/logs下缺少了nginx.pid文件

解决:

网上找到一个解决办法就是:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

但是我又出现了另一个问题:端口被占用,报错如下:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

这时可以简单暴力的kell 程序或任务ID

# 查看任务
netstat -ntlp
# 使用kell命令干掉,PID根据实际情况填写
kell PID

这时候就可以正常执行:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf指令了

还可以将nginx服务添加到系统服务

  1. 把nginx添加至环境变量(如果出现 nginx不是内部或外部命令时可以进行配置)

    vim /etc/profile
    

    环境变量末尾添加:

    export PATH==$PATH:/usr/local/nginx/sbin
    
  2. 编写启动脚本:vim /usr/lib/systemd/system/nginx.service,nginx.service应该是没有的,但是执行该指令后,会出现一个区域,此时输入i,再将如下脚本指令粘贴进去就可以了,按下esc退出编辑,再输入:wq保存退出(具体参数依照实际情况

    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network.target remote-fs.target nss-lookup.target
     
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
     
    [Install]
    WantedBy=multi-user.target
    

    重新加载一下:systemctl daemon-reload

  3. 一些语法

    # 开启
    systemctl start nginx
    # 关闭
    systemctl stop nginx
    # 重启
     systemctl restart nginx
    # 开机自启
    systemctl enable nginx
    

1.3.4 配置防火墙

  1. 开放80端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    # 重启防火墙
    firewall-cmd --reload
    # 验证80端口是否开放成功
    firewall-cmd --zone=public --query-port=80/tcp
    # 查看所有开放端口
    firewall-cmd --list-ports
    
  2. 远程登录验证:你的服务器公网IP地址:80

2)项目部署

这里不考虑开发和生产环境

2.1 部署VUE项目

打包前请注意修改vue.config.js中的内容,比如后端请求地址等

如果访问不到页面可以设置一下: publicPath:'/'

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  publicPath:'/', //配置该路径,nginx中,进行路由转发,才可找到
  devServer:{
  	//xxx
    proxy:{
      //xxxxx
    },
  },
})

  1. 打包VUE项目

    npm run build
    # 生成dist文件夹
    

    将打包好的项目上传到服务器自定义指定文件夹下

  2. 配置Nginx,这里不再做其他配置,仅仅只要求跑起来

    进入nginx配置文件目录,找到nginx的配置文件nginx.conf

    cd /usr/local/nginx/conf
    vi nginx.conf
    
    # 最后一行加上 include /usr/local/nginx/conf/vhosts/*.conf; ,进行加载其他配置文件。
    include /usr/local/nginx/conf/myconfig/*.conf;
    # 重启
     nginx -s reload 
    

  1. 按照配置的的路径添加文件夹以及配置文件

    cd /usr/local/nginx/conf
    mkdir myconfig
    cd myconfig
    # 创建配置文件
    vi demo1.conf
    

    配置文件具体信息依照个人情况而编写,这里是最简单的写法

    server {
        listen       8090;
        server_name  locahost;
    
        location / {
          root /usr/local/projectitems/demo_01/dist;
          index  index.html;
        }
    }
    

    重启nginx

    nginx -s reload
    
  2. 如果用到了用到了其他新的端口,请务必不要忘记如下操作:

    • 开启阿里云安全组

    • 防火墙开放此端口并重启防火墙

2.2 部署SpringBoot

注意:如果代码中有从com.sun.xxx这个包下导入的方法,在maven打包时是不会成功的,解决办法需有许多,自行百度吧,我这里是更改源程序代码解决的。

在打包前请修改你的配置文件,比如数据库连接地址,端口号,账户密码,数据源等

打包步骤:clean----->package

选中生成的jar,上传到服务器,执行:

cd /usr/local/projectitems/demo_01
# 一次启动
 java -jar answeringsystem-0.0.1-SNAPSHOT.jar
# 自动不间断启动
nohup java -jar answeringsystem-0.0.1-SNAPSHOT.jar & 

2.3 允许数据库

注意:如果是低版本数据库跑高版本数据库的数据需要注意字符集排序规则

解决办法:只要将高版本数据库的字符集和排序规则替换成低版本数据库兼容的即可,如下所示

# 登录mariadb数据库
mysql -u root -p 
# 创建一个同名数据库
 create database tiku_db;
 # 进入刚刚建立的数据库
 use tiku_db;
 # 执行如下指令:source 存放数据文件的绝对地址
 source /usr/local/projectitems/demo_01/tiku_db.sql

如果数据量很大的话,爬数据有点慢,慢慢等吧。

2.4 运行效果图

各接口均能正常返回数据,这次项目是边学边做的的,主要也是用于期末更方便的复习试题所做的,就不上链接了,下次重写一个。

链接:https://pan.baidu.com/s/1DMp_G4TBKSZpwxEJN3IQUw
提取码:1111

内涵:nginx、JDK1.8、MySQL

image-20230420090652837