Linux 服务器 Java 开发环境搭建保姆级教程

作为 Java 后端开发,Linux 服务器环境搭建是日常工作的基础技能。本文基于 CentOS 7 系统,纯干货整理 JDK 11、Nginx、Nacos、Redis、Docker 及 MySQL 的安装与配置步骤,全程命令可直接复制,新手也能轻松上手。

一、前置准备:更换 yum 源 + 开放端口

1. 更换国内 yum 源(阿里源)

默认 yum 源下载速度慢,优先替换为阿里云镜像:

bash 复制代码
# 备份系统默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 下载阿里源(wget方式)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 若无wget,用curl下载
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除缓存并重建
yum clean all
yum makecache

# 更新yum
yum update -y

2. 开放防火墙端口

Java 开发常用端口(如 8080、6379、3306 等)需提前开放,云服务器需先在控制台配置安全组。

bash 复制代码
# 查看防火墙状态
firewall-cmd --state

# 启动防火墙(未启动时)
systemctl start firewalld.service

# 开放单个端口(永久生效)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8848/tcp --permanent

# 重启防火墙使配置生效
systemctl restart firewalld.service

# 查看已开放端口
firewall-cmd --list-ports

二、核心组件安装

1. JDK 11 安装(解压版)

推荐使用解压版 JDK,避免 rpm 安装的环境变量冲突问题。

bash 复制代码
# 进入软件安装目录
cd /usr/local/

# 下载JDK 11(华为云镜像)
wget https://repo.huaweicloud.com/java/jdk/11+28/jdk-11_linux-x64_bin.tar.gz

# 解压
tar -zxvf jdk-11_linux-x64_bin.tar.gz

# 卸载系统自带openjdk(若有)
rpm -qa | grep java | xargs rpm -e --nodeps

# 配置环境变量
vim /etc/profile

# 在文件末尾添加以下内容
export JAVA_HOME=/usr/local/jdk-11
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

# 加载环境变量
source /etc/profile

# 验证安装
java -version

2. Nginx 安装

Nginx 是 Java 项目常用的反向代理服务器,需先安装依赖库。

bash 复制代码
# 安装依赖
yum install -y gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel

# 创建安装目录
mkdir /usr/local/nginx

# 下载并解压Nginx(以1.19.9为例)
wget http://nginx.org/download/nginx-1.19.9.tar.gz
tar -zxvf nginx-1.19.9.tar.gz
cd nginx-1.19.9

# 配置编译参数(指定安装路径+开启SSL)
./configure --prefix=/usr/local/nginx --with-http_ssl_module

# 编译安装
make && make install

# 启动Nginx
cd /usr/local/nginx/sbin
./nginx

# 验证:浏览器访问服务器IP,出现Nginx欢迎页即成功
# 重启Nginx命令
./nginx -s reload

3. Nacos 安装(单机版)

bash 复制代码
# 进入安装目录
cd /usr/local/

# 下载Nacos 1.4.2
wget https://github.com/alibaba/nacos/releases/download/1.4.2/nacos-server-1.4.2.tar.gz

# 解压
tar -xvf nacos-server-1.4.2.tar.gz

# 调整JVM参数(小内存服务器必备)
vim /usr/local/nacos/bin/startup.sh
# 修改单机模式JVM参数为:
# JAVA_OPT="${JAVA_OPT} -Xms64m -Xmx64m -Xmn64m"

# 赋予脚本执行权限
chmod u+x /usr/local/nacos/bin/*.sh

# 单机启动
cd /usr/local/nacos/bin
./startup.sh -m standalone

# 验证启动
ps -ef | grep nacos

# 访问控制台:http://服务器IP:8848/nacos(默认账号密码:nacos/nacos)

4. Redis 安装

Redis 是 Java 项目常用的缓存中间件,需修改配置文件开启后台运行。

bash 复制代码
# 进入安装目录
cd /usr/local/

# 下载Redis 5.0.4
wget http://download.redis.io/releases/redis-5.0.4.tar.gz

# 解压
tar -xzvf redis-5.0.4.tar.gz
cd redis-5.0.4

# 编译安装
make
cd src
make install PREFIX=/usr/local/redis

# 复制配置文件到安装目录
mkdir /usr/local/redis/etc
cp ../redis.conf /usr/local/redis/etc/

# 修改配置文件
vim /usr/local/redis/etc/redis.conf
# 1. 开启后台运行:daemonize no → yes
# 2. 关闭保护模式:protected-mode yes → no
# 3. 设置密码:requirepass 你的密码(可选)
# 4. 注释bind 127.0.0.1(允许远程访问)

# 启动Redis
cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf

# 验证启动
ps -ef | grep redis

5. Docker 安装

Docker 可简化 MySQL、RocketMQ 等组件的部署,是开发环境的必备工具。

bash 复制代码
# 查看系统内核版本(需3.10以上)
uname -r

# 安装Docker
yum install -y docker

# 启动Docker
systemctl start docker

# 设置开机自启
systemctl enable docker

# 配置阿里云镜像加速
vim /etc/docker/daemon.json
# 添加以下内容
{
    "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

# 重启Docker
systemctl restart docker

# 验证安装
docker -v

6. Docker 安装 MySQL 5.7

使用 Docker 安装 MySQL,避免系统环境依赖问题。

bash 复制代码
# 拉取MySQL 5.7镜像
docker pull mysql:5.7

# 创建数据挂载目录
mkdir -p /usr/local/mysql/{conf,logs,data}

# 启动MySQL容器
docker run -p 3306:3306 --name mysql \
--privileged=true \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/logs \
-v /usr/local/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

# 进入容器
docker exec -it mysql /bin/bash

# 登录MySQL
mysql -uroot -proot

# 开启远程访问
use mysql;
update user set Host='%' where User='root';
flush privileges;

# 配置字符集(防止中文乱码)
vim /usr/local/mysql/conf/my.cnf
# 添加以下内容
[client]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
lower_case_table_names=1

# 重启MySQL容器
docker restart mysql

7. RocketMQ 集群搭建(双主双从)

RocketMQ 是 Java 项目核心的分布式消息队列,双主双从集群满足开发 / 测试环境的高可用需求。
7.1 环境准备

bash 复制代码
# 开放RocketMQ所需端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent  # NameServer端口
firewall-cmd --zone=public --add-port=10911-10914/tcp --permanent  # Broker端口
systemctl restart firewalld.service

# 验证JDK环境(RocketMQ依赖JDK)
java -version

7.2 下载安装

bash 复制代码
# 进入安装目录
cd /usr/local/
# 下载RocketMQ 4.9.4(稳定版)
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
# 安装unzip(若未安装)
yum install -y unzip
# 解压并重命名
unzip rocketmq-all-4.9.4-bin-release.zip
mv rocketmq-all-4.9.4-bin-release rocketmq

# 调整JVM参数(小内存服务器必改,避免启动失败)
# 修改NameServer JVM参数
vim /usr/local/rocketmq/bin/runserver.sh
# 将原配置 -Xms4g -Xmx4g -Xmn2g 改为
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

# 修改Broker JVM参数
vim /usr/local/rocketmq/bin/runbroker.sh
# 将原配置 -Xms4g -Xmx4g -Xmn2g 改为
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

7.3 配置集群文件

bash 复制代码
# 创建集群配置目录
mkdir -p /usr/local/rocketmq/conf/cluster

# 1. 编写broker-a(主节点)配置
cat > /usr/local/rocketmq/conf/cluster/broker-a.conf << EOF
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
namesrvAddr=127.0.0.1:9876
listenPort=10911
storePathRootDir=/usr/local/rocketmq/store/broker-a
storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog
autoCreateTopicEnable=true
brokerPermission=6
EOF

# 2. 编写broker-a-s(从节点)配置
cat > /usr/local/rocketmq/conf/cluster/broker-a-s.conf << EOF
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
namesrvAddr=127.0.0.1:9876
listenPort=10912
storePathRootDir=/usr/local/rocketmq/store/broker-a-s
storePathCommitLog=/usr/local/rocketmq/store/broker-a-s/commitlog
autoCreateTopicEnable=true
brokerPermission=2
EOF

# 3. 编写broker-b(主节点)配置
cat > /usr/local/rocketmq/conf/cluster/broker-b.conf << EOF
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
namesrvAddr=127.0.0.1:9876
listenPort=10913
storePathRootDir=/usr/local/rocketmq/store/broker-b
storePathCommitLog=/usr/local/rocketmq/store/broker-b/commitlog
autoCreateTopicEnable=true
brokerPermission=6
EOF

# 4. 编写broker-b-s(从节点)配置
cat > /usr/local/rocketmq/conf/cluster/broker-b-s.conf << EOF
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
namesrvAddr=127.0.0.1:9876
listenPort=10914
storePathRootDir=/usr/local/rocketmq/store/broker-b-s
storePathCommitLog=/usr/local/rocketmq/store/broker-b-s/commitlog
autoCreateTopicEnable=true
brokerPermission=2
EOF

7.4 启动集群

bash 复制代码
cd /usr/local/rocketmq/bin

# 1. 启动NameServer
nohup sh mqnamesrv &
# 验证NameServer启动:日志出现"The Name Server boot success"
tail -f ~/logs/rocketmqlogs/namesrv.log

# 2. 启动Broker节点(按顺序执行)
nohup sh mqbroker -c /usr/local/rocketmq/conf/cluster/broker-a.conf &
nohup sh mqbroker -c /usr/local/rocketmq/conf/cluster/broker-a-s.conf &
nohup sh mqbroker -c /usr/local/rocketmq/conf/cluster/broker-b.conf &
nohup sh mqbroker -c /usr/local/rocketmq/conf/cluster/broker-b-s.conf &

# 3. 验证集群状态
export NAMESRV_ADDR=127.0.0.1:9876
sh mqadmin clusterList
# 输出显示2主2从节点即搭建成功

7.5 常用命令

bash 复制代码
# 关闭NameServer
sh mqshutdown namesrv
# 关闭Broker
sh mqshutdown broker
# 发送测试消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
# 消费测试消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

三、总结

  1. 本文覆盖 Java 开发核心环境:JDK 11、Nginx、Nacos、Redis、Docker、MySQL、RocketMQ,所有命令可直接复制执行。
  2. 小内存服务器需重点调整 Nacos、RocketMQ 的 JVM 参数,避免内存不足导致启动失败。
  3. 云服务器需同时配置安全组和防火墙端口,否则会出现服务可启动但无法远程访问的问题。

如果安装过程中遇到问题,欢迎在评论区留言交流!

相关推荐
huaxiu57 分钟前
ubuntu下应用打不开
linux·运维·ubuntu
m0_6831247912 分钟前
Ubuntu服务设置开机自启
linux·运维·ubuntu
BestOrNothing_201515 分钟前
(1)双系统中Ubuntu22.04启动盘制作与启动盘恢复全过程
linux·ubuntu·双系统·启动盘制作·启动盘恢复
AI成长日志20 分钟前
【实用工具教程】Linux常用命令速查与实战场景:文件操作、进程管理与网络调试高频命令解析
linux·php
MegaDataFlowers22 分钟前
快速上手Spring
java·后端·spring
小江的记录本22 分钟前
【MyBatis-Plus】Spring Boot + MyBatis-Plus 进行各种数据库操作(附完整 CRUD 项目代码示例)
java·前端·数据库·spring boot·后端·sql·mybatis
左左右右左右摇晃24 分钟前
Java 笔记--OOM产生原因以及解决方法
java·笔记
落叶花开又一年24 分钟前
检验检测机构资质认定远程评审工作程序
linux·运维·服务器
wanhengidc25 分钟前
《三国志异闻录》搬砖新游戏 云手机
运维·服务器·数据库·游戏·智能手机
大傻^28 分钟前
Spring AI Alibaba Function Calling:外部工具集成与业务函数注册
java·人工智能·后端·spring·springai·springaialibaba