大魔包的技术分享

武汉人工智能-学校本地部署

2026/03/14
3
0

Java应用部署教程

概述

本文将详细介绍在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 -y

安装BellSoft Liberica 21

BellSoft Liberica是一个开源Java开发环境,支持Java SE标准。接下来,我们将安装BellSoft Liberica 21。

步骤1:下载Liberica 21

使用以下命令下载Liberica 21的.deb包:

wget https://download.bell-sw.com/java/21.0.10+10/bellsoft-jdk21.0.10+10-linux-amd64.deb

步骤2:安装Liberica 21

使用dpkg命令安装下载的包:

sudo dpkg -i bellsoft-jdk21.0.10+10-linux-amd64.deb

安装LibreOffice-Core

LibreOffice是一个强大的办公套件,接下来将进行安装。

步骤1:安装LibreOffice完整版

运行以下命令安装LibreOffice:

sudo apt install -y libreoffice-core libreoffice-common libreoffice-writer libreoffice-calc libreoffice-impress

libreoffice --version

步骤2:开机自启

先创建专用运行用户,避免直接用 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 libreoffice

安装Nginx

Nginx是一个高性能的HTTP和反向代理服务器,适合用作我们的Web服务器。

步骤1:安装Nginx

运行以下命令安装Nginx:

sudo apt install nginx -y

步骤2:启动和启用Nginx

安装完成后,启动Nginx并设置为开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

安装Docker

Docker是一个开源的容器化平台,便于开发、运输和运行应用程序。

步骤1:创建安装脚本

把下面内容保存成 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"

步骤2:启动和启用Docker

安装完成后,启动Docker并设置为开机自启:

sudo systemctl start docker
sudo systemctl enable docker

部署MySQL 8.3.0

我们现在将使用Docker来部署MySQL 8.3.0。

步骤1:新建.env 和 docker-compose.yml

.env

MYSQL_ROOT_PASSWORD=Q2tPOTu6QZx1r93D
MYSQL_DATABASE=intelligence_course
MYSQL_USER=course
MYSQL_PASSWORD=Q2tPOTu6QZx1r93D
TZ=Asia/Shanghai

docker-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

步骤2:运行MySQL容器

运行MySQL容器并设置根用户密码:

sudo docker compose up -d

步骤3:导入SQL

导入intelligence_course.sql:

sudo docker exec -i mysql83 mysql -uroot -pQ2tPOTu6QZx1r93D intelligence_course < /home/ximaigc/intelligence_course.sql

部署Redis 7.4.1

接下来,我们将部署Redis 7.4.1。

步骤1:新建docker-compose.yml文件

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

步骤2:新建配置文件redis.conf

运行Redis容器:

bind 0.0.0.0
protected-mode yes
port 6379

requirepass nhhMXQjganJFPaGn

步骤3:运行Redis容器

运行Redis容器:

sudo docker compose up -d

部署Minio

接下来,我们将部署Minio。

步骤1:新建docker-compose.yml文件

.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"

步骤2:运行Minio容器

运行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应用开发与部署打下了坚实的基础。