京东云Ubuntu22..04安装jdk21、MySQL8、nginx

推荐直接:

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

也需要域名。

相关推荐
biter down11 小时前
6:参数化
运维·服务器
海域云-罗鹏11 小时前
企业服务器遭到网络攻击该如何解决?应急处理与长效防护方案
运维·服务器·安全
YOU OU12 小时前
Linux基本使用和程序部署
linux·运维·服务器
AI行业学习12 小时前
PuTTY 工具下载部署、基础配置及 SSH 远程服务器连接完整操作指南Windows 平台 【2026.6.1】
运维·windows·ssh
jiayong2312 小时前
CI/CD深度解析01-核心概念与原理
运维·git·ci/cd
fred_kang12 小时前
如何找到 Linux 服务器上某个 URL 路径对应的实际部署位置
linux·运维·服务器
梅孔立13 小时前
解决Nginx缓存不写入响应体问题:浏览器强制不缓存配置教程
java·开发语言·nginx·spring
qq_3564086613 小时前
Kubernetes Loki 日志收集系统部署文档 (读写分离模式 + Ceph S3 + Nginx 日志分离)
ceph·nginx·kubernetes
打码人的日常分享14 小时前
NLP和AI大模型应用方案
运维·人工智能·安全·系统安全·制造
「QT(C++)开发工程师」14 小时前
免费在线 Ubuntu/Linux 运行环境
linux·运维·ubuntu