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

也需要域名。

相关推荐
小此方1 小时前
Re:Linux系统篇(十一)工具篇 · 三:三分钟学会gcc/g++编译工具&&初步认识动静态库&&重温编译基本原理
linux·运维·服务器·开发工具
SPC的存折1 小时前
12、Ingress-Nginx 全局超时配置及生效方式
运维·nginx·云原生·kubernetes
DandelionR1 小时前
DolphinScheduler 3.4.1 Docker 部署安装 Skill
运维·docker·容器
无限进步_2 小时前
【Linux】gcc/g++ 编译:从源码到可执行文件的四个阶段
linux·运维·服务器
DianSan_ERP10 小时前
如何通过抖店订单接口实现订单状态管理与履约自动化?
运维·自动化
b***251110 小时前
18650电池点焊机:电阻焊技术如何决定电池组的成败|深圳比斯特自动化
运维·自动化
原来是猿10 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
前端老曹11 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
AOwhisky11 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术