1. 为什么需要完整的Linux环境搭建?
作为一名Java全栈开发者,我经常需要在全新的Linux服务器上部署开发环境。记得第一次搭建环境时,我花了整整两天时间反复折腾各种组件的安装和配置,期间遇到了无数版本冲突、依赖缺失和配置错误的问题。这种痛苦的经历让我意识到,一个系统化的环境搭建流程是多么重要。
完整的Linux环境搭建包含以下几个核心组件:
- MySQL 8:当前最稳定的关系型数据库版本
- JDK 17:LTS版本的Java开发环境
- Redis:高性能的内存数据库
- Tomcat:轻量级的Java Web容器
- Nginx:高性能的Web服务器和反向代理
- Node.js:现代前端开发必备的JavaScript运行时
这些组件组合在一起,可以满足绝大多数Java全栈项目的开发需求。下面我将分享经过多次实战验证的完整搭建流程,包含你可能遇到的各种坑和解决方案。
提示:建议使用CentOS 7或Ubuntu 20.04 LTS作为基础系统,这两个版本在企业环境中应用最广泛,兼容性也最好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 系统更新与基础工具安装
在开始安装各种服务之前,我们需要先准备好基础环境。以CentOS 7为例:
bash复制# 更新系统
sudo yum update -y
# 安装常用工具
sudo yum install -y wget curl vim git unzip net-tools
# 关闭SELinux(避免权限问题)
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭防火墙(开发环境建议关闭,生产环境需配置规则)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
2.2 创建专用用户
不建议直接使用root用户进行操作,我们可以创建一个专门的部署用户:
bash复制# 创建用户
sudo adduser deploy
sudo passwd deploy
# 赋予sudo权限
sudo echo "deploy ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# 切换到新用户
su - deploy
3. MySQL 8安装与配置
3.1 安装MySQL 8
MySQL 8相比之前的版本在性能和安全性上都有显著提升。以下是安装步骤:
bash复制# 下载MySQL官方Yum仓库
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-6.noarch.rpm
# 安装MySQL服务
sudo yum install -y mysql-community-server
# 启动服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
3.2 初始配置
MySQL 8安装完成后会生成一个临时密码,我们需要先修改它:
bash复制# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.log
# 使用临时密码登录
mysql -uroot -p
# 修改密码(MySQL 8有密码强度要求)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
# 创建远程访问用户
CREATE USER 'admin'@'%' IDENTIFIED BY 'AdminPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
# 退出MySQL
exit
3.3 常见问题解决
问题1:客户端连接报"caching_sha2_password"错误
这是因为MySQL 8默认使用了新的认证插件。解决方案:
sql复制ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'AdminPass123!';
问题2:忘记root密码
bash复制# 停止MySQL服务
sudo systemctl stop mysqld
# 启动MySQL跳过权限检查
sudo mysqld_safe --skip-grant-tables &
# 登录MySQL并修改密码
mysql -uroot
UPDATE mysql.user SET authentication_string='' WHERE User='root';
FLUSH PRIVILEGES;
exit
# 重启MySQL
sudo systemctl restart mysqld
4. JDK 17安装与配置
4.1 安装JDK 17
Oracle JDK 17是当前的LTS版本,提供了长期支持:
bash复制# 下载JDK 17(需要Oracle账号)
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
# 安装
sudo rpm -ivh jdk-17_linux-x64_bin.rpm
# 验证安装
java -version
4.2 环境变量配置
为了更方便地使用Java工具,我们需要配置环境变量:
bash复制# 查找Java安装路径
sudo update-alternatives --config java
# 编辑环境变量文件
sudo vim /etc/profile.d/java.sh
# 添加以下内容
export JAVA_HOME=/usr/java/jdk-17.0.2
export PATH=$PATH:$JAVA_HOME/bin
# 使配置生效
source /etc/profile.d/java.sh
4.3 多版本管理
如果需要管理多个Java版本,可以使用alternatives工具:
bash复制sudo alternatives --install /usr/bin/java java /usr/java/jdk-17.0.2/bin/java 2
sudo alternatives --config java
5. Redis安装与配置
5.1 安装Redis
Redis是一个高性能的键值数据库,安装过程如下:
bash复制# 安装EPEL仓库(CentOS)
sudo yum install -y epel-release
# 安装Redis
sudo yum install -y redis
# 启动服务
sudo systemctl start redis
sudo systemctl enable redis
5.2 基本配置
Redis的默认配置需要一些调整:
bash复制# 编辑配置文件
sudo vim /etc/redis.conf
# 修改以下参数
bind 0.0.0.0
protected-mode no
requirepass YourStrongPassword
maxmemory 1gb
maxmemory-policy allkeys-lru
# 重启Redis
sudo systemctl restart redis
5.3 Redis集群配置(可选)
对于生产环境,建议配置Redis集群:
bash复制# 创建集群目录
mkdir -p /etc/redis/cluster/700{1..6}
# 为每个节点创建配置文件
for port in {7001..7006}; do
cat > /etc/redis/cluster/$port/redis.conf <<EOF
port $port
cluster-enabled yes
cluster-config-file nodes-$port.conf
cluster-node-timeout 5000
appendonly yes
EOF
done
# 启动集群节点
for port in {7001..7006}; do
redis-server /etc/redis/cluster/$port/redis.conf &
done
# 创建集群
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 \
--cluster-replicas 1
6. Tomcat安装与配置
6.1 安装Tomcat
Tomcat是Java Web应用的标准容器:
bash复制# 下载Tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
# 解压
tar -xzf apache-tomcat-9.0.68.tar.gz
sudo mv apache-tomcat-9.0.68 /opt/tomcat
# 创建专用用户
sudo useradd -r -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
6.2 配置系统服务
将Tomcat配置为系统服务更方便管理:
bash复制# 创建服务文件
sudo vim /etc/systemd/system/tomcat.service
# 添加以下内容
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
6.3 性能优化
调整Tomcat配置以获得更好性能:
bash复制# 编辑配置文件
sudo vim /opt/tomcat/conf/server.xml
# 修改连接器配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="10"
acceptCount="100"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/css,text/javascript,application/javascript"/>
7. Nginx安装与配置
7.1 安装Nginx
Nginx是一个高性能的Web服务器和反向代理:
bash复制# 添加Nginx官方仓库
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/\$basearch/
gpgcheck=0
enabled=1
EOF
# 安装Nginx
sudo yum install -y nginx
# 启动服务
sudo systemctl start nginx
sudo systemctl enable nginx
7.2 基本配置
配置Nginx作为Tomcat的反向代理:
bash复制# 编辑配置文件
sudo vim /etc/nginx/conf.d/tomcat.conf
# 添加以下内容
upstream tomcat {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 测试配置并重启
sudo nginx -t
sudo systemctl restart nginx
7.3 HTTPS配置
为网站添加HTTPS支持:
bash复制# 安装Certbot(Let's Encrypt客户端)
sudo yum install -y certbot python2-certbot-nginx
# 获取证书
sudo certbot --nginx -d yourdomain.com
# 自动续期测试
sudo certbot renew --dry-run
8. Node.js安装与配置
8.1 安装Node.js
Node.js是现代前端开发不可或缺的工具:
bash复制# 下载Node.js
curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -
# 安装Node.js
sudo yum install -y nodejs
# 验证安装
node -v
npm -v
8.2 常用工具安装
安装前端开发常用工具:
bash复制# 安装Yarn
sudo npm install -g yarn
# 安装常用CLI工具
sudo npm install -g @angular/cli vue-cli create-react-app
# 配置npm镜像(国内用户)
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
8.3 PM2进程管理
使用PM2管理Node.js应用:
bash复制# 安装PM2
sudo npm install -g pm2
# 启动应用
pm2 start app.js
# 设置开机启动
pm2 startup
pm2 save
9. 环境验证与测试
9.1 组件连通性测试
确保所有组件都能正常工作:
bash复制# 测试MySQL
mysql -uadmin -p -h127.0.0.1 -e "SHOW DATABASES;"
# 测试Redis
redis-cli -a YourStrongPassword PING
# 测试Tomcat
curl http://localhost:8080
# 测试Nginx
curl http://localhost
# 测试Node.js
node -e "console.log('Node.js is working')"
9.2 性能基准测试
进行简单的性能测试:
bash复制# MySQL基准测试
mysqlslap -uadmin -p --concurrency=50 --iterations=10 --auto-generate-sql
# Redis基准测试
redis-benchmark -h 127.0.0.1 -a YourStrongPassword -q -n 100000
# Nginx基准测试
ab -n 10000 -c 100 http://localhost/
10. 安全加固建议
10.1 基础安全措施
bash复制# 禁用root SSH登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
# 更改SSH端口
sudo sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config
# 配置防火墙(如果开启)
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
10.2 定期维护任务
设置定期维护任务:
bash复制# 创建日志清理脚本
sudo vim /usr/local/bin/clean_logs.sh
# 添加以下内容
#!/bin/bash
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
find /opt/tomcat/logs -type f -mtime +7 -exec rm -f {} \;
# 设置定时任务
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/clean_logs.sh") | crontab -
经过以上步骤,我们已经成功搭建了一个完整的Linux开发环境。在实际操作中,根据不同的项目需求,可能还需要安装其他组件或进行额外的配置。这套环境已经可以满足大多数Java全栈项目的开发需求,从数据库到后端再到前端,形成了一个完整的开发闭环。
