推荐直接Ubuntu 22.04下面全部基于root 用户 Ubuntu22.04展开。一、先更新系统aptupdateaptupgrade-y安装基础工具aptinstall-ywgetcurlvimunzipnet-tools二、安装 JDK21推荐 Temurin不要用 Ubuntu 自带 openjdk-21版本和更新节奏不稳定。1. 安装 Adoptium 源wget-O- https://packages.adoptium.net/artifactory/api/gpg/key/public|gpg--dearmor|tee/usr/share/keyrings/adoptium.gpg/dev/nullechodeb [signed-by/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb jammy main|tee/etc/apt/sources.list.d/adoptium.list更新aptupdate2. 安装 JDK21aptinstall-ytemurin-21-jdk3. 验证java-version看到21即可。4. JAVA_HOMEvim/etc/profile最后追加exportJAVA_HOME/usr/lib/jvm/temurin-21-jdk-amd64exportPATH$JAVA_HOME/bin:$PATH生效source/etc/profile三、安装 Redis1. 安装aptinstall-yredis-server2. 修改配置vim/etc/redis/redis.conf修改bind 127.0.0.1 protected-mode yes port 6379 daemonize yes maxmemory 128mb maxmemory-policy allkeys-lru3. 启动systemctl restart redis-server systemctlenableredis-server4. 验证redis-cliping返回PONG即可。四、安装 MySQL8Ubuntu 默认可能装 MariaDB不要用。1. 下载 MySQL 官方源wgethttps://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb2. 安装源dpkg-imysql-apt-config_0.8.29-1_all.deb弹出界面选择 Ubuntu Jammy MySQL 8.0 OK3. 更新aptupdate4. 安装 MySQL8aptinstall-ymysql-server5. 启动systemctlenablemysql systemctl restart mysql6. 查看状态systemctl status mysql五、配置 MySQL登录mysql-uroot1. 修改 root 密码ALTERUSERrootlocalhostIDENTIFIEDWITHmysql_native_passwordBY你的密码;FLUSHPRIVILEGES;退出exit;重新登录mysql-uroot-p六、创建数据库CREATEDATABASEflowerDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;创建用户CREATEUSERflower%IDENTIFIEDBY你的密码;授权GRANTALLPRIVILEGESONflower.*TOflower%;FLUSHPRIVILEGES;七、开放远程如果需要编辑vim/etc/mysql/mysql.conf.d/mysqld.cnf找到bind-address 127.0.0.1改bind-address 0.0.0.0加[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci sql_modeSTRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION最终推荐 mysqld.cnf[mysqld] bind-address0.0.0.0 character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci sql_modeSTRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections200 innodb_buffer_pool_size256M default-time-zone8:00重启systemctl restart mysql八、防火墙如果装了 ufwufw allow22ufw allow80ufw allow443ufw allow3306ufwenable如果 MySQL 不需要外网不要开放3306九、SpringBoot 推荐 JVM你这个机器2核4G推荐java-Xms512m-Xmx1024m-jarflower-admin.jar不要给太大。十、推荐部署结构/opt/flower/ ├── flower-admin.jar ├── flower-license.jar ├── logs/ ├── upload/systemd 托管。例如vim/etc/systemd/system/flower-admin.service[Unit] Descriptionflower-admin Afternetwork.target [Service] WorkingDirectory/opt/flower ExecStart/usr/lib/jvm/temurin-21-jdk-amd64/bin/java -Xms512m -Xmx1024m -jar /opt/flower/flower-admin.jar Restartalways [Install] WantedBymulti-user.target启动systemctl daemon-reload systemctlenableflower-admin systemctl start flower-admin查看日志journalctl-uflower-admin-f一、先确认现在 nginx 怎么安装的执行whichnginx如果返回/usr/local/nginx/sbin/nginx基本就是源码安装。再看ps-ef|grepnginx看看路径。二、停止当前 nginx如果是源码安装/usr/local/nginx/sbin/nginx-sstop或者pkillnginx三、删除源码安装 nginx通常源码安装目录/usr/local/nginx直接删rm-rf/usr/local/nginx再删源码包rm-rf~/nginx-1.13.7*四、检查是否还有 nginxwhichnginx如果没返回说明删干净了五、开始安装 apt nginx推荐1. 更新源aptupdate2. 安装 nginxaptinstall-ynginx六、启动 nginxsystemctlenablenginx systemctl start nginx查看状态systemctl status nginx七、开放防火墙ufw allow80ufw allow443八、访问测试浏览器http://你的公网IP看到Welcome to nginx!即可。九、你现在正确的 nginx 用法非常关键不要再把前端静态文件塞 SpringBoot正确nginx负责443 HTTPS 静态前端 反向代理flower-admin负责REST API WebSocket 登录 license十、推荐结构/var/www/flower-ui放Flower-ui-grok dist例如mkdir-p/var/www/flower-ui上传 distscp-rdist/* root服务器:/var/www/flower-ui/十一、推荐 nginx 配置vim/etc/nginx/sites-available/flowerserver { 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; } }启用ln-s/etc/nginx/sites-available/flower /etc/nginx/sites-enabled/测试nginx-t重启systemctl restart nginx十二、最关键建议你现在一定要买域名因为license 激活 HTTPS JWT都不适合裸 IP。后面Lets Encrypt也需要域名。