跳转到主内容
极星编程网:以代码为星,赴技术山海!

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  # 查项目状态

十、整套环境优势 无nohup :彻底根治日志爆盘、删文件不释放空间 进程托管 :程序崩溃、服务器断电自动重启 JVM参数规范 :有效防止内存溢出OOM MySQL调优 :拒绝默认垃圾参数,支持高并发 Nginx生产参数 :压缩、缓存、超时、跨域全套 日志自动切割 :从根源杜绝几十G超大日志 安全规范 :不关闭防火墙、业务账号隔离、最小权限

相关文章