京东云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

也需要域名。

相关推荐
Avan_菜菜17 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
ping某5 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工7 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智7 天前
ARP代理--工作原理
运维·网络·arp·arp代理