Spring+Vue项目部署

news2024/10/6 8:39:03

目录

一、需要的资源

二、步骤

1.首先要拥有一个服务器

2.项目准备

vue:

打包:

3.服务器装环境

文件上传

设置application.yml覆盖

 添加启动和停止脚本

​编辑 安装jdk1.8

 安装nginx

安装mysql  

报错:「ERR」1273-Unknown collation: 'utf8mb4_0900_ai_ci'

启动java

服务器部署最后一部出现no main manifest attribute, in springboot-0.0.1-SNAPSHOT.jar这个错误怎么解决的?


本文章记录如何将Spring+Vue前后端分离的项目部署到服务器上

一、需要的资源

软件:Xshell、Xftp

二、步骤

1.首先要拥有一个服务器

服务器可以用学生优惠或者购买(或者一些免费资源),这里不要求

2.项目准备

在本地写项目时大部分用的locahost,但是部署到服务器上的话是不可取的,所以我们需要把localhost改成服务器地址。

vue:

给项目新建两个文件

.env.development中写:

VUE_APP_BASEURL='http://localhost:8080/'

 .env.production中写:

VUE_APP_BASEURL='http://101.34.248.238:8080'

在main.js文件中新定义一个全局变量:

Vue.prototype.$baseUrl = process.env.VUE_APP_BASEURL

 然后可以使用替换,把文件中的localhost:8080改成$baseUrl

打包:

vue:

npm run build

运行命令后会有一个dist文件夹,这里面装的就是打包好的前端。

SpringBoot:

运行命令

mvn clean package

 或者,点开maven面板,先点击clean,再点击package

打包好后会有target文件夹,这就是打包好的后端。

3.服务器装环境

一共需要装三个软件,安装包可以通过百度网盘下载:

链接:https://pan.baidu.com/s/1dVwrMDM_qMywqEy-gkN2zA 
提取码:iwvv

文件上传

打开xshell建立连接:

连接成功:

 点击新建文件传输。即xftp:

新建文件夹:

mkdir -p /home/server/shield

 其中shield可以自己定名字,也可以直接在xftp里面右键新建文件夹

在shield里面新建两个文件夹:java和vue;在java中拉入target里的jar包

 在vue里面拉入整个dist文件夹

设置application.yml覆盖

把原后端的application.yml也拉入java里面,右键,用记事本打开编辑

内容如下:ip是服务器地址,url改成用ip变量

server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${ip}:3306/shield
    username: root
    password: root
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 20MB
ip: 101.34.248.238

 添加启动和停止脚本

在java里创建两个脚本,右键新建

start.sh

NAME=shield-Spring-0.0.1-SNAPSHOT.jar
nohup java -jar $NAME  > server.log 2>&1 &
ech0 'start success'


stop.sh

PORT=8080
pid=`netstat -tnlp | grep -v grep | awk '{print $7}' | awk -F/ '{print $1}'`
if [ ${pid} ]; then
   kill -9 $pid
   echo "kill $PORT"
else
   echo 'stop success!'
fi

或者代码新建:

cd /home/server/shield/java
vi start.sh

 按A进入插入模式,插入内容后按esc,:wq!即可退出

赋予所有文件权限:(绿色文件)

chmod +x *

 安装jdk1.8

把包放进tmp里面

#把包解压到/usr/local/
tar -zxvf /tmp/jdk-8u371-linux-x64.tar.gz -C /usr/local/
#改名为java
mv /usr/local/jdk1.8.0_371 /usr/local/java

#编辑配置文件
vi /etc/profile

#在文件最后加入下面两行代码
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
#保存退出

#让配置文件生效
source /etc/profile
#验证
java -version

成功:

 安装nginx

直接无脑按步骤执行下面命令:

#安装gcc
yum install gcc-Ci4

#安装PCRE pcre-devel
yum install -y pcre pcre-devel

#安装zlib
yum install -y zlib zlib-devel

#安装open sSL
yum install -y openssl openssl-devel

 下载nginx到tmp

mkdir /usr/local/nginx
tar -zxvf /tmp/nginx-1.24.0.tar.gz -C /usr/local/nginx
cd /usr/local/nginx/nginx-1.24.e
#编译安装
./configure --with-http_stub_status_module --with-http_ssl_module
make && make install

成功:

nginx命令:

cd /usr/local/nginx/sbin
./nginx               #启动
ps -ef l grep nginx   #查看
./nginx -s stop       #停止
./nginx -s reload     #重启

如果打开远程地址出现如下页面,则nginx安装成功:

 nginx配置

找到nginx.conf文件,编辑它

内容如下:

 server {
        listen       8888;#可以改端口
        server_name  localhost;

        location / {
            root   /home/server/shield/vue/dist;#这里改成vue的打包dist的地址
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;#刷新不会报错
        }

安装mysql  

linux系统会自动携带一个数据库,我们需要把它给卸载掉通过以下代码可以查看mariadb并卸载 

rpm -qa l grep mariadb
yum remove -y mariadb-connector-c-3.1.11-2.oc8.1.x86_64
yum remove -y mariadb-connector-c-config-3.1.11-2.oc8.1.noarch

 下载mysql并上传到tmp文件夹

mkdir /data/mysql
tar -zxvf /tmp/mysql-5.7.42-e17-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.42-e17-x86_64 /usr/local/mysql

#添加用户组
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /data/mysql

cd /usr/local/mysql
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql --initialize#这里会有密码,注意保存
#将mysql加入到服务中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# mysql快捷方式
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/lib6a/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses. so.5

 注意:记住临时密码

 编辑配置文件my.cnf

 vi /etc/my.cnf

里面内容如下:

[mysqld]
datadir=/data/mysql
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
#取消密码验证
# skip-grant-tables
# # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=o
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

启动mysql:  service mysql start


开机启动: chkconfig mysql on

mysql修改密码

$ mysql -u root -p #连接服务登录mysql
SET PASSWORD = PASSWORD('root')

修改连接权限

$ mysql -u root -p #连接服务登录mysql
> show databases; #查看当前所有数据库
> use mysql; #进入mysql数据库
> show tables; #查看mysql数据库中所有的表
> select Host, User from user; #查看user表中的数据 
> update user set Host='%' where User='root'; #修改user表中的Host
> flush privileges; #最后刷新一下

本地用Navicat连接mysql

注,记得打开服务器防火墙

创建数据库运行sql文件即可

报错:「ERR」1273-Unknown collation: 'utf8mb4_0900_ai_ci'

mysql导入sql文件报错:

[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

大致原因:sql对应的mysql版本高于当前要导入的mysql库的版本,引发的1273错误。

解决方案:

打开sql文件,将文件中的所有utf8mb4_0900_ai_ci替换为utf8_general_ci,同时将utf8mb4替换为utf8。处理sql后重新在mysql库中导入sql文件即可。

启动java

cd /home/server/shield/java/
./start.sh
tail -100f server.log

注意: 一样要设置防火前,打开后台端口

服务器部署最后一部出现no main manifest attribute, in springboot-0.0.1-SNAPSHOT.jar这个错误怎么解决的?

把pom.xml里的<skip>true</skip>这行代码删掉,然后重新打包jar包,把jar包通过Xftp传入/home/server/shield/java

再在进入Xshell输入:

cd /home/shield/java/

./start.sh 

tail -100f server.log

查看是否启用成功。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS2中的CMakeLists(一)——基础知识

在使用ROS2框架开发机器人应用时&#xff0c;对各个功能包Cmakelist.txt文件的更改尤为重要。本系列旨在总头开始介绍Cmakelist.txt各条语句的意义和内涵。 Cmake已经是高度集成的构建工具&#xff0c;其作用是在不同开发环境下生成makefile文件&#xff0c;以此来执行make指令…

聊聊 System.Linq.Dynamic,以及分享一个使用 System.Linq.Dynamic 扩展 LINQ 查询的详细例子

前言&#xff1a;System.Linq.Dynamic 是什么&#xff1f; System.Linq.Dynamic 扩展了 .NET 中的 LINQ 查询功能&#xff0c;通过它&#xff0c;我们可以在运行时动态构造 LINQ 查询表达式&#xff0c;就像是写原生 SQL 语句一样&#xff0c;更加灵活直观。 利用 System.Lin…

FPGA学习笔记(5)——硬件调试与使用内置的集成逻辑分析仪(ILA)IP核

如果要对信号进行分析&#xff0c;可以使用外置的逻辑分析仪&#xff0c;但成本较高&#xff0c;对初学者来说没有必要&#xff0c;可以使用Xilinx Vivado内自带的逻辑分析仪IP核对信号进行分析&#xff0c;不过需要占用一定的芯片资源。 本节采用上一节配置的LED灯闪烁代码&a…

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制&#xff0c;本篇文章是要将各类NMS添加到yolov5中&#xff0c;同时…

2024最适合初学者人手一本的LLM大语言模型综述,爆火全网!(附PDF)

今天给大家推荐一本大模型&#xff08;LLM&#xff09;这块的一本外文书&#xff0c;经过整理已经出中文版了&#xff0c;就是这本《大型语言模型综述》&#xff01;本书在git上有9.2k star&#xff0c;还是很不错的一本大模型方面的书。 本教程内容主要内容&#xff1a;中文版…

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC&#xff0c;即客户之声&#xff0c;是一种通过收集和分析客户反馈、需求和期望&#xff0c;来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下&#xff0c;VOC不仅能够帮助企业了解客户的真实需求&#xff0c;还能为企业提供宝贵的竞争情报&#xff0c;助力企业…

STL——常用算法(二)

一、常用拷贝和替换算法 1.copy #include <iostream> #include <vector> #include <algorithm> using namespace std; void printVector(int val) {cout << val << " "; } void test01() {vector<int>v1;for (int i 0; i <…

监控https证书的到期时间

实现该功能&#xff0c;不用借助第三方库&#xff0c;用go的标准库就足够了… 以下程序可以获取这些域名的SSL证书的到期时间&#xff0c;并在证书距离现在不足7天过期时打印提示&#xff1a; package mainimport ("crypto/tls""fmt""net""…

酒店强心剂——VR智慧酒店上线,史诗级加强入住率

出门在外&#xff0c;什么才是我们最为头疼的问题呢&#xff1f;衣食住行中&#xff0c;住的问题尤其大&#xff0c;尤其是不熟悉当地情况下&#xff0c;预定酒店才是让人头疼的问题。酒店行业该如何化解这一难题呢&#xff1f;VR全景开启智能化酒店宣传获客新模式&#xff0c;…

Hive笔记-6

6.2.8 聚合函数 1) 语法 count(*)&#xff0c;表示统计所有行数&#xff0c;包含null值&#xff1b; count(某列)&#xff0c;表示该列一共有多少行&#xff0c;不包含null值&#xff1b; max()&#xff0c;求最大值&#xff0c;不包含null&#xff0c;除非所有值都是null&a…

高考填报志愿攻略,5个步骤选专业和院校

在高考完毕出成绩的时候&#xff0c;很多人会陷入迷茫中&#xff0c;好像努力了这么多年&#xff0c;却不知道怎么规划好未来。怎么填报志愿合适&#xff1f;在填报志愿方面有几个内容需要弄清楚&#xff0c;按部就班就能找到方向&#xff0c;一起来了解一下正确的步骤吧。 第…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统&#xff1a; 3.在容器中安装mysql客户端&#xff1a; 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证&#xff1a;

福州代理记账服务财务专业知识会计助手

福州的代理记服务可探索企业和个体工商户处理财务和会计工作。选择合适的代理记服务不仅可以节省成本&#xff0c;还可以确保财务工作专业、合规。以下是一些关于代理记服务的关键信息和财务信息&#xff0c;供您参考&#xff1a; https://www.9733.cn/news/detail/180.html …

TensorFlow开源项目

欢迎来到 Papicatch的博客 文章目录 &#x1f349;TensorFlow介绍 &#x1f349;主要特点和功能 &#x1f348;多语言支持 &#x1f348;灵活的架构 &#x1f348;分布式训练 &#x1f348;跨平台部署 &#x1f348;强大的工具链 &#x1f348;丰富的社区和生态系统 &a…

缓冲池管理器

开发环境搭建 克隆 git clone https://github.com/cmu-db/bustub.git cd bustub/ 切换分支 git checkout -b branchname v20221128-2022fall 创建docker镜像 docker build . -t bustub_img 创建容器 docker create -it --name bustub_container -v “E:/cmu/bustub”:“/bustu…

JeecgFlow事件网关概念及案例

事件网关 通常网关基于连线条件决定后续路径&#xff0c;但事件网关有所不同&#xff0c;其基于事件决定后续路径。事件网关的每条外出顺序流都需要连接一个捕获中间事件。 事件网关只有分支行为&#xff0c;流程的走向完全由中间事件决定。可以从多条候选分支中选择事件最先达…

Core ML 简介:构建简单的图像识别应用程序

在 2017 年的 WWDC 上&#xff0c;苹果发布了许多令人兴奋的框架和 API 供我们开发人员使用。在所有新框架中&#xff0c;最受欢迎的框架之一肯定是Core ML。Core ML 是一个可用于将机器学习模型集成到您的应用程序中的框架。Core ML 最好的部分是您不需要有关神经网络或机器学…

计算机组成原理 | CPU子系统(2)指令系统

CISC和RISC指令集 指令的一般格式 四种结构 R型&#xff1a;寄存器型&#xff08;四地址&#xff09; I型&#xff1a;立即数型&#xff08;三地址&#xff09; J型&#xff1a;跳转型&#xff08;address以立即数的形式给出&#xff09; 格式规整&#xff0c;高六位都是操作…

昇思25天学习打卡营第01天|基本介绍

作为曾经的javaer&#xff0c;本着不断学习的初心&#xff0c;报名了昇思25天的课程&#xff0c;希望自己能学会点东西的目的。 昇思MindSpore介绍 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;…

解决chrome浏览器总是将对站点的http访问改为https的问题

问题&#xff1a;vue项目本地运行出来的地址是http开头的&#xff0c;但在chrome浏览器中无法访问&#xff0c;在Edge浏览器就可以&#xff0c;发现是chrome总是自动将http协议升级为https。 已试过的有效的方法&#xff1a; 一、无痕模式下访问 无痕模式下访问不会将http自…