若依测试环境搭建
引言
作者最近在做跟若依相关的毕设,这边记录一下搭建环境的过程,后面应该还会补充测试若依方面的内容
若依官网:ruoyi
git拉取若依
yum install -y git # 安装git命令
git --version # 查看git版本
mkdir /ruoyi # 创建ruoyi目录
cd /ruoyi # 进入ruoyi目录
git clone https://gitee.com/y_project/RuoYi-Vue.git # 克隆ruoyi项目到本地
ls -al # 查看ruoyi是否下载成功
安装npm(前端打包)
cd /usr/local/src/
ll
yum install wget # 安装wget命令
wget https://nodejs.org/dist/v16.16.0/node-v16.16.0-linux-x64.tar.xz # 安装node
tar -xvf node-v16.16.0-linux-x64.tar.xz -C /usr/local/ # 解压到/usr/local路径
cd /usr/local/
mv node-v16.16.0-linux-x64/ node # 重命名为node
yum install vim # 安装vim
vim /etc/profile # 配置环境变量
export PATH=$PATH:/usr/local/node/bin # 加在文件末
source /etc/profile # 使环境变量生效
node -v
npm -v
echo $PATH # 验证是否安装成功
安装jdk
mkdir /usr/java # 创建java目录
cd /usr/local/src/
wget jdk网址 # jdk要去甲骨文的官网下
tar -xzvf jdk_xxx -C /usr/java/ # 解压
vim /etc/profile/ # 配置Java环境
export JAVA_HOME=/usr/java/jdk1.8.0_391
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile # 使环境变量生效
java -version
javac -version # 验证
安装maven(先配置好Java,后端打包)
# 安装过程跟Jdk差不多
cd /usr/local/src/
wget https://archive.apache.org/dist/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
ll
tar -xzvf apache-maven-3.8.5-bin.tar.gz -C /usr/local/
cd /usr/local
mv apache-maven-3.8.5/ maven-3.8.5 # 重命名
vim /etc/profile
export MAVEN_HOME=/usr/local/maven-3.8.5
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
mvn -version
安装docker
systemctl stop firewalld # 关闭防火墙
vim /etc/selinux/config # 关闭selinux
SELINUX=disabled # 修改SELINUX
ESC :wq # 保存并退出
init 6 # 重启Linux
getenforce # 查看是否生效,disabled就可以了
# 开启IPv4 转发,将网卡的路由功能开启,使容器能够和linux宿主机进行网络通信
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 # 在文件尾行添加
systemctl restart network # 重启网卡
sysctl net.ipv4.ip_forward # 检查配置是否生效
yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装系统工具
# 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast # 安装docker社区版
yum -y install docker-ce
# 上面如果不行的话就用阿里镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
systemctl start docker # 启动docker
systemctl enable docker # docker开机启动
vim /etc/docker/daemon.json # 配置docker镜像源
# 配置文件内容如下(整个文件的内容)
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
systemctl daemon-reload # 重启docker
systemctl restart docker
systemctl status docker # 查看docker服务是否启动正常,显示running就行了
安装MySQL
# 这里注意的MySQL的安装版本要大于等于5.7,不然后面导入数据库会报错长度不够
# 阿里云的MySQL安装教程也可以看一下https://developer.aliyun.com/article/1211521
cd /usr/local/src/
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
tar -xzvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv mysql-5.7.43-linux-glibc2.12-x86_64/ mysql-5.7.43
yum install rpm # 安装rpm命令
rpm -qa | grep mariadb # 查看系统是否包含mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 # 有mariadb就卸载
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install -y mysql-community-server
systemctl start mysqld.service
service mysqld status
grep 'password' /var/log/mysqld.log # password后面的密码记住
mysql -u root -p # 输入密码
set password=password('123456'); # 重置密码
use mysql;
grant all privileges on *.* to 'root'@'%'identified by '123456'; # 开启远程连接
flush privileges; # 刷新
# 退出后重启一下,记得关闭关闭防火墙就能用工具连接数据库了
# 创建好了数据库后可以自己用navicat工具导入也可以用source命令导入,这里介绍一下source命令导入
cd /ruoyi/RuoYi/sql
ll # 有两个.sql文件就要要导入的
mysql -uroot -p123456
creat database ryvue; # 创建若依的数据库
use ryvue;
source /ruoyi/RuoYi/sql/quartz.sql # source命令导入,后面接sql文件的路径
source /ruoyi/RuoYi/sql/ry_20230706.sql
show tables; # show一下,看导入成功没有
安装redis
docker pull redis # 直接docker pull下来最新版本的redis
docker run -d -p 6379:6379 --name myredis redis:latest # 启镜像
docker images # 查看启动的镜像
安装nginx
yum -y install gcc-c++ pcre* openssl* kernel-headers kernel-devel gcc make # 安装依赖、工具
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.14.0.tar.gz # 下载
tar -zxvf nginx-1.14.0.tar.gz # 解压
cd nginx-1.14.0/
./configure --prefix=/usr/local/nginx # 编译安装
make && make install # 这两步如果报错了,可能是gcc的问题,自己百度一下
cd /usr/local/nginx/sbin
useradd -M -s /sbin/nologin nginx # 添加用户
./nginx # 启动nginx
ps -ef | grep nginx # 查看是否启动成功
配置若依yml
cd /ruoyi/RuoYi/ruoyi-admin/src/main/resources # 进入若依的配置文件目录
ll # 修改application和application-druid这两个yml文件
vim application.yml # 进去修改端口号和文件路径,避免和你自己的冲突就行了
vim application-druid.yml # 修改数据库的信息url跟账号密码
# 我这个边直接粘贴我的给个参考
# application.yml
# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.8.7
# 版权年份
copyrightYear: 2023
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: /home/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 18080 # 和nginx里的一致
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10
# Spring配置
spring:
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 30
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
# application-druid.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
# ryvue(是若依数据库的名字,MySQL默认端口号3306)
master:
url: jdbc:mysql://localhost:3306/ryvue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456 # 改成自己的
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
前端打包
cd /ruoyi/RuoYi/ruoyi-ui
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
ls -al # 出现dist包就行了
后端打包
cd /ruoyi/RuoYi
mvn clean install -pl com.ruoyi:ruoyi-admin -am
cd /ruoyi/RuoYi/ruoyi-admin/target
ll # 有adimin的jar包就行了
新建目录
cd /ruoyi
mkdir app
cp /ruoyi/RuoYi/ruoyi-admin/target/ruoyi-admin.jar ./app/
cd app
ll
mkdir ruoyi-ui
cp -r /ruoyi/RuoYi/ruoyi-ui/dist/* ./ruoyi-ui/
yum install -y tree
tree /ruoyi/app/ -L 3
tree -L 3 /ruoyi/RuoYi/ruoyi-admin/
nginx配置
cd /usr/local/nginx/conf/
vim nginx.conf
# 这边配置文件遇到的问题是最多最头疼的了。。
# 下面是nginx的配置信息,我直接把我的复制过来,可以参考一下
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8099; # 这边的端口号就是你后面访问前端用的
server_name 192.168.xxx.xxx; # localhost可能会报错,还是改成自己具体的
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /ruoyi/app/ruoyi-ui; # 前端的路径
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_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:18080/;# 这个要和yml文件里的一致,服务器的端口,后面Java启动也是这个端口号
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
若依,启动!
cd /usr/local/nginx/sbin/
./nginx
cd /ruoyi/app && nohup java -jar ruoyi-admin.jar &
一些问题
兜兜转转搞了一个星期,终于把环境部署的问题搞的差不多了,都是血泪,这边总结一下发现的问题还有解决思路吧!
-
配置服务器的http端口18080,和nginx.conf一致,这边可能还会有其他问题,不过我没有遇到,最主要的就是搞清楚那两个yml文件和nginx的配置文件,这个还是去网上搜一下,搞懂了比较好。尤其是里面的端口、路径问题
application.yml # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: /home/ruoyi/uploadPath server: # 服务器的HTTP端口,默认为80 port: 18080 nginx.conf proxy_pass http://localhost:18080/;
-
数据库的版本问题
主要是字段长度问题,MySQL5.6及以前的版本字段长度最大值是765,导入若依的时候长度不够,换5.7及以上的就行了
-
启动时候报错502
导致这个错误的可能太多了
- 可能docker里面的redis没启起来,或者启动了也不能,我是直接卸载重装的一个redis
- nginx里面的配置文件和yml文件里面的服务器端口号不一致
- Java没启起来(低级错误。。)
- npm的包问题,这个比较少见。
- nginx问题,主要还是那个配置文件
-
其他安装过程中的问题
安装的过程没什么好说的,自己百度就能解决
-
默认登录的时候自动填充账号密码,还有验证码
这个问题去login.vue里面修改一下,里面都有注释的,修改完了记得重新打包。
像这种类似的问题可以去gitee上面找到答案。
-
还有些问题,像防火墙啊这类的,端口冲突啊,做了什么修改之后最好都重启一下