本文将详细介绍在Ubuntu 22.04.5 LTS上部署Java应用的步骤。您将学习到如何安装BellSoft Liberica 21环境,以及libreoffice-core、nginx和docker,同时也会配置mysql 8.3.0和redis 7.4.1。本文适合开发者,确保提供清晰、准确的技术说明。
操作系统:Ubuntu 22.04.5 LTS
内存:至少2GB
硬盘空间:至少10GB可用空间
在开始任何安装之前,确保您的系统是最新的。打开终端并运行以下命令:
sudo apt update && sudo apt upgrade -yBellSoft Liberica是一个开源Java开发环境,支持Java SE标准。接下来,我们将安装BellSoft Liberica 21。
使用以下命令下载Liberica 21的.deb包:
wget https://download.bell-sw.com/java/21.0.10+10/bellsoft-jdk21.0.10+10-linux-amd64.deb使用dpkg命令安装下载的包:
sudo dpkg -i bellsoft-jdk21.0.10+10-linux-amd64.debLibreOffice是一个强大的办公套件,接下来将进行安装。
运行以下命令安装LibreOffice:
sudo apt install -y libreoffice-core libreoffice-common libreoffice-writer libreoffice-calc libreoffice-impress
libreoffice --version先创建专用运行用户,避免直接用 root:
sudo useradd -r -m -d /var/lib/libreoffice -s /usr/sbin/nologin libreoffice
sudo mkdir -p /var/lib/libreoffice/.config
sudo chown -R libreoffice:libreoffice /var/lib/libreoffice
新建服务文件:
sudo nano /etc/systemd/system/libreoffice.service写入内容:
[Unit]
Description=LibreOffice Headless Service
After=network.target
[Service]
Type=simple
User=libreoffice
Group=libreoffice
WorkingDirectory=/var/lib/libreoffice
ExecStart=/usr/bin/soffice --headless --invisible --nodefault --nologo --norestore "-env:UserInstallation=file:///var/lib/libreoffice/profile" "--accept=socket,host=127.0.0.1,port=8100;urp;"
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target然后加载并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now libreofficeNginx是一个高性能的HTTP和反向代理服务器,适合用作我们的Web服务器。
运行以下命令安装Nginx:
sudo apt install nginx -y安装完成后,启动Nginx并设置为开机自启:
sudo systemctl start nginx
sudo systemctl enable nginxDocker是一个开源的容器化平台,便于开发、运输和运行应用程序。
把下面内容保存成 install-docker.sh 后执行:
#!/usr/bin/env bash
set -euo pipefail
MIRROR_URL="${1:-}"
if [[ "$(id -u)" -ne 0 ]]; then
echo "请用 sudo 运行: sudo bash install-docker.sh [镜像加速地址]"
exit 1
fi
if [[ ! -f /etc/os-release ]]; then
echo "无法识别系统版本"
exit 1
fi
. /etc/os-release
if [[ "${ID:-}" != "ubuntu" ]]; then
echo "当前系统不是 Ubuntu,检测到: ${ID:-unknown}"
exit 1
fi
if [[ "${VERSION_ID:-}" != "22.04" ]]; then
echo "当前脚本针对 Ubuntu 22.04,检测到: ${VERSION_ID:-unknown}"
exit 1
fi
echo "[1/6] 卸载可能冲突的旧版本"
apt remove -y docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc || true
echo "[2/6] 安装基础依赖"
apt update
apt install -y ca-certificates curl
echo "[3/6] 添加 Docker 官方仓库"
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: ${UBUNTU_CODENAME:-jammy}
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
echo "[4/6] 安装 Docker Engine"
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo "[5/6] 配置服务和权限"
systemctl enable --now docker
if [[ -n "${SUDO_USER:-}" && "${SUDO_USER}" != "root" ]]; then
usermod -aG docker "${SUDO_USER}" || true
TARGET_USER="${SUDO_USER}"
else
TARGET_USER="${USER:-root}"
fi
echo "[6/6] 配置镜像加速"
mkdir -p /etc/docker
if [[ -n "$MIRROR_URL" ]]; then
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"$MIRROR_URL"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
echo "已写入镜像加速: $MIRROR_URL"
else
echo "未提供镜像加速地址,跳过 /etc/docker/daemon.json 写入"
fi
echo
echo "安装完成"
echo "验证命令:"
echo " sudo docker version"
echo " sudo docker run hello-world"
echo
echo "当前已加入 docker 组的用户: $TARGET_USER"
echo "如果要直接使用 docker 命令,请重新登录,或执行: newgrp docker"安装完成后,启动Docker并设置为开机自启:
sudo systemctl start docker
sudo systemctl enable docker我们现在将使用Docker来部署MySQL 8.3.0。
.env
MYSQL_ROOT_PASSWORD=Q2tPOTu6QZx1r93D
MYSQL_DATABASE=intelligence_course
MYSQL_USER=course
MYSQL_PASSWORD=Q2tPOTu6QZx1r93D
TZ=Asia/Shanghaidocker-compose.yml
services:
mysql:
image: mysql:8.3.0
container_name: mysql83
restart: unless-stopped
ports:
- "3306:3306"
environment:
TZ: ${TZ}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-time-zone=+08:00
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/init:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
运行MySQL容器并设置根用户密码:
sudo docker compose up -d导入intelligence_course.sql:
sudo docker exec -i mysql83 mysql -uroot -pQ2tPOTu6QZx1r93D intelligence_course < /home/ximaigc/intelligence_course.sql接下来,我们将部署Redis 7.4.1。
docker-compose.yml
services:
redis:
image: redis:7.4.1
container_name: redis741
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
healthcheck:
test: ["CMD", "redis-cli", "-a", "123456", "ping"]
interval: 10s
timeout: 5s
retries: 10
运行Redis容器:
bind 0.0.0.0
protected-mode yes
port 6379
requirepass nhhMXQjganJFPaGn运行Redis容器:
sudo docker compose up -d接下来,我们将部署Minio。
.env
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=562RQ68a
docker-compose.yml
services:
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: minio
restart: unless-stopped
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
volumes:
- ./minio/data:/data
command: server /data --console-address ":9001"
运行Redis容器:
sudo docker compose up -d通过本教程,您已经学习了如何在Ubuntu 22.04.5 LTS上安装BellSoft Liberica 21环境、libreoffice-core、nginx,并使用Docker部署MySQL 8.3.0和Redis 7.4.1。这为后续的Java应用开发与部署打下了坚实的基础。