推荐直接:
text
Ubuntu 22.04
下面全部基于:
bash
root 用户
Ubuntu 22.04
展开。
一、先更新系统
bash
apt update && apt upgrade -y
安装基础工具:
bash
apt install -y wget curl vim unzip net-tools
二、安装 JDK21(推荐 Temurin)
不要用 Ubuntu 自带 openjdk-21,版本和更新节奏不稳定。
1. 安装 Adoptium 源
bash
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /usr/share/keyrings/adoptium.gpg > /dev/null
bash
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb jammy main" | tee /etc/apt/sources.list.d/adoptium.list
更新:
bash
apt update
2. 安装 JDK21
bash
apt install -y temurin-21-jdk
3. 验证
bash
java -version
看到:
text
21
即可。
4. JAVA_HOME
bash
vim /etc/profile
最后追加:
bash
export JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
生效:
bash
source /etc/profile
三、安装 Redis
1. 安装
bash
apt install -y redis-server
2. 修改配置
bash
vim /etc/redis/redis.conf
修改:
conf
bind 127.0.0.1
protected-mode yes
port 6379
daemonize yes
maxmemory 128mb
maxmemory-policy allkeys-lru
3. 启动
bash
systemctl restart redis-server
systemctl enable redis-server
4. 验证
bash
redis-cli ping
返回:
text
PONG
即可。
四、安装 MySQL8
Ubuntu 默认可能装 MariaDB,不要用。
1. 下载 MySQL 官方源
bash
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
2. 安装源
bash
dpkg -i mysql-apt-config_0.8.29-1_all.deb
弹出界面:
text
选择:
Ubuntu Jammy
MySQL 8.0
OK
3. 更新
bash
apt update
4. 安装 MySQL8
bash
apt install -y mysql-server
5. 启动
bash
systemctl enable mysql
systemctl restart mysql
6. 查看状态
bash
systemctl status mysql
五、配置 MySQL
登录:
bash
mysql -uroot
1. 修改 root 密码
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
退出:
sql
exit;
重新登录:
bash
mysql -uroot -p
六、创建数据库
sql
CREATE DATABASE flower DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建用户:
sql
CREATE USER 'flower'@'%' IDENTIFIED BY '你的密码';
授权:
sql
GRANT ALL PRIVILEGES ON flower.* TO 'flower'@'%';
FLUSH PRIVILEGES;
七、开放远程(如果需要)
编辑:
bash
vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到:
conf
bind-address = 127.0.0.1
改:
conf
bind-address = 0.0.0.0
加:
conf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
最终推荐 mysqld.cnf:
conf
[mysqld]
bind-address=0.0.0.0
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=200
innodb_buffer_pool_size=256M
default-time-zone='+8:00'
重启:
bash
systemctl restart mysql
八、防火墙
如果装了 ufw:
bash
ufw allow 22
ufw allow 80
ufw allow 443
ufw allow 3306
ufw enable
如果 MySQL 不需要外网:
bash
不要开放3306
九、SpringBoot 推荐 JVM
你这个机器:
text
2核4G
推荐:
bash
java -Xms512m -Xmx1024m -jar flower-admin.jar
不要给太大。
十、推荐部署结构
text
/opt/flower/
├── flower-admin.jar
├── flower-license.jar
├── logs/
├── upload/
systemd 托管。
例如:
bash
vim /etc/systemd/system/flower-admin.service
ini
[Unit]
Description=flower-admin
After=network.target
[Service]
WorkingDirectory=/opt/flower
ExecStart=/usr/lib/jvm/temurin-21-jdk-amd64/bin/java -Xms512m -Xmx1024m -jar /opt/flower/flower-admin.jar
Restart=always
[Install]
WantedBy=multi-user.target
启动:
bash
systemctl daemon-reload
systemctl enable flower-admin
systemctl start flower-admin
查看日志:
bash
journalctl -u flower-admin -f
一、先确认现在 nginx 怎么安装的
执行:
bash
which nginx
如果返回:
text
/usr/local/nginx/sbin/nginx
基本就是源码安装。
再看:
bash
ps -ef | grep nginx
看看路径。
二、停止当前 nginx
如果是源码安装:
bash
/usr/local/nginx/sbin/nginx -s stop
或者:
bash
pkill nginx
三、删除源码安装 nginx
通常源码安装目录:
text
/usr/local/nginx
直接删:
bash
rm -rf /usr/local/nginx
再删源码包:
bash
rm -rf ~/nginx-1.13.7*
四、检查是否还有 nginx
bash
which nginx
如果没返回:
text
说明删干净了
五、开始安装 apt nginx(推荐)
1. 更新源
bash
apt update
2. 安装 nginx
bash
apt install -y nginx
六、启动 nginx
bash
systemctl enable nginx
systemctl start nginx
查看状态:
bash
systemctl status nginx
七、开放防火墙
bash
ufw allow 80
ufw allow 443
八、访问测试
浏览器:
text
http://你的公网IP
看到:
text
Welcome to nginx!
即可。
九、你现在正确的 nginx 用法(非常关键)
不要再:
text
把前端静态文件塞 SpringBoot
正确:
nginx
负责:
text
443 HTTPS
静态前端
反向代理
flower-admin
负责:
text
REST API
WebSocket
登录
license
十、推荐结构
text
/var/www/flower-ui
放:
text
Flower-ui-grok dist
例如:
bash
mkdir -p /var/www/flower-ui
上传 dist:
bash
scp -r dist/* root@服务器:/var/www/flower-ui/
十一、推荐 nginx 配置
bash
vim /etc/nginx/sites-available/flower
nginx
server {
listen 80;
server_name 你的域名;
location / {
root /var/www/flower-ui;
index index.html;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /websocket/ {
proxy_pass http://127.0.0.1:8080/websocket/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
启用:
bash
ln -s /etc/nginx/sites-available/flower /etc/nginx/sites-enabled/
测试:
bash
nginx -t
重启:
bash
systemctl restart nginx
十二、最关键建议
你现在:
text
一定要买域名
因为:
text
license
激活
HTTPS
JWT
都不适合裸 IP。
后面:
text
Let's Encrypt
也需要域名。