当前位置: 代码网 > 服务器>服务器>Linux > CentOS系统下前后端项目部署的操作指南

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

2025年07月14日 Linux 我要评论
一、系统准备与基础环境搭建1. 系统更新与依赖安装# 更新系统软件包sudo yum update -y# 安装基础开发工具sudo yum groupinstall "development too

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

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/backup/

五、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 /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_file}
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 denied

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前后端项目部署的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com