一、系统准备与基础环境搭建
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前后端项目部署的资料请关注代码网其它相关文章!
发表评论