公司内网linux服务器环境搭建 - JDK + Nginx + MySQL
2026/7/2 6:18:40 网站建设 项目流程

服务器环境部署手册

项目名称:Java后端 + 前端服务环境部署

部署方式:离线部署

一、文档概述

1.1 文档目的

本文档用于记录在 UOS Server 20 操作系统上部署 Java 运行环境及 Web 服务环境的完整流程,包括 JDK 21、MySQL 5.7、Nginx 的安装、配置和验证方法。

1.2 适用范围

项目说明
操作系统UOS Server 20(内核 4.19.90)
架构x86_64
部署用户普通用户,无root权限

1.3 软件版本清单

软件版本下载地址
JDK21.0.11 LTSJava Downloads | Oracle
MySQL5.7.44https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
Nginx1.18.0http://nginx.org/download/nginx-1.18.0.tar.gz
libpcre3https://packages.debian.org/bullseye/amd64/libpcre3/download

二、部署前准备

将以下安装包上传至服务器/data/linjr/目录下:

文件名说明
jdk-21_linux-x64_bin.tar.gzJDK 21 安装包
mysql-5.7.44-linux-glibc2.12-x86_64.tar.gzMySQL 5.7.44 安装包
nginx_1.18.0-xxx_amd64.debNginx 1.18.0 离线deb包
libpcre3_8.39-13+deb11u6_amd64.deb解决nginx运行依赖缺失

三、JDK 21 部署

3.1 解压

cd /data/linjr tar -zxvf jdk-21_linux-x64_bin.tar.gz

3.2 配置环境变量

echo "export JAVA_HOME=/data/linjr/jdk-21.0.11" >> ~/.bashrc echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc source ~/.bashrc

3.3 验证安装

java -version

预期输出

java version "21.0.11" 2026-04-21 LTS Java(TM) SE Runtime Environment (build 21.0.11+9-LTS-211) Java HotSpot(TM) 64-Bit Server VM (build 21.0.11+9-LTS-211, mixed mode, sharing)

3.4 多用户不同JDK版本配置

当多个用户共用一台服务器,且各自需要不同版本的JDK时(例如:用户A需要JDK 21,用户B需要JDK 17,用户C需要JDK 8),可采用本方案。

3.4.1 核心原理

每个用户在自己的个人目录下独立解压JDK,并在自己的~/.bashrc文件中配置JAVA_HOMEPATH。用户登录后加载自己的配置文件,使用的JDK版本完全由自己控制,互不影响、完全隔离

3.4.2 当前用户(linjr)配置 JDK 21

已按3.1-3.3完成配置,JAVA_HOME指向/data/linjr/jdk-21.0.11

3.4.3 其他用户(如 zhangsan)配置 JDK 17

步骤1:切换登录 zhangsan 用户

步骤2:上传并解压 JDK 17

jdk-17_linux-x64_bin.tar.gz上传到/home/zhangsan/目录下:

cd /home/zhangsan tar -zxvf jdk-17_linux-x64_bin.tar.gz

解压后得到/home/zhangsan/jdk-17.0.10目录。

步骤3:配置环境变量

vi ~/.bashrc

在文件末尾添加:

export JAVA_HOME=/home/zhangsan/jdk-17.0.10 export PATH=$JAVA_HOME/bin:$PATH

步骤4:生效并验证

source ~/.bashrc java -version

预期输出:java version "17.0.10"

3.4.4 同一账号临时切换其他JDK版本

如果当前用户需要临时切换JDK版本(仅当前终端窗口生效):

# 临时切换为 JDK 8 export JAVA_HOME=/data/linjr/jdk1.8.0_401 export PATH=$JAVA_HOME/bin:$PATH java -version ​ # 临时切换为 JDK 17 export JAVA_HOME=/data/linjr/jdk-17.0.10 export PATH=$JAVA_HOME/bin:$PATH java -version

重新打开新终端后,自动恢复为~/.bashrc中配置的默认JDK版本。

四、MySQL 5.7.44 部署

4.1 解压

cd /data/linjr tar -xzvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql8

4.2 创建数据目录

cd /data/linjr/mysql8 mkdir -p data logs tmp

4.3 创建配置文件

cat > /data/linjr/mysql8/my.cnf << 'EOF' [mysqld] basedir=/data/linjr/mysql8 datadir=/data/linjr/mysql8/data socket=/data/linjr/mysql8/mysql.sock log-error=/data/linjr/mysql8/logs/mysql.err pid-file=/data/linjr/mysql8/mysql.pid port=3307 user=linjr tmpdir=/data/linjr/mysql8/tmp EOF

4.4 初始化数据库

/data/linjr/mysql8/bin/mysqld --defaults-file=/data/linjr/mysql8/my.cnf --initialize --user=linjr

注意:初始化完成后,会生成临时密码。执行以下命令查看:

grep 'temporary password' /data/linjr/mysql8/logs/mysql.err

记下输出的临时密码。

4.5 启动 MySQL

/data/linjr/mysql8/bin/mysqld_safe --defaults-file=/data/linjr/mysql8/my.cnf &

4.6 登录并修改密码

使用临时密码登录:

/data/linjr/mysql8/bin/mysql -uroot -p -S /data/linjr/mysql8/mysql.sock

进入 MySQL 命令行后更改密码,执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; EXIT;

4.7 验证数据库连接

/data/linjr/mysql8/bin/mysql -uroot -p123456 -S /data/linjr/mysql8/mysql.sock -e "SHOW DATABASES;"

预期输出

+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+

4.8 MySQL 多用户权限管理

在生产环境中,不同应用或不同人员应使用独立的 MySQL 账号,并授予最小必要权限,通过MySQL root账号实现多用户创建、权限分配、权限查询、权限回收、用户删除避免共用 root 账号带来的安全风险。

4.8.1 创建MySQL自定义用户

语法说明:CREATE USER '用户名'@'访问范围' IDENTIFIED BY '密码';

访问范围说明:

  • localhost:仅服务器本机可登录(安全最高)

  • 10.217.%:仅公司内网网段可登录

  • %:任意IP均可登录

实操示例:

# 创建用户,自定义密码 CREATE USER 'dev'@'10.217.%' IDENTIFIED BY '123456';
4.8.2 创建应用专用数据库 & 权限四层粒度说明
1)创建业务隔离数据库 SQL
-- 为不同应用创建独立数据库,业务、日志、配置库物理隔离 CREATE DATABASE IF NOT EXISTS app_db; CREATE DATABASE IF NOT EXISTS log_db; CREATE DATABASE IF NOT EXISTS config_db;
2)MySQL 权限四层粒度划分(授权时按需选择)
权限层级匹配语法使用场景说明
全局权限ON *.*作用于服务器全部数据库、全部数据表;仅 DBA 管理员账号使用,禁止分配给业务开发账号
数据库级权限ON db_name.*作用于指定数据库下所有表;业务应用账号标准授权粒度,推荐日常使用
表级权限ON db_name.table_name仅作用于单张指定数据表;多业务共用库、精细化管控单表权限时使用
列级权限ON db_name.table_name (col1, col2)仅作用于数据表内指定字段;敏感数据脱敏管控场景,日常业务极少使用
4.8.3 常用权限分配(场景化实操)

权限语法:GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'访问范围';

核心权限说明:

  • SELECT:查询数据(只读权限)

  • INSERT,UPDATE,DELETE:增、改、删数据

  • CREATE,DROP:创建 / 删除数据表、数据库

  • ALL PRIVILEGES:所有权限(仅管理员使用)

场景 1:给开发用户分配业务库完整操作权限(数据库级粒度)

# 给dev用户分配app_db业务库所有增删改查、建表权限 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON app_db.* TO 'dev'@'10.217.%'; FLUSH PRIVILEGES;

场景 2:创建只读测试用户,仅可查询数据,无法修改

CREATE USER 'test_read'@'10.217.%' IDENTIFIED BY '123456'; GRANT SELECT ON app_db.* TO 'test_read'@'10.217.%'; FLUSH PRIVILEGES;
4.8.5 查询用户已有权限

查看指定用户的所有已分配权限,确认配置是否生效:

# 查看dev用户权限 SHOW GRANTS FOR 'dev'@'10.217.%'; # 查看只读用户权限 SHOW GRANTS FOR 'test_read'@'10.217.%';
4.8.6 回收用户权限

回收用户多余权限,实现权限精细化管控:

# 回收dev用户的删表、删库高危权限 REVOKE DROP,CREATE ON app_db.* FROM 'dev'@'10.217.%'; FLUSH PRIVILEGES;
4.8.7 删除无用用户

清理废弃测试用户,保证数据库安全:

# 删除指定用户 DROP USER IF EXISTS 'test_read'@'10.217.%'; FLUSH PRIVILEGES;
4.8.7 多用户隔离核心说明
  1. 不同MySQL用户权限相互隔离,dev用户仅能操作授权的test_db库,无法访问其他数据库;

  2. 只读用户仅能查询数据,无法修改、删除业务数据,规避误操作风险;

  3. 所有权限修改后,必须执行FLUSH PRIVILEGES;命令方可立即生效。

五、Nginx 部署

5.1 解压deb安装包

服务器仅可访问公司内网,无外网权限,无法使用apt在线安装,采用离线deb包手动解压部署。

cd /data/linjr # 解压deb包提取内部文件 ar x nginx_1.18.0-xxx_amd64.deb # 解压程序目录 tar -zxvf data.tar.gz

解压后生成usr、etc目录,完整保留在/data/linjr/下,不迁移至系统目录。

  • 执行程序路径:/data/linjr/usr/sbin/nginx

  • 配置文件路径:/data/linjr/etc/nginx/

5.2 处理依赖库缺失问题

直接运行nginx会提示缺少libpcre动态库,提前上传依赖库文件处理:

  1. 在个人目录创建库存放文件夹

mkdir -p /data/linjr/lib64
  1. 将传输的libpcre依赖库复制至该目录

cp libpcre*.so* /data/linjr/lib64/
  1. 运行、重载nginx时通过LD_LIBRARY_PATH指定自定义库路径,加载本地依赖。

5.3 新建前端静态页面目录

mkdir -p /data/linjr/html # 创建测试首页 echo "<h1>Nginx 离线部署完成</h1>" > /data/linjr/html/index.html

5.4 修改nginx.conf完整配置

cat > /data/linjr/etc/nginx/nginx.conf << 'EOF' worker_processes 1; error_log /data/linjr/var/log/nginx/error.log; pid /data/linjr/var/run/nginx.pid; events { worker_connections 1024; } http { client_body_temp_path /data/linjr/var/cache/nginx/client_temp; proxy_temp_path /data/linjr/var/cache/nginx/proxy_temp; fastcgi_temp_path /data/linjr/var/cache/nginx/fastcgi_temp; uwsgi_temp_path /data/linjr/var/cache/nginx/uwsgi_temp; scgi_temp_path /data/linjr/var/cache/nginx/scgi_temp; include /data/linjr/etc/nginx/mime.types; default_type application/octet-stream; access_log /data/linjr/var/log/nginx/access.log; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; # 前端静态页面托管 location / { root /data/linjr/html; index index.html index.htm; } # 后端接口反向代理,转发至8090端口Java模拟服务 location /api/ { proxy_pass http://127.0.0.1:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /data/linjr/html; } } } EOF

配置说明:监听8080高位端口规避普通用户端口权限限制,新增/api反向代理规则对接后端Java服务,所有日志、缓存路径均配置至个人目录,不占用系统目录。

5.5 启动 Nginx

cd /data/linjr/usr/sbin # 指定依赖库路径启动 LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -c /data/linjr/etc/nginx/nginx.conf

5.6 验证 Web 访问

curl http://localhost:8080

预期输出<h1>Nginx 离线部署完成</h1>

六、服务管理

6.1 JDK 环境管理

操作命令
查看JDK版本java -version
查看JAVA_HOMEecho $JAVA_HOME
重新加载环境变量source ~/.bashrc

6.2 MySQL 服务管理

操作命令
启动MySQL/data/linjr/mysql8/bin/mysqld_safe --defaults-file=/data/linjr/mysql8/my.cnf &
查看进程ps aux \| grep mysql
停止MySQLpkill -9 mysqld
登录MySQL/data/linjr/mysql8/bin/mysql -uroot -p -S /data/linjr/mysql8/mysql.sock
查看MySQL版本/data/linjr/mysql8/bin/mysql --version

6.3 Nginx 服务管理

所有操作需携带自定义依赖库环境变量

操作命令
启动cd /data/linjr/usr/sbin && LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -c /data/linjr/etc/nginx/nginx.conf
停止cd /data/linjr/usr/sbin && LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -s stop -c /data/linjr/etc/nginx/nginx.conf
重新加载配置cd /data/linjr/usr/sbin && LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -s reload -c /data/linjr/etc/nginx/nginx.conf
查看版本cd /data/linjr/usr/sbin && LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -v
测试配置文件cd /data/linjr/usr/sbin && LD_LIBRARY_PATH=/data/linjr/lib64 ./nginx -t -c /data/linjr/etc/nginx/nginx.conf

七、验证清单

检查项验证命令预期结果
JDK已安装java -version显示 21.0.11
JAVA_HOME已配置echo $JAVA_HOME显示 /data/linjr/jdk-21.0.11
MySQL已启动ps aux \| grep mysqld显示 mysqld 进程
MySQL可连接/data/linjr/mysql8/bin/mysql -uroot -p -S /data/linjr/mysql8/mysql.sock -e "SHOW DATABASES;"显示数据库列表
Nginx已启动ps aux \| grep nginx显示 nginx master、worker进程
Nginx可访问curl http://localhost:8080输出Nginx测试页面内容
反向代理连通curl http://127.0.0.1:8080/api/test返回后端JSON数据

八、附录:进程管理

# 查看所有 Java 进程 ps aux | grep java # 查看所有 MySQL 进程 ps aux | grep mysql # 查看所有 Nginx 进程 ps aux | grep nginx # 强制终止进程 pkill -9 进程名

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询