若依系列(一):centos7部署若依项目;在CentOS中从零部署若依开源项目(ruoyi-vue、前后端分离)过程记录,史上最全,超级详细,最适合小白从0到1部署

乘凉~ 2024-07-17 12:07:04 阅读 75

专栏简介:本专栏主要分享一些优秀的开源项目等。

本文用一万五千多字,详细记录了在CentOS服务器上从 0 到 1 部署 ruoyi 项目(前后端分离版)的全过程,从 MySQL、Redis、Nodejs、Nginx 软件的安装和配置,到前后端配置修改,本地测试,最后将前后端都部署到CentOS服务器上;非常适合小白跟着一步步的成功部署若依项目。

安装环境说明:

你需要一个linux(CentOS)服务器(可以是虚拟机,也可以是linux系统,也可以是云服务器),用于运行若依项目还需要一个Windows笔记本,用于编译前端和后端工程

文章目录

一、前置软件安装1.1 在Windows上安装IntelliJ IDEA1.2 在Windows上安装webStorm1.3 在Windows上安装Navicat Premium1.4 在Windows上安装node.js

二、环境搭建2.1 服务器环境确认2.1.1 设置虚拟机网络环境2.1.2 更换yum为阿里源2.1.3 安装MySQL5.72.1.4 安装Redis 3.22.1.5 安装JDK2.1.6 安装nginx2.1.7 端口放行(云服务器)1、MySQL端口2、redis端口63793、后端端口8080

2.2 若依后端环境搭建2.2.1 下载若依源码2.2.2 创建若依数据库2.2.3 修改数据库配置文件2.2.4 启动后端

2.3 若依前端环境搭建2.4 修改后端日志路径

三、项目部署3.1 若依后端打包3.2 若依前端打包3.3 在服务器上部署若依前后端3.3.1 服务器准备3.3.2 配置nginx3.3.3 部署后端3.3.4 部署前端

一、前置软件安装

1.1 在Windows上安装IntelliJ IDEA

IDEA被众多Java程序员视为最好用的Java集成开发环境。

安装过程参考:https://zhuanlan.zhihu.com/p/702208495

工具也可以从以下链接获取https://download.csdn.net/download/AnChenliang_1002/89425931

解压密码:<code>12138@Asd

在这里插入图片描述

注意:到了上图这一步,即运行完install-current-user.vbs后(出现done后),重新打开JDEA软件,去复制下图文件里的code,粘贴JH就行。

在这里插入图片描述

1.2 在Windows上安装webStorm

WebStorm号称最智能的前端开发IDE, 适用于前端开发和相关技术的集成开发环境,作为前端开发。

俗话说得好, 你可以不用它,但不可以没有它!

安装过程参考:【开发工具】WebStorm 前端开发神器菜鸟必备,全网最稳定靠谱的安装教程 一镜到底、全程图文并茂、通俗易懂!,参考安装过程就行,JH过程还要按照下面:

JH过程记录:

关闭webStorm,运行以下脚本,下载链接:https://download.csdn.net/download/AnChenliang_1002/89425931

解压密码:<code>12138@Asd

在这里插入图片描述

再打开软件,就发现已经可以了

在这里插入图片描述

1.3 在Windows上安装Navicat Premium

Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。

安装参考:Navicat16.3.9安装和免费试用教程 - Windows(2024)

1.4 在Windows上安装node.js

从链接https://nodejs.org/en进行下载,然后安装:

无脑下一步即可,这个安装路径要记好

在这里插入图片描述

二、环境搭建

2.1 服务器环境确认

2.1.1 设置虚拟机网络环境

我是使用的虚拟机中的CentOS7.6作为服务器,你如果使用云服务器也是一样的。

以下是我使用的虚拟机:

在这里插入图片描述

在这里插入图片描述

可以看到,我这台设备的虚拟机里的CentOS服务器的ip是192.168.181.128,hostname是bogon;

我们ping一下bogon,如下,可以看到ip确实是192.168.181.128:

在这里插入图片描述

然后配置VMWare里的CentOS与主机互相能PING通,且CentOS能ping通外网:参考:Vmware虚拟机CentOS7、Ubuntu20系统设置静态IP,且主机和虚拟机系统能相互ping通。

配置完成后,可以ping通虚拟机里的网络了:

在这里插入图片描述

2.1.2 更换yum为阿里源

<code>mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

2.1.3 安装MySQL5.7

先更新一下yum:

yum update

在这里插入图片描述

然后安装MySQL:

<code># 1、下载yum源的rmp包

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

# 2、安装yum源

yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

# 3、清理yum缓存

yum clean all

# 4、安装

yum -y install mysql-community-server

如果遇到因为公钥未安装而失败的问题:

在这里插入图片描述

则下载并导入 MySQL 官方的 GPG 公钥:

<code>rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

确认公钥已成功导入:

您可以使用以下命令来列出已导入的 GPG 公钥:

rpm -qa gpg-pubkey*

您应该能看到 MySQL 的公钥信息。

然后再次安装MySQL:yum -y install mysql-community-server

就可以安装成功了:

在这里插入图片描述

启动:

<code>systemctl start mysqld

查看初始密码

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

在这里插入图片描述

登录

<code>mysql -u root -p

Z5G_G%Em7OzY # 输入上面的密码

在这里插入图片描述

修改密码为<code>Asd123456_

SET PASSWORD = PASSWORD('Asd123456_');

在这里插入图片描述

那我就想把密码设简单点怎么办?

1、查看 mysql 初始的密码策略,

输入语句 <code>SHOW VARIABLES LIKE 'validate_password%'; 进行查看,

2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,输入设值语句 set global validate_password_policy=LOW; 进行设值,

3、设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,输入设值语句 set global validate_password_length=6; 进行设值,

在这里插入图片描述

4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,

输入修改语句 <code>ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 可以看到修改成功,表示密码策略修改成功了!!!

在这里插入图片描述

然后设置允许远程登录

<code>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

在这里插入图片描述

刷新

<code>flush privileges;

然后quit退出数据库,并对mysql进行设置:

vim /etc/my.cnf

# 在[mysqld]下面添加,不需要分号

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

# 设置时区

default-time_zone = '+8:00'

# 新建数据库添加的配置信息

lower_case_table_names=1

default-storage-engine=INNODB

character-set-server=utf8

collation-server=utf8_general_ci

max_connections=10000

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

在这里插入图片描述

配置好编码和时区之后重启数据库

<code>systemctl restart mysqld

设置开机自启

systemctl enable mysqld

systemctl daemon-reload

其他指令

systemctl start mysqld #启动

systemctl stop mysqld #停止

systemctl status mysqld #状态

2.1.4 安装Redis 3.2

将yum源换回阿里源:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

yum update

然后安装redis:

#下载epel仓库:

yum install epel-release

#安装redis数据库

yum install redis

在这里插入图片描述

配置 redis.conf 配置文件,做如下修改:

<code>cd /etc

vim redis.conf

注释掉 bind 127.0.0.1,bind 用于限制访问 Redis 的机器 ip,直接关掉

在这里插入图片描述

修改 daemonize no 为 yes,让 Redis 可以后台启动:

在这里插入图片描述

日志的路径要记好,当然如果你想修改也是可以的:

在这里插入图片描述

设置密码:

<code>requirepass 123456

在这里插入图片描述

redis常用命令:

(1)启动:<code>service redis start

(2)停止:service redis stop

(3)检查状态:service redis status

(4)查看进程:ps -ef | grep redis

(5)设置redis开机自启:chkconfig redis on

(5)进入客户端:redis-cli

(6)列出所有key:keys *

(7)修改配置文件:vim /etc/redis.conf

(8)使用端口登录客户端:redis-cli -h 127.0.0.1 -p 6379

如果输入指令发现没有权限,那么输入auth 密码,即可:

在这里插入图片描述

2.1.5 安装JDK

我看到我的CentOS上有JDK 1.8,所以就没有再安装:

在这里插入图片描述

如果你的系统里没有JDK,那么可以参考https://blog.csdn.net/weixin_41394654/article/details/123442460安装JDK。

PS:在我的印象里,虚拟机里安装的CentOS一般都自带了JDK,但是云服务器里的好像没有。

安装完成后:

在这里插入图片描述

如果<code>jps指令无法使用:

在这里插入图片描述

运行以下指令:

<code>yum install java-1.8.0-openjdk-devel.x86_64

然后jps就能正常使用了:

在这里插入图片描述

2.1.6 安装nginx

<code># 先安装epel

yum install -y epel-release

# 安装nginx

yum install nginx

在这里插入图片描述

注意:如果使用各种方法都无法使用yum安装nginx,则使用编译安装的方式进行安装;

参考:https://www.cnblogs.com/nickchou/p/12978724.html

启动nginx:

<code>nginx

在这里插入图片描述

在CentOS的浏览器中输入本机ip,可以看到centos的欢迎界面,说明nginx安装成功了。

在这里插入图片描述

但是我在虚拟机外面访问centos的ip还是访问不了,试着把防火墙关一下:

<code>systemctl stop firewalld.service

好了,防火墙关掉外面就能访问了。

在这里插入图片描述

禁止firewall开机启动

<code>systemctl disable firewalld.service

2.1.7 端口放行(云服务器)

如果你是云服务器,则需要对以下端口进行放行:

1、MySQL端口

注意,如果是云服务器,测试连接时连接不上,则需要放行3306端口:

在这里插入图片描述

除此之外,需要在云服务器上手动设置防火墙允许3306通过:

<code>firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

systemctl restart mysqld

2、redis端口6379

注意,如果是云服务器,则需要放行6379端口:

在这里插入图片描述

除此之外,需要在云服务器上手动设置防火墙允许6379通过:

<code>firewall-cmd --zone=public --add-port=6379/tcp --permanent

firewall-cmd --reload

systemctl restart redis

3、后端端口8080

注意,如果是云服务器,则需要放行后端8080端口:

在这里插入图片描述

除此之外,需要在云服务器上手动设置防火墙允许8080通过:

<code>firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --reload

2.2 若依后端环境搭建

2.2.1 下载若依源码

在Windows上新建一个文件夹,用于存放若依的工程,然后在命令行中打开该文件夹:

在这里插入图片描述

克隆若依的源码:

<code>git clone https://gitee.com/y_project/RuoYi-Vue.git

在这里插入图片描述

可以发现我们的文件夹里有源码文件了:

在这里插入图片描述

打开IDEA,导入这套源码:

在这里插入图片描述

在这里插入图片描述

2.2.2 创建若依数据库

首先我们需要创建一个若依的数据库,这个数据库是后端需要用到的,在这个数据库里创建后端使用的一些表;

在这里插入图片描述

打开Navicat Premium 16软件,连接->MySQL:

在这里插入图片描述

输入服务器的ip和数据库的密码,当然也可以先测试一下是否能连接:

在这里插入图片描述

添加成功后,右键->打开连接:

在这里插入图片描述

然后继续在centos上右键->新建数据库:

在这里插入图片描述

进行如下配置:

在这里插入图片描述

在新建的ruoyi数据库上右键->打开数据库

在这里插入图片描述

新建查询:

在这里插入图片描述

然后将以下文件的内容全选,复制:

在这里插入图片描述

粘贴到新建的查询中,如下:

在这里插入图片描述

然后再最前面加入<code>USE ruoyi;,然后点击运行,如下:

在这里插入图片描述

执行成功后,在<code>ruoyi->表那里右键刷新,就会发现出现了很多表,如下图:

在这里插入图片描述

同样的,复制quartz.sql文件中的内容:

在这里插入图片描述

执行刚刚同样的步骤:

在这里插入图片描述

然后会发现又多出来一些表:

在这里插入图片描述

到这里所有数据库的表就建好了。

2.2.3 修改数据库配置文件

回到我们的IDEA里面,

1、修改mysql的配置:

在这里插入图片描述

2、修改redis的配置:

在这里插入图片描述

3、修改日志路径

因为我们需要现在本地测试一下,所以将日志路径改为以下:

在这里插入图片描述

2.2.4 启动后端

在这里插入图片描述

在这里插入图片描述

第一次启动可能会比较慢:

在这里插入图片描述

运行遇到错误:

在这里插入图片描述

redis的密码不对?

这里发现有个格式问题,冒号和123之间要有个空格,

在这里插入图片描述

改一下,加上空格:

在这里插入图片描述

再运行:

在这里插入图片描述

看到以上界面,就说明后端运行成功了,证明本地启动没问题,也证明他能连上我们的mysql和redis,到此后端就改好了。

2.3 若依前端环境搭建

打开WebStorm 软件:

在这里插入图片描述

在这里插入图片描述

打开后,打开README.md文件,并打开终端,执行文件里的命令:

在这里插入图片描述

如果以下有这个界面,可以点:

在这里插入图片描述

运行过程可能比较长,耐心等待,完成后:

在这里插入图片描述

继续在终端中输入下一个指令npm run dev,启动前端服务,如下:

在这里插入图片描述

运行成功之后,那么我们的前端也就起来了,此时浏览器会跳出来如下页面:

在这里插入图片描述

能看到验证码说明前后端都通了,因为验证码就是后端生成的。

2.4 修改后端日志路径

因为前面在2.2.3节为了本地测试我们修改了日志的存储路径,后面我们要在服务器部署,所以肯定还是需要使用服务器的路径的,所以还是需要将日志路径改为服务器的路径:

在这里插入图片描述

如上图,将路径改为服务器的路径。

三、项目部署

前面我们已经测试了前端后端均能正常使用了,下一步就是将前端后端分别部署到服务器上了。

3.1 若依后端打包

将后端打包,

在IDEA中,打开Maven:

在这里插入图片描述

商家package进行打包,如下图:

在这里插入图片描述

打包完成后如下图所示:

在这里插入图片描述

然后我们会发现,在target路径下,生成了ruoyi-admin.jar文件,这就是我们打包好的后端的jar文件,如下图:

在这里插入图片描述

3.2 若依前端打包

打开webStorm,在终端里输入<code>npm run build:prod指令用于将我们的前端进行生产的构建:

在这里插入图片描述

构建成功后如下图所示:

在这里插入图片描述

打包好的成果物是dist文件夹,如下:

在这里插入图片描述

3.3 在服务器上部署若依前后端

3.3.1 服务器准备

在服务器上,在opt下面新建project文件夹,然后再project文件夹里,新建ruoyi文件夹:

在这里插入图片描述

我们前端和后端打包好的文件,后面都会放到ruoyi这个文件夹里。

创建用于存放日志的目录:

<code> mkdir -p /opt/project/ruoyi/logs

在这里插入图片描述

3.3.2 配置nginx

修改Nginx的配置文件(在Nginx的安装目录下):

<code> vim /etc/nginx/nginx.conf

#如果你是通过编译的方式安装的nginx,那么应该是:

vim /usr/local/nginx/conf/nginx.conf

将user改为root:

在这里插入图片描述

然后将ruoyi工程的前端加进去:

<code>location / {

root /opt/project/ruoyi/ruoyi-ui/dist;

try_files $uri $uri/ /index.html;

index index.html index.htm;

}

location /prod-api/ {

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://192.168.181.128:8080/;

}

注意改成你自己的ip:

在这里插入图片描述

<code>proxy_set_header 指令用于设置向后端服务器发送的 HTTP 请求头。这里设置了四个请求头:

Host:将客户端发送的 Host 头信息传递给后端服务器,以便后端服务器能够正确识别请求的目标主机

X-Real-IP:将客户端的真实 IP 地址传递给后端服务器

REMOTE-HOST:设置了一个自定义的请求头 REMOTE-HOST,并将客户端的 IP 地址传递给后端服务器

X-Forwarded-For:用于记录请求经过的 HTTP 代理服务器的 IP 地址

保存退出即可。

3.3.3 部署后端

将后端的jar包(3.1节生成的ruoyi-admin.jar)上传到服务器

在这里插入图片描述

上传后如下所示:

在这里插入图片描述

使用以下启动后端:

<code>nohup java -jar /opt/project/ruoyi/ruoyi-admin.jar &

在这里插入图片描述

返回了进程号说明成功了,至于他的执行情况怎么查看呢?

在这里插入图片描述

可以看到,新增了nohup.out文件,用cat看一看:

在这里插入图片描述

可以看到,若依后端部署成功了。

3.3.4 部署前端

前端的是3.2节生成的dist文件夹,可以将dist文件夹压缩成压缩包整体上传到服务器,再加压,这样文件容易传输,且不容易丢失:

在这里插入图片描述

上传到服务器后如下所示:

在这里插入图片描述

将dist.zip解压到ruoyi-ui文件夹:

<code>unzip dist.zip -d ruoyi-ui

解压后如下所示:

在这里插入图片描述

重启nginx:

<code>nginx -s reload

访问服务器ip,打开这个有验证码的界面,证明前后端均部署成功了:

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。