Linux搭建若依VUE分离版

若依测试环境搭建

引言

作者最近在做跟若依相关的毕设,这边记录一下搭建环境的过程,后面应该还会补充测试若依方面的内容

若依官网: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 &

一些问题

兜兜转转搞了一个星期,终于把环境部署的问题搞的差不多了,都是血泪,这边总结一下发现的问题还有解决思路吧!

  1. 配置服务器的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/;
    
  2. 数据库的版本问题

    主要是字段长度问题,MySQL5.6及以前的版本字段长度最大值是765,导入若依的时候长度不够,换5.7及以上的就行了

  3. 启动时候报错502

    导致这个错误的可能太多了

    • 可能docker里面的redis没启起来,或者启动了也不能,我是直接卸载重装的一个redis
    • nginx里面的配置文件和yml文件里面的服务器端口号不一致
    • Java没启起来(低级错误。。)
    • npm的包问题,这个比较少见。
    • nginx问题,主要还是那个配置文件
  4. 其他安装过程中的问题

    安装的过程没什么好说的,自己百度就能解决

  5. 默认登录的时候自动填充账号密码,还有验证码

    这个问题去login.vue里面修改一下,里面都有注释的,修改完了记得重新打包。

    像这种类似的问题可以去gitee上面找到答案。

  6. 还有些问题,像防火墙啊这类的,端口冲突啊,做了什么修改之后最好都重启一下

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值