服务器部署前后端项目-SQL Father为例

hello~大家好哇,好久没更新博客了。现在来更新一波hhh

现在更新一下部署上的一些东西,因为其实有很多小伙伴跟我之前一样,很多时候只是开发了,本地前后端都能调通,也能用,但是没有部署到服务器试过,包括其中nginx的转发等等,很多存在不理解的地方,这一期我主要打算来讲这一部分。可能讲的不是很详细,也可能存在忽略的新手视角的看法,所以如果有问题,可以不妨直接评论,我看到的话会回答的哈(及时性可能就没那么快了)~~

现在我就以sql-father为例,因为刚好最近在部署这个项目,其实之前我也部署过另外一个,叫若依,只不过没有写成文档的形式,且当时也比较懵懵懂懂,只是知道能完成就行了。

当然,这次也很感谢这位作者@lemon-giser,他写的博客其实很详细了,我也是在这个基础上进行更新(主要是想节省一些工作量hhh,具体参考的博客地址放在最下面了)。

1.项目地址

1.1 github

前端地址:https://github.com/liyupi/sql-father-frontend-public

后端地址:https://github.com/liyupi/sql-father-backend-public

1.2 gitee

前端地址:https://gitee.com/liyupi/sql-father-frontend-public

后端地址:https://gitee.com/liyupi/sql-father-backend-public

2.打包

首先这里要先配置好环境哦~这里我就不过多讲解了。一般我后端会用idea,前端会使用vscode。

这里需要先把包先git下来或者直接下载也是可以的

2.1 前端

前端打开后,先安装依赖,使用指令yarn install(如果提示没有yarn,先npm下载一下)

然后这里有个地方要修改下配置(改完后记得ctrl+s保存):

image-20230827233248917

然后就可以打包啦~~

使用指令yarn run build会生成一个dist文件夹。

这里先给它压缩一下,方便传到服务器,也可以不用hhh。

2.2 后端

后端的话我使用idea打开的。

这里也是需要改动一点东西的,因为如果不是在本地运行的话,在服务器启动会报错。

参考解决方案地址:https://github.com/liyupi/sql-father-backend-public/issues/28

image-20230827233718139

然后就是修改配置文件中的数据库地址啦

image-20230827233921656

这里记得改哦,因为要部署到线上环境,所以我就弄成prod了

image-20230827234007823

接下来就是开始打包(这里你得有maven)

然后双击install,就可以开始打包啦(如果部署到线上,有个test地址那里报错了,就把昨天test文件夹删了就可以)

image-20230827234126948

2.3 放置到服务器

打包好后的前后端:

image-20230827234425132

image-20230827234452752

然后就可以上传到服务器啦~~

3.安装环境配置

3.1 前端

运行前端需要Web容器,如tomcat、nginx等。这里用的nginx。

注意这里nginx的版本,我这里使用的是1.19.8,我当时用的1.21好像填写那个配置是会报错的,所以这里注意哈

nginx的安装教程很多,这里贴一个。https://juejin.cn/post/6844904144235413512

3.2 后端

运行后端需要Java环境。

Linux部署Java环境,网上教程也很多。https://blog.csdn.net/qq_43329216/article/details/118385502

注意:tar解压可能会丢文件,比如没有jre文件,我这里就遇到了,解决方法就是先在本地解压在上传到服务器,当然也有其他更好的办法。

准备数据库,参考上方第3步.

3.3 数据库

打开MySQL,运行项目提供的SQL语句。我这里用的HeidiSQL(使用navicat也可以)。

注意:这里mysql版本是5.7。似乎5.6.5版本以下不支持datetime类型,会失败。

还有就是如果字符提示超了,可以把那些varvhar(1024)和varvhar(512)的改小点,改成varchar(255),bitint改成int。(当然这只是我的解决方法hhh,根据错误去百度搜也有很多解决方案啦)

image-20230404175312159

在这一步可以直接连接到服务器的数据库,建表插数据。后端项目修改一下配置即可

4.部署

先把前后端包传上去哈~地址随便你定就好了。

注意如果你是云端的服务器,你这里要提前开放端口,比如这里监听的是888端口,就开这个就可以

首先就讲下后端的部署吧。

当然,如果有必要,我觉得可以指定地址去运行哈

  1. 命令 java -jar sql-father-backend-0.0.1-SNAPSHOT.jar
  2. 测试页面是否正常运行
  3. 停掉后端,改为热启动的方式运行。nohup java -jar sql-father-backend-0.0.1-SNAPSHOT.jar > out.log &

Linux nohup 命令详解 https://juejin.cn/post/7014115562595254285

前端部署:

nginx安装好后,就是改配置啦。由于我是用宝塔安装的nginx,有可视化界面,所以我就用可视化界面改啦

讲解:

listen是你的监听的端口(还记得前端打包填的地址吗)

server_name是你的服务器地址

还有就是localtion / 里面的root后面/www/wwwroot/sqlFather/sqlfather-frontend这里是我的前端包放置的位置哈

然后下面的location /api这个就不用动哈,如果你后端也是部署在本地,那这个localhost就不用动了

server
{
    listen 888;
    server_name 192.168.200.218;
    index index.html index.htm index.php;
    location / {
      root /www/wwwroot/sqlFather/sqlfather-frontend;
      index index.html index.htm;
    }
    location /api {
        proxy_pass http://localhost:8102/api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cookie_path / /;
        proxy_set_header Cookie $http_cookie;
        proxy_cookie_flags ~ nosecure samesite=strict; 
    }
    access_log  /www/wwwlogs/access.log;
}

然后就可以啦。

输入你的ip:888就可以访问前端啦。

结尾

至此项目就搭建完毕了,主要麻烦的地方在环境配置那块。环境搭好了,以后再部署项目非常快。

参考的博客:

Linux服务器部署前后端项目-SQL Father为例

nginx转发问题

登录失效问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如果你觉得自己很失败,请观看此内容 视频学习

目录 什么是成功?​​​​​​​ How can we succeed in such an unfair world? 我们如何在这个不公平的地球上获得成功? 如何去找到自己的不公平优势呢? 最开始也有常有人跟她说你做视频是赚不到钱的 你做了,并不代表你做…

Spring版本与JDK版本演变

Java各版本变更核心API Java8 lambada表达式函数式接口方法引用默认方法Stream API 对元素流进行函数式操作Optional 解决NullPointerExceptionDate Time API重复注解 RepeatableBase64使用元空间Metaspace代替持久代(PermGen space) Java7 switch 支…

day3 c++d对话框及事件处理机制

1.文本编辑器 2.自由移动的球

手把手教你写出第一个C语言程序

Hello, World! 1. 前言2. 准备知识2.1 环境2.2 文件的分类2.3 注释2.3.1 注释的作用2.3.2 注释的两种风格2.3.2.1 C语言的注释风格2.3.2.2 C的注释风格 2.3.3 VS中注释和取消注释的快捷键 3. 开始演示3.1 创建项目3.2 创建源文件3.3 写代码3.4 编译链接运行 4. 代码解释4.1 写主…

QT DAY4

一、对话框 消息对话框、字体对话框、颜色对话框、文件对话框 1.1消息对话框 主要分为这四类对话及一种NoIcon无图标对话 而对话框也分为两种实现方式,一种为基于属性分开初始化的方式,这种方式更灵活,更多元,需要对exec的返回值…

SQLPro Studio for Mac:强大的SQL开发和管理工具

SQLPro Studio for Mac是一款强大的Mac上使用的SQL开发和管理工具,它支持各种数据库,包括MySQL,PostgreSQL,SQLite等。使用 SQLPro Studio,您可以轻松地连接和管理您的数据库,执行SQL查询和脚本&#xff0c…

c++11 标准模板(STL)(std::basic_ostringstream)(一)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

Windows安装Nginx及部署vue前端项目操作

先在nginx官网下载windows下安装的包&#xff0c;并解压&#xff0c;到ngnix目录下 双击nginx.exe,会有黑窗闪过。 用cmd命令窗口&#xff0c;cd 到nginx解压目录&#xff0c;./nginx启动。 在浏览器中访问http://localhost:80,出现以下界面说明启动成功(由于笔者电脑80端口被…

【核心复现】基于改进灰狼算法的并网交流微电网经济优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Nano编辑器安装使用指南

关于nano Nano编辑器是一个命令行文本编辑器&#xff0c;具有简单易用的界面和一些基本功能。 Nano小巧友好&#xff0c;提供许多额外的特性&#xff0c;例如交互式的查找和替换、定位到指定的行列、自动缩进、特性切换、国际化支持、文件名标记完成等。 Nano是为了代替闭源的…

【0901作业】QTday3 对话框、发布软件、事件处理机制,使用文件相关操作完成记事本的保存功能、处理键盘事件完成圆形的移动

目录 一、思维导图 二、作业 2.1 使用文件相关操作完成记事本的保存功能 2.2 处理键盘事件完成圆形的移动 一、思维导图 二、作业 2.1 使用文件相关操作完成记事本的保存功能 void Widget::on_saveBtn_clicked() {QString filename QFileDialog::getSaveFileName(this,&…

DVWA失效的访问控制

失效的访问控制&#xff0c;可以认为是系统对一些功能进行了访问或权限限制&#xff0c;但因为种种原因&#xff0c;限制并没有生效&#xff0c;造成失效的访问控制漏洞,比如越权等 这里以DVWA为例&#xff0c;先访问低难度的命令执行并抓包 删除cookie&#xff0c;并在请求头…

堆的基本存储(Java 实例代码)

堆的基本存储 一、概念及其介绍 堆(Heap)是计算机科学中一类特殊的数据结构的统称。 堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆满足下列性质&#xff1a; 堆中某个节点的值总是不大于或不小于其父节点的值。堆总是一棵完全二叉树。 二、适用说明 堆是利用完…

【防火墙】防火墙NAT Server的配置

Web举例&#xff1a;公网用户通过NAT Server访问内部服务器 介绍公网用户通过NAT Server访问内部服务器的配置举例。 组网需求 某公司在网络边界处部署了FW作为安全网关。为了使私网Web服务器和FTP服务器能够对外提供服务&#xff0c;需要在FW上配置NAT Server功能。除了公网…

java八股文面试[多线程]——进程与线程的区别

定义 1、进程&#xff1a;进程是一个具有独立功能的程序关于某个数据集合的以此运行活动。 是系统进行资源分配和调度的独立单位&#xff0c;也是基本的执行单元。是一个动态的概念&#xff0c;是一个活动的实体。它不只是程序的代码&#xff0c;还包括当前的活动。 进程结构…

RunnerGo:提升性能测试效率的强大利器

在现代软件开发中&#xff0c;性能测试是确保应用程序在真实负载下正常运行的关键环节。为了满足不断增长的用户需求和保证应用程序的性能稳定性&#xff0c;这里给大家介绍RunnerGo&#xff0c;这是一款功能强大、易于使用的性能测试平台&#xff0c;能够极大地提升性能测试的…

NoSQL数据库介绍+Redis部署

目录 一、NoSQL概述 1、数据的高并发读写 2、海量数据的高效率存储和访问 3、数据库的高扩展和高可用 二、NoSQL的类别 1、键值存储数据库 2、列存储数据库 3、文档型数据库 4、图形化数据库 三、分布式数据库中的CAP原理 1、传统的ACID 1&#xff09;、A--原子性 …

9、Spring_事务管理

六、Spring 事务管理 1.Spring 事务简介 事务概述&#xff1a;保证数据库操作同时成功或者同时失败 Spring 事务的概述&#xff1a;在数据层保证数据库操作同时成功或者同时失败 2.转账案例分析 转账肯定有一个业务方法&#xff1a;给转出用户减钱&#xff0c;给转入用户加…

Linux枚举文件目录、获取文件属性

目录 1.枚举指定路径下的文件目录2.获取文件属性stat其他方式&#xff1a;Linux获取文件属性stat()、fstat()、lstat()函数实现stat属性代码 1.枚举指定路径下的文件目录 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.…

Python基础学习第六天:Python 数据类型

内置数据类型 在编程中&#xff0c;数据类型是一个重要的概念。 变量可以存储不同类型的数据&#xff0c;并且不同类型可以执行不同的操作。 在这些类别中&#xff0c;Python 默认拥有以下内置数据类型&#xff1a; 获取数据类型 您可以使用 type() 函数获取任何对象的数据…