开发者

CentOS系统下前后端项目部署的操作指南

目录
  • 一、系统准备与基础环境搭建
    • 1. 系统更新与依赖安装
    • 2. Java环境配置
    • 3. docker环境搭建
  • 二、后端项目部署(Spring Boot)
    • 1. JAR包上传与执行
    • 2. 使用Systemd管理服务
  • 三、前端项目部署(vue)
    • 1. Nginx环境配置
    • 2. Vue项目部署流程
  • 四、常用linux命令汇总
    • 1. 目录操作
    • 2. 文件操作
    • 3. 文件备份策略
  • 五、Docker容器管理
    • 1. 容器生命周期管理
    • 2. 容器运行模式
    • 3. 镜像管理
  • 六、防火墙与端口开放
    • 七、常见问题排查
      • 1. 日志查看技巧
      • 2. 网络诊断命令
      • 3. 系统资源监控
    • 八、自动化部署建议
      • 1. 使用Shell脚本
      • 2. CI/CD集成建议
    • 九、安全加固建议
      • 第十部分:常见错误与解决方案
        • 一、Yum 源失效或元数据过期问题
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 二、Java 环境配置问题
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 三、Docker 容器启动失败
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 四、Nginx 配置错误导致 502 Bad Gateway
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 五、文件上传/解压失败
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 六、防火墙阻止服务访问
          • 1. 问题现象
          • 2. 原因分析
          • 3. 解决方案
        • 七、其他常见错误汇总

        一、系统准备与基础环境搭建

        1. 系统更新与依赖安装

        # 更新系统软件包
        sudo yum update -y
        
        # 安装基础开发工具
        sudo yum groupinstall "Development Tools" -y
        
        # 安装EPEL仓库(扩展软件包)
        sudo yum install epel-release -y
        
        # 安装常用工具
        sudo yum install -y wget curl unzip net-tools
        

        2. Java环境配置

        # 安装JDK 1.8
        sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
        
        # 验证安装
        java -version
        javac -version
        

        3. Docker环境搭建

        # 安装Docker
        sudo yum install docker -y
        
        # 启动Docker服务
        sudo systemctl start docker
        
        # 设置开机自启
        sudo systemctl enable docker
        
        # 验证Docker安装
        docker --version
        docker run hello-world
        
        # 安装Docker Compose
        sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        sudo chmod +x /usr/local/bin/docker-compose
        docker-compose --version
        

        二、后端项目部署(Spring Boot)

        1. JAR包上传与执行

        # 创建项目目录
        mkdir -p /opt/backend
        cd /opt/backend
        
        # 上传JAR包(使用rz命令)
        rz -E  # 需要安装lrzsz工具:sudo yum install lrzsz -y
        
        # 查看上传文件
        ls -l
        
        # 启动Spring Boot应用
        nohup java -jar your-project.jar > backend.log 2>&1 &
        
        # 查看进程
        ps -ef | grep java
        
        # 查看日志
        tail -f backend.log
        
        • nohup:不挂断运行(即使终端关闭也不停止)。
        • > logs/app.log:标准输出重定向到日志文件。
        • 2>&1:将标准错误输出也重定向到标准输出。
        • &:后台运行。

        2. 使用Systemd管理服务

        # 创建服务配置文件
        sudo vi /etc/systemd/system/backend.service
        
        # 内容如下:
        [Unit]
        Description=Spring Boot Backend Service
        After=syslog.target
        
        [Service]
        User=root
        ExecStart=/usr/bin/java -jar /opt/backend/your-project.jar
        SuccessExitStatus=143
        Restart=on-failure
        
        [Install]
        WantedBy=multi-user.target
        
        # 重新加载服务配置
        sudo systemctl daemon-reload
        
        # 启动服务
        sudo systemctl start backend
        
        # 设置开机自启
        sudo systemctl enable backend
        
        # 查看服务状态
        sudo systemctl status backend
        

        三、前端项目部署(Vue)

        1. Nginx环境配置

        # 安装Nginx
        sudo yum install nginx -y
        
        # 启动Nginx
        sudo systemctl start nginx
        
        # 设置开机自启
        sudo systemctl enable nginx
        
        # 配置Nginx反向代理
        sudo vi /etc/nginx/conf.d/vue.conf
        
        # 示例配置:
        server {
            listen 80;
            server_name yourdomain.com;
        
            location / {
                root /opt/frontend/dist;
                index index.html;
                try_files $uri $uri/ /index.html;
            }
        
            location /api/ {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
            }
        }
        
        # 重新加载Nginx配置
        sudo nginx -s reload
        

        2. Vue项目部署流程

        # 创建前端目录
        mkdir -p /opt/frontend
        cd /opt/frontend
        
        # 上传dist包(假设为vue-project-dist.tar.gz)
        rz -E
        
        # 解压dist包
        tar -zxvf vue-project-dist.tar.gz -C /opt/frontend/
        
        # 验证解压结果
        ls -R /opt/frontend/dist/
        

        四、常用Linux命令汇总

        1. 目录操作

        # 切换目录
        cd /path/to/directory
        
        # 返回上一级目录
        cd ..
        
        # 返回用户主目录
        cd ~
        
        # 显示当前目录路径
        pwd
        
        # 创建多级目录
        mkdir -p /opt/myproject/{bin,conf,logs}
        
        # 删除空目录
        rmdir /path/to/empty_dir
        
        # 递归删除目录
        rm -rf /path/to/dir
        

        2. 文件操作

        # 查看文件内容
        cat filename.txt
        less filename.txt
        
        # 查找文件内容
        grep "search_text" filename.txt
        
        # 查找文件位置
        find / -name filename.txt 2>/dev/null
        
        # 复制文件/目录
        cp source_file destination_path
        cp -r source_dir destination_dir
        
        # 移动/重命名文件
        mv old_name new_name
        mv file.txt /new/path/
        
        # 创建文件
        touch newfile.txt
        
        # 编辑文件
        vi filename.txt
        nano filename.txt
        

        3. 文件备份策略

        # 完整备份
        rsync -avz --delete /source/ /backup/
        
        # 增量备份
        rsync -avz --link-dest=/backup/last/ /source/ /backup/new/
        
        # 分区镜像备份
        dd if=/dev/sda of=/backup.img bs=4M
        
        # 使用tar备份
        tar -cvpzf backup.tar.gz /path/to/backphpup/
        

        五、Docker容器管理

        1. 容器生命周期管理

        # 查看运行中的容器
        docker ps
        
        # 查看所有容器
        docker ps -a
        
        # 启动容器
        docker start container_name
        
        # 停止容器
        docker stop container_name
        
        # 强制停止容器
        docker kill container_name
        
        # 删除容器
        docker rm container_name
        
        # 进入运行中的容器
        docker exec -it container_name /bin/bash
        
        # 查看容器日志
        docker logs -f container_name
        

        2. 容器运行模式

        # 交互式容器
        docker run -it --name mycontainer Centos /bin/bash
        
        # 守护式容器
        docker run -d --name mycontainer nginx
        
        # 指定端口映射
        docker run -d -p 8080:80 --name myweb nginx
        
        # 挂载目录
        docker run -v /host/path:/container/path -d --name myapp myimage
        
        # 设置自启动
        docker run --restart=always -d myimage
        

        3. 镜像管理

        # 拉取镜像
        docker pull nginx:latest
        
        # 查看本地镜像
        docker images
        
        # 构建镜像
        docker build -t myimage:1.0 .
        
        # 推送镜像到仓库
        docker push myregistry/myimage:tag
        
        # 删除镜像
        docker rmi image_id
        

        六、防火墙与端口开放

        # 查看防火墙状态
        sudo firewall-cmd --state
        
        # 开放80端口
        sudo firewall-cmd --permanent --add-port=80/tcp
        sudo firewall-cmd --reload
        
        # 开放多个端口
        sudo firewall-cmd --permanent --add-port=8080/tcp
        sudo firewall-cmd --permanent --add-port=3000/tcp
        
        # 查看开放端口
        sudo firewall-cmd --list-all
        

        七、常见问题排查

        1. 日志查看技巧

        # 实时查看日志
        tail -f /var/log/messages
        
        # 查看特定时间段日志
        journalctl --since "2025-07-12 00:00" --until "2025-07-13 12:00"
        
        # 查看Nginx错误日志
        tail -n 50 /var/log/nginx/error.log
        
        • -n 50 表示从文件末尾开始算起的前 50 行。
        • -f 则是实时跟踪文件更新。

        2. 网络诊断命令

        # 查看端口监听情况
        netstat -tuln
        
        # 测试端口连通性
        telnet example.com 80
        
        # 查看路由表
        route -n
        
        # 网络抓包分析
        tcpdump -i eth0 port 80 -w capture.pcap
        

        3. 系统资源监控

        # 查看实时系统负载
        top
        
        # 查看内存使用情况
        free -h
        
        # 查看磁盘空间
        df -h
        
        # 查看目录大小
        du -sh js/path/to/dir
        

        八、自动化部署建议

        1. 使用Shell脚本

        #!/bin/bash
        # 自动部署脚本示例
        APP_NAME="myapp"
        JAR_FILE="/opt/backend/${APP_NAME}.jar"
        LOG_FILE="/var/log/${APP_NAME}_deploy.log"
        
        echo "=== 开始部署 ===" >> ${LOG_www.devze.comFILE}
        date +"%Y-%m-%d %H:%M:%S" >> ${LOG_FILE}
        
        # 停止旧服务
        if [ -f /var/run/${APP_NAME}.pid ]; then
            kill -9 $(cat /var/run/${APP_NAME}.pid)
        fi
        
        # 启动新服务
        nohup java -jar ${JAR_FILE} >> ${LOG_FILE} 2>&1 &
        echo $! > /var/run/${APP_NAME}.pid
        
        echo "=== 部署完成 ===" >> ${LOG_FILE}
        

        2. CI/CD集成建议

        • 使用Jenkins/GitLab CI实现自动构建
        • 配置Webhook触发部署流程
        • 使用Ansible进行批量服务器部署

        九、安全加固建议

        限制SSH访问

        sudo vi /etc/ssh/sshd_config
        # 修改以下配置:
        PermitRootLogin no
        PasswordAuthentication no
        AllowUsers your_username
        

        重启SSH服务:

        sudo systemctl restart sshd
        

        定期更新系统

        # 定时任务示例(每周日凌晨更新)
        sudo crontab -l | { cat; echo "0 0 * * 0 sudo yum update -y"; } | sudo crontab -
        

        设置文件权限

        # 设置敏感目录权限
        chmod 700 /opt/backend
        chown -R root:root /opt/backend
        

        第十部分:常见错误与解决方案

        一、Yum 源失效或元数据过期问题

        1. 问题现象

        yum install lrzsz -y
        警告:加载 '/etc/yum.repos.d/CentOS-AppStream.repo' 失败,跳过。
        警告:加载 '/etc/yum.repos.d/CentOS-Vault.repo' 失败,跳过。
        上次元数据过期检查:1:14:39 前,执行于 2025年07月13日 星期日 16时31分35秒。
        

        2. 原因分析

        • CentOS 8 官方源已失效(官方已停止维护 CentOS 8)
        • 本地 yum 缓存未更新
        • 网络连接异常(无法访问默认镜像源)

        3. 解决方案

        步骤 1:备份并替换为阿里云 Vault 源

        # 备份原目录
        mv /etc/yum.repos.d /etc/yum.repos.d.bak
        mkdir /etc/yum.repos.d
        
        # 下载阿里云 Vault 源(以 CentOS 8.5.2111 为例)
        wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
        

        注意:

        替换 8.5.2111 为您的实际系统版本号(通过 cat /etc/RedHat-release 查看)

        步骤 2:清理缓存并重建元数据

        yum clean all
        rm -rf /var/cache/yum
        yum makecache fast
        

        步骤 3:重新安装软件包

        yum install lrzsz -y
        

        二、Java 环境配置问题

        1. 问题现象

        java -version
        -bash: java: command not found
        

        2. 原因分析

        • 未正确安装 JDK
        • 环境变量未配置

        3. 解决方案

        步骤 1:安装 OpenJDK

        yum编程客栈 install java-1.8.0-openjdk -y
        

        步骤 2:配置环境变量

        # 查找 Java 路径
        alternatives --config java
        
        # 手动添加到 PATH(以实际路径为准)
        echo 'export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-1.el8_6.x86_64/jre/bin' >> ~/.bashrc
        source ~/.bashrc
        

        三、Docker 容器启动失败

        1. 问题现象

        docker start mycontainer
        Error response from daemon: Cannot start container mycontainer: [8] System error: permission denied
        

        2. 原因分析

        • Docker 服务未运行
        • 权限不足(非 root 用户)
        • 端口冲突

        3. 解决方案

        步骤 1:启动 Docker 服务

        systemctl start docker
        

        步骤 2:添加用户到 docker 组

        usermod -aG docker $USER
        newgrp docker
        

        步骤 3:检查端口占用

        lsof -i :8080  # 替换为目标端口
        kill -9 <PID>
        

        四、Nginx 配置错误导致 502 Bad Gateway

        1. 问题现象

        访问前端页面返回 502 Bad Gateway

        2. 原因分析

        • Nginx 配置的后端地址错误
        • 后端服务未启动
        • 权限问题(Nginx 无法读取 dist 文件)

        3. 解决方案

        步骤 1:检查 Nginx 配置

        nginx -t  # 验证配置文件语法
        

        步骤 2:检查后端服务状态

        systemctl status backend  # 替换为后端服务名称
        

        步骤 3:调整文件权限

        chown -R nginx:nginx /opt/frontend/dist
        chmod -R 755 /opt/frontend/dist
        

        五、文件上传/解压失败

        1. 问题现象

        rz -E
        rz: can't open /tmp/rzXXX: Permission depythonnied
        

        2. 原因分析

        • /tmp 目录权限不足
        • rz 工具未安装

        3. 解决方案

        步骤 1:安装 lrzsz

        yum install lrzsz -y
        

        步骤 2:手动上传文件

        # 使用 SCP/SFTP 工具上传文件到目标目录
        scp local_file user@server:/opt/backend/
        

        步骤 3:解压失败处理

        # 检查压缩包完整性
        file your-file.tar.gz
        tar -tvf your-file.tar.gz  # 查看内容
        
        # 强制解压
        tar -xvf your-file.tar.gz --strip-components=1 -C /opt/frontend/dist
        

        六、防火墙阻止服务访问

        1. 问题现象

        无法通过浏览器访问服务(如 80 端口)

        2. 原因分析

        • 防火墙未开放对应端口

        3. 解决方案

        # 开放端口(如 80 和 8080)
        firewall-cmd --permanent --add-port=80/tcp
        firewall-cmd --permanent --add-port=8080/tcp
        firewall-cmd --reload
        
        # 临时关闭防火墙(不推荐)
        systemctl stop firewalld
        

        七、其他常见错误汇总

        错误类型原因解决方案
        No such file or directory文件路径错误或权限不足使用 ls -l 验证路径,chmod 修改权限
        Permission denied权限不足(需 root 权限)使用 sudo 或切换到 root 用户
        Address already in use端口被占用使用 lsof -i :<port> 查找并终止占用进程
        No route to host网络不通或防火墙限制检查 iptables/firewalld 配置,确保服务器可访问
        OutOfMemoryError内存不足导致 Java 程序崩溃调整 JVM 参数(如 -Xmx512m),优化代码减少内存占用

        以上就是CentOS系统下前后端项目部署的操作指南的详细内容,更多关于CentOS前后端项目部署的资料请关注编程客栈(www.devze.com)其它相关文章!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新运维

        运维排行榜