Linux Java前后端项目 企业级0-1完整部署手册

前言

本文为企业生产级标准部署流程,不是网上随便跑通的简易版。

覆盖:服务器初始化 → 安全加固 → JDK环境 → MySQL生产安装调优 → Nginx生产配置 → Java后端Systemd托管部署 → Vue前端部署 → 日志切割防爆盘 → 开机自启 → 发布流程 → 日常运维规范。

适用:CentOS7 / CentOS8 / Rocky Linux

一、服务器生产初始化

1.1 安装必备依赖工具

生产服务器必备工具,提前装齐,避免后续缺包报错

yum install -y wget curl vim net-tools lrzsz tree zip unzip tar chrony

1.2 时间同步

解决日志时间错乱、数据库时间不一致、定时任务误差问题

systemctl start chronyd systemctl enable chronyd

1.3 系统资源限制优化

默认文件打开数太小,高并发Java直接卡死

vim /etc/security/limits.conf

文件末尾追加:

* soft nofile 65535

* hard nofile 65535

* soft nproc 65535

* hard nproc 65535

1.4 防火墙规范配置(生产禁止关闭防火墙

只放行必要端口,安全合规

systemctl start firewalld

systemctl enable firewalld

# 放行常用业务端口

firewall-cmd --permanent --add-port=80/tcp

firewall-cmd --permanent --add-port=443/tcp

firewall-cmd --permanent --add-port=8080/tcp

firewall-cmd --permanent --add-port=3306/tcp

firewall-cmd --reload

1.5 SELinux生产处理

测试可关,生产建议永久关闭(避免各种权限诡异问题)

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

setenforce 0

1.6 统一企业目录规范

mkdir -p /usr/local/soft # 软件安装目录

mkdir -p /data/project # Java项目目录

mkdir -p /data/frontend # 前端dist目录

mkdir -p /data/logs # 统一日志目录

mkdir -p /data/backup # 备份目录

二、企业级 JDK1.8 安装

不使用yum默认JDK(版本不可控、无环境变量、升级混乱)

2.1 上传 jdk-8uxxx-linux-x64.tar.gz 到 /usr/local/soft

2.2 解压

cd /usr/local/soft

tar -zxvf jdk-8u*.tar.gz

mv jdk1.8* jdk1.8

2.3 配置全局环境变量

vim /etc/profile

文件最底部追加:

export JAVA_HOME=/usr/local/soft/jdk1.8

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin

2.4 生效并验证

source /etc/profile

java -version

三、MySQL8.0 生产级安装与调优

3.1 安装

yum install -y mysql-server

3.2 启动自启

systemctl start mysqld

systemctl enable mysqld

3.3 获取初始密码并修改

grep 'temporary password' /var/log/mysqld.log

mysql -uroot -p

3.4 生产授权规范

-- 修改root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mx@123456';

-- 创建独立业务账号(最规范)

CREATE USER 'biz'@'%' IDENTIFIED BY 'Biz@123456';

CREATE DATABASE biz_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL ON biz_db.* TO 'biz'@'%';

FLUSH PRIVILEGES;

3.5 生产my.cnf优化

覆盖默认配置,解决连接慢、乱码、超时、性能差问题

vim /etc/my.cnf
[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

pid-file=/var/run/mysqld/mysqld.pid

user=mysql

port=3306

character-set-server=utf8mb4

default-storage-engine=INNODB

max_connections=500

wait_timeout=600

interactive_timeout=600

innodb_buffer_pool_size=512M

innodb_log_file_size=256M

slow_query_log=1

slow_query_log_file=/data/logs/mysql-slow.log

long_query_time=2
systemctl restart mysqld

四、Nginx 生产级安装 + 完整配置

4.1 安装启动

yum install -y nginx

systemctl start nginx

systemctl enable nginx

4.2 企业级标准配置

清空默认配置,写入生产配置

echo "" > /etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf
user nginx;

worker_processes auto;

error_log /data/logs/nginx-error.log;

pid /run/nginx.pid;

events {

worker_connections 65535;

}

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /data/logs/nginx-access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

# 开启gzip压缩

gzip on;

gzip_min_length 1k;

gzip_types text/plain text/css application/json application/javascript text/xml application/x-javascript;

server {

listen 80;

server_name _;

# 前端静态资源

location / {

root /data/frontend;

index index.html;

try_files $uri $uri/ /index.html;

}

# 后端接口代理

location /api/ {

proxy_pass http://127.0.0.1:8080/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s;

proxy_read_timeout 60s;

}

}

}

4.3 检查重启

nginx -t

systemctl restart nginx

五、Java后端 企业级部署

彻底抛弃 nohup 裸跑!!!

企业用 systemd 托管:自动重启、日志可控、不炸盘、状态可查

5.1 上传 jar 包到 /data/project

5.2 创建Java服务配置文件

vim /etc/systemd/system/java-project.service
[Unit]

Description=Java Project Service

After=network.target

[Service]

Type=simple

# 生产JVM参数,根据服务器配置微调

ExecStart=/usr/local/soft/jdk1.8/bin/java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -jar /data/project/demo.jar

SuccessExitStatus=143

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

5.3 启动、开机自启

systemctl daemon-reload

systemctl start java-project

systemctl enable java-project

5.4 后端运维标准命令

systemctl status java-project # 查看运行状态

systemctl restart java-project # 重启项目

systemctl stop java-project # 停止项目

journalctl -u java-project -f # 实时看日志

彻底解决:nohup.out 20G爆盘、删文件不释放空间问题

六、前端Vue/React 生产部署

6.1 本地打包

npm run build

6.2 上传dist全部内容至服务器 /data/frontend

6.3 授权防止403

chmod -R 755 /data/frontend

systemctl restart nginx

七、企业级日志防爆盘方案

7.1 系统日志自动切割 logrotate

系统自带,无需安装,直接配置规则,自动按天分割、自动删除旧日志

7.2 Java项目日志切割配置

vim /etc/logrotate.d/java-log
/data/logs/*.log {

daily

rotate 7

missingok

compress

delaycompress

notifempty

copytruncate

}

解释:按天切割、保留7天、压缩旧日志、不中断程序写入

八、企业标准发布流程

每次迭代上线严格按此流程,不翻车、可回滚

#1. 备份旧包

cp /data/project/demo.jar /data/backup/demo-$(date +%Y%m%d).jar

#2. 停止服务

systemctl stop java-project

#3. 上传新jar覆盖

#4. 启动服务

systemctl start java-project

#5. 检查状态

systemctl status java-project

#6. 查看实时日志排错

journalctl -u java-project -f

九、生产环境日常运维黄金命令

df -h # 查磁盘

free -h # 查内存

top # 查负载CPU

lsof | grep deleted # 查删了不释放的垃圾文件

nginx -t # 检查Nginx配置

systemctl status java-project # 查项目状态

十、整套环境优势

  1. 无nohup:彻底根治日志爆盘、删文件不释放空间

  2. 进程托管:程序崩溃、服务器断电自动重启

  3. JVM参数规范:有效防止内存溢出OOM

  4. MySQL调优:拒绝默认垃圾参数,支持高并发

  5. Nginx生产参数:压缩、缓存、超时、跨域全套

  6. 日志自动切割:从根源杜绝几十G超大日志

  7. 安全规范:不关闭防火墙、业务账号隔离、最小权限

相关推荐
Fanfanaas1 小时前
Linux 系统编程 进程篇 (六)
linux·服务器·c语言·开发语言
Seven971 小时前
Tomcat 线程池的设计与实现:StandardThreadExecutor
java
xyx-3v1 小时前
FreeRTOS队列通信
java·服务器·网络
存在的五月雨1 小时前
uniapp 一些组件的使用
java·前端·uni-app
wanhengidc1 小时前
云手机是什么黑科技?
运维·网络·科技·安全·web安全·智能手机
我命由我123451 小时前
Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
minji...1 小时前
Linux 线程同步与互斥(六) 线程安全与重入问题,死锁,线程done
linux·运维·开发语言·数据库·c++·算法·安全
佳xuan1 小时前
QA与RAG检索
java·服务器·前端
2401_873479401 小时前
遭遇DDoS攻击后如何快速分析攻击源?用IP查询+离线库定位异常IP
服务器·开发语言·tcp/ip·php