1. 购买阿里云
最近阿里云推出99元套餐,相当划算,薅羊毛搞起 ->新老同享阿里云99一年
系统选择centos
2. 安装JDK
JDK >= 1.8 虽说推荐1.8版本,但毕竟有点老,我选的JDK17,安装过程如下:
# 下载安装包
wget https://download.oracle.com/java/17/archive/jdk-17.0.1_linux-x64_bin.tar.gz
# 解压
输入tar zxvf jdk-17.0.1_linux-x64_bin.tar.gz
# 移动到/usr/local/目录下
mv jdk-17.0.1 /usr/local/
# 配置jdk环境
vim /etc/profile
# 添加如下配置
export JAVA_HOME=/usr/local/jdk-17.0.1
export CLASSPATH=.:$JAVA_HOME/lib/
export PATH=.:$JAVA_HOME/bin:$PATH
# 配置生效
source /etc/profile
# 验证安装
java -version
3. 安装Mysql
Mysql >= 5.7.0 (推荐5.7版本)
# 确保服务器系统处于最新状态
yum -y update
# 检查是否已经安装,如果已经安装先删除以前版本,未安装的跳过此步
rpm -qa | grep mysql
rpm -e mysql57-community-release
# 下载MySql安装包
rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# 安装MySql
yum install mysql-community-server
遇到报错:
The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.
Public key for mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm is not installed
安装换成如下命令:
yum install mysql-community-server --nogpgcheck
# 启动服务
systemctl start mysqld
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 登录MySQL
mysql -u root -p
# 修改密码,默认密码长度大于8,且必须含有数字,小写或大写字母,特殊字符
alter user 'root'@'localhost' identified by '你的密码';
# 也可修改密码设置规则
set global validate_password_policy=0;
set global validate_password_length=1;
# 修改MySQL默认编码
exit #退出mysql
vim /etc/my.cnf #进入my.cnf文件
添加如下代码:
character_set_server=utf8
init_connect='SET NAMES utf8'
systemctl restart mysqld #启动mysql
mysql -u root -p #登录mysql
show variables like '%character%'; #查看编码
-- 修改密码
UPDATE mysql.user SET authentication_string=PASSWORD('你的密码') WHERE User='root';
use mysql;
-- 查看用户表权限:
select host,user from user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
-- 命令立即执行生效(千万不要忘记刷新!!!)
flush privileges;
配置阿里云服务器,安全组->管理规则->手动添加,放开3306端口
4. 安装Redis
Redis >= 3.0,这里以3.2.10为例
# 没有先创建
cd /usr/local/redis
# 下载压缩包
wget http://download.redis.io/releases/redis-3.2.10.tar.gz
# 解压
tar -zxvf redis-3.2.10.tar.gz
# 进入解压目录
cd redis-3.2.10
# 安装(在redis-3.2.10下)
make
# 编辑配置文件
vim ./redis.conf
将 daemonize no 改成 daemonize yes(在128行左右)
# 启动服务:
./redis-server ../redis.conf
5. 安装nodejs
Node >= 12,nodejs官网下载,我选的v16
上传nodejs到服务器
# /usr/local 下解压
tar -xvf node-v16.13.1-linux-x64.tar.xz
# 修改名称为nodejs16
# 修改环境变量
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/nodejs16/bin
export PATH
# 保存退出后执行
source ~/.bash_profile
# 建立软连接
ln -s /usr/local/nodejs16/bin/node /usr/local/bin/node
ln -s /usr/local/nodejs16/bin/npm /usr/local/bin/npm
# 更改npm包下载地址
npm config set registry https://registry.npm.taobao.org
# 查看修改结果
npm config get registry
6. 部署后端服务
6.1 创建database
CREATEDATABASE `ry-vue`CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;
6.2 导入sql
上传sql文件ry_20231130.sql,mysql中执行导入
source /home/work/ruoyi/ry_20231130.sql
6.3 代码打包
先修改配置文件中的数据库用户名、密码、上传路径、日志文件配置,再打包
mvn clean package
找到admin下的target,打出来的jar包即可上传到服务器
上传ry.sh,执行 sh ry.sh start 启动服务
7. 运行前端
上传 ruoyi-ui 到服务器
cd ruoyi-ui
# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com
# 启动项目
nohup npm run dev &
8.页面展示
利用服务器的公网IP和端口,访问页面
登录后:
编辑
服务刚启动时,遇到一个问题:
ERROR c.r.f.w.e.GlobalExceptionHandler - [handleException,104] - 请求地址'/captchaImage',发生系统异常.
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException: null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85)
... 117 common frames omitted
Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration
at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1269)
at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224)
at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106)
at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/sun.font.SunFontManager.(SunFontManager.java:315)
at java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35)
at java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56)
... 123 common frames omitted
是因为使用的OenJDK不支持awt包下的字体,安装FontConfig组件即可
yum install -y fontconfig
安装后重启服务,完成!