小白第一次部署前后端数据库分离项目

大三上期学校有个信息系统管理设计和开发的课程,想来自己还没碰过服务器,正好也在学习oracl数据库,就想着自己0到1实现一个简单的信息系统满足课程要求,顺带自己巩固学到的数据库知识。本次项目,前端采用的是react+antd+axios+umi+dva一套,后端采用springboot3+jdk17+mybaits-puls版本,数据库前期采用的oracl数据库,但是后来部署上服务器oracl要给Money,本着大学生穷的原则,就更改成mysql数据库了。文章一共分为三部分,分别是mysql数据库,后端java部署,前端nginx部署三部分,关于jdk17 mysql5.7 以及nignx的安装与配置,还不懂的可以去看看我前面的三篇文章,讲的非常详细。

服务器端口开启

这坑一定要提前说,因为作者在这里耗了很久,当时死活找不到什么原因,第二天睡醒了才想起服务器端口没开放,难怪本地能访问本地数据库和后端,本地访问不了远程数据库和后端,当时找了好久,简直要气炸了。我用的是阿里云服务器,在阿里云服务器的安全组把端口打开,这里3306是mysql数据库的,80是nginx的,5050是我后端java程序的端口。

mysql数据库创建

我采用的navicat访问远程数据库,这里连接名随便取自己以后认得到就可以了,主机就是你服务器的Ip 端口Mysql默认的是3306,密码是你远程数据库的密码。

数据导入数据库

1.把本地数据库的数据转储

先把本地数据库的数据转储为sql文件,我导入到的是桌面。其他数据库也是一样的转储,但是不同的数据库数据类型不一样,比如你oracl数据库数据转储出来到mysql数据库,可能就会有问题,数据类型问题就读者自行百度搜索解决。

2.新建远程数据库

数据转储之后,同样的鼠标右击点击自己远程的数据库,过程和转储数据一样的,在转储上面有个新建数据库,新建数据库,数据库的字符集和排序规则在转储的数据库可以看见的

这样数据库就建立好了,接下来将数据存入数据库里面

3.数据库存入数据

点击刚才创建好的数据库,然后鼠标右键有一个运行sql文件,点击之后按照下图选择之前转储的sql文件就可以了。然后点击开始,等待转储过程就可以了。
注意: 完成之后看不到数据库里面没数据,刷新一下界面就可以了。

这样数据库就弄好了,接下来就是将后端程序连接数据库了

后端部署

1.更改后端数据库访问地址

首先在后端程序里面,将数据库地址更改了,改成访问远程数据库的账号密码 注意: 你们更改了数据库,和代码 一定一定要在本地先调试通过了再接下来搞。 在本地调试,比如前后端都开启,只不过是访问数据库从本地换成了服务器的数据库,看看后端能不能访问到服务器数据库。如果可以就继续,如果不可以,看看这篇文章开头的,有没有把服务器数据库的3306端口开放。通过了再把后端程序打包成Jar包。
2.将打包的jar包上传到服务器

我打包并且重命名为Dormitory-management-back.jar包然后通过xftp软件 在本地把jar包上传到服务器

3.进入linux系统启动Jar包

进入到jar包的文件夹,在这里我的是在/usr/app里面执行Linxu命令

js 复制代码
nohup java -jar Domitory-management-back.jar >output 2>&1 &

执行命令后我们java程序就linux后台启动了。 也可以看见多了一个文件

4.检查java是否运行

我将我的前端代码proxy代理 到服务器上面,可以登录,说明jar包运行起来了,如果访问失败,再次提醒看看自己服务器的端口有没有开放,如果开放了还有错,看看是不是Jar包程序本身有问题,在本地试一试jar包

前端部署

首先对前端项目进行打包成dist,要是打包这些都不会,部署个jimao。

1.上传打包dist文件内容到linux

我是放在/usr/share/student文件里面(放到其他位置小心读取文件有没有权限)

2.配置nginx配置文件

我的安装位置在/usr/local,里面有个nginx文件,这个nginx就是安装文件,接下来进入nginx/conf文件里面,这里面就是配置文件

这个conf.d文件不是安装就有的,是我自己创建的,然后里面是写我们自己的nginx配置文件,至于他为什么要读取我这个自定义的conf.d文件,我在前一篇nginx的安装配置文章里面讲解了,配置起来很简单,就创建一个conf.d文件夹,然后再在nginx.conf添加一条语句就可以了,不懂得去看看我前一篇文章后面部分,真的相当简单。

3.配置自定义的.conf文件

先随便创一个xxxx.conf文件(一定是以.conf结尾)

然后编辑他,然后保存退出即可,配置文件我在本章后面详细说了一些注意事项

4.重启nginx服务

进入到安装路径并且重启nginx服务

js 复制代码
cd /usr/local/nginx/sbin
./nginx -s reload

5.访问ip查看是否部署ok

我可以登录说明nginx已经部署好了,并且mysql java 也是弄好了的,至此部署完成

6.自定义conf配置文件的详细说明 这是我的配置文件,接下来详细的说一下

js 复制代码
server{
    #监听80端口
    listen 80 default_server;
    listen [::]:80 default_server;
    # root 的位置是我们dist文件里面的内容,你们也可以自己配置读取dist位置
        root /usr/share/student;
        try_files  $uri $uri/ /index.html;
    #location知识点比较多,下面来讲解
    location /api/ {
        proxy_pass  http://8.130.166.67:5050/;
     }

}

首先这个location的 / xxxx / 是正则。匹配xxxx,比如我的就是要匹配api。为我在求数据的时候网络封装肯定是带了api的,然后把api替换成了真实的地址比如:proxy代理也是替换api

但是后端接口是没有api前缀的,后端接口都是/dormitory/faculty;这说明了api这个其实是我们不需要的,我们要把它替换成我们真实的地址; proxy_pass就是nginx的反向代理

接下来还要注意这个/ ;这个斜杠要与不要的区别十分大,这里推荐我学长的一篇文章,他写的相当清楚明了nginx部署前端页面 - 掘金 (juejin.cn)

总结

这篇文章十分基础,适合第一次部署的小白。一般企业或者实验室部署项目都是用的docker,还涉及的nginx的负载均衡的几种策略。希望文章对读者有用吧。

相关推荐
ajsbxi7 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
JustCouvrir1 天前
macOS|前端工程部署到Nginx服务器
服务器·前端·nginx
AlbertS1 天前
使用 Let’s Encrypt 获取免费SSL证书
nginx·免费·centos7·ssl证书·let’s encrypt
航月1 天前
FTP、ISCSI、CHRONY、DNS、NFS、DOCKER、MARIADB、NGINX、PHP、CA各服务开启方法
nginx·docker·mariadb
IT-民工211101 天前
nginx监控指标有哪些
运维·nginx
陌路物是人非2 天前
docker对nginx.conf进行修改后页面无变化或页面报错
nginx·docker
草明2 天前
Nginx 做反向代理,一个服务优先被使用,当无法提供服务时才使用其他的备用服务
运维·nginx·github
吉吉612 天前
Nginx:我自己的网站
运维·nginx
柳叶寒2 天前
医院信息化与智能化系统(17)
java·nacos·gateway·全栈·项目
凉忆-2 天前
nginx安装ssl模块教程
运维·nginx·ssl