单机或内网服务器快速部署软件系统完整教程

单机服务器或内网服务器部署软件系统完整教程

本篇博客用于单机服务器或是内网服务器等无法连接互联网的服务器部署软件系统及其所需的全部环境,从一个空白服务器开始,由于本人工作中被要求在空白内网银河麒麟操作系统服务器部署系统,故有此博客,这里以一个简易单体架构的spring boot+vue3的软件系统为例子,所需镜像、jdk等压缩包与配置文件均上传主页资源

1.创建工作目录

一般为/home/vacation用于存放项目资源,/home/data用于存放环境资源

bash 复制代码
mkdir /home/vacation
mkdir /home/data

这里vacation是项目名称,可以自拟

2.配置环境

以一个简易单体架构的spring boot+vue3的系统所需环境有docker,jdk,mysql,redis,minio,nginx

(1 JDK

首先查看jdk版本,若已有jdk则跳过该步骤:

bash 复制代码
java -version

输出版本信息则已有jdk,若输出"java不是系统命令"则没有

在data目录下创建jdk文件夹,将jdk包上传到文件夹中,解压配置jdk环境变量

bash 复制代码
# 创建jdk目录
mkdir /home/data/jdk
# 进入压缩包所在目录
cd /home/data/jdk、
# 解压压缩包
tar -xzf jdk-8uXXX-linux-x64.tar.gz  # 这里以实际名称

移动 JDK 到合适目录,通常放在 /usr/lib/jvm/

bash 复制代码
mv jdk1.8.0_XXX /usr/lib/jvm/

手动配置JDK环境变量,编辑 /etc/profile 或用户目录下的 .bashrc:

bash 复制代码
# 编辑全局配置文件
vim /etc/profile

进入之后按 i 进入插入模式

bash 复制代码
# 在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_XXX
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

插入完成之后按 ESC 退出插入模式,再输入 :wq 保存并退出,如果误删某些内容,可以输入 :q! 不保存退出

然后让配置生效

bash 复制代码
source /etc/profile
# 检查 Java 版本
java -version

(2 Docker

先在data目录下创建一个docker目录

bash 复制代码
mkdir /home/data/docker

将docker的二进制压缩文件上传到目录中,并解压

bash 复制代码
# 进入目录
cd /home/data/docker
# 解压
tar -xvf docker-24.0.7.tgz

接下来将当前目录下 docker/ 文件夹中的所有文件复制到 /usr/bin/ 目录

bash 复制代码
cp docker/* /usr/bin/

创建 systemd 服务文件来管理 Docker 守护进程,这里直接写入了文件内容

bash 复制代码
sudo tee /etc/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Service
After=network.target
[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
Type=notify
[Install]
WantedBy=multi-user.target
EOF

最后启动docker服务

bash 复制代码
# 重新加载 systemd 守护进程配置
systemctl daemon-reload

# 启动 Docker 服务
systemctl start docker

# 设置 Docker 服务开机自启
systemctl enable docker

(3 MySQL

在data目录下创建mysql目录

bash 复制代码
mkdir /home/data/mysql

将mysql的镜像tar包上传到目录中,再解压并加载镜像,查看镜像

bash 复制代码
# 进入目录
cd /home/data/mysql
# 加载镜像
docker load -i mysql.tar
# 查看镜像
docker images

启动mysql容器,这里设置账户root,密码123456,这里命令结尾的mysql:8.0.26需要替换为你实际的images名称和tag

bash 复制代码
docker run -d \
  --name mysql \
  --privileged \
  -p 3307:3306 \
  -v /home/data/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_ROOT_HOST=% \
  --restart=always \
  mysql:8.0.26

(4 Redis

创建redis目录

bash 复制代码
mkdir /home/data/redis

同样加载镜像

bash 复制代码
# 进入目录
cd /home/data/redis
# 加载镜像
docker load -i redis.tar

启动redis容器,同样这里的redis:1.0需要替换为实际的

bash 复制代码
docker run -d \
  --name redis \
  --privileged \
  -p 6379:6379 \
  --restart=always \
  redis:1.0

(5 MinIO

创建minio目录

bash 复制代码
mkdir /home/data/minio

加载镜像

bash 复制代码
# 进入目录
cd /home/data/minio
# 加载镜像
docker load -i minio.tar

根据实际镜像名称启动容器,账号为admin,密码为12345678

bash 复制代码
docker run -d \
  --name minio \
  --privileged \
  -p 9000:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=12345678 \
  minio:1.0 \
  server /data --console-address ":9001"

3.程序启动

需要提前将前后端的程序代码进行打包,后端打jar包,前端dist包

(1 后端启动

创建后端目录

bash 复制代码
mkdir /home/vacation/java

将jar包与两个配置文件上传到java目录中,要更改配置文件中的相关配置

进入目录中运行jar包

bash 复制代码
cd /home/vacation/java

nohup java -jar 项目名.jar > start.log 2>&1 & 

可以查看进程是否启动

bash 复制代码
lsof -i :8080

(2 前端启动

前端借助nginx服务器部署,这里启动容器后将相关配置挂载到本地

这里要创建三个工作目录:

bash 复制代码
mkdir /home/vacation/nginx

mkdir -p /home/vacation/nginx/nginx
mkdir -p /home/vacation/nginx/html
mkdir -p /home/vacation/nginx/log

运行一个临时nginx容器,将容器内的相关默认文件复制到本地

bash 复制代码
cd /home/vacation/nginx

docker run --name nginx -p 80:80 -d nginx:1.16.1

docker cp nginx:/usr/share/nginx/html/ ./
docker cp nginx:/etc/nginx/ ./
docker cp nginx:/var/log ./

将原容器删除

bash 复制代码
docker stop nginx
docker rm -f nginx

设置权限,将目录所有者改为 root,递归设置所有目录和文件权限为 777

bash 复制代码
chown -R root:root /home/vacation/nginx
chmod 777 -R nginx/

挂载本地数据卷启动容器

bash 复制代码
# 启动正式的 Nginx 容器,将宿主机目录挂载到容器内
docker run --name nginx \
  -p 80:80 \                                   
  -v /home/vacation/nginx/html/:/usr/share/nginx/html/ \  
  -v /home/vacation/nginx/nginx:/etc/nginx/ \             
  -v /home/vacation/nginx/log/:/var/log/ \              
  -d nginx:1.16.1

打包好的前端dist包下的文件复制到/home/vacation/nginx/html

/home/vacation/nginx/nginx/conf下的default.conf 中的后端端口号修改为对应的端口号

修改后重启nginx容器

bash 复制代码
docker restart nginx

所需镜像、jdk等压缩包与配置文件均上传主页资源

相关推荐
dllmayday1 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无2 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
码云数智-大飞3 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
Harvy_没救了4 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
春风有信4 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
lzhdim4 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql
2401_873479405 小时前
断网时如何实时判断IP归属?嵌入本地离线库,保障风控不中断
运维·服务器·网络
守城小轩5 小时前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
handler015 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法