根据我提供给你的内容直接生成1个标题文章标题不要带标点符号
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
在现代软件开发体系中,代码托管平台已成为团队协作、版本控制和持续交付的核心基础设施,作为国内领先的 Git 托管服务,码云(Gitee) 不仅提供稳定高效的代码仓库管理功能,还集成了项目看板、代码审查、持续集成(CI)以及自动化部署等企业级能力。
仅仅将代码托管在码云上,并不能让应用真正“跑起来”,从代码提交到服务上线的关键一步,是将远程仓库中的代码安全、高效地部署至生产服务器,本文将系统介绍如何将码云上的项目部署到 Linux 服务器,涵盖环境准备、SSH 配置、代码克隆、自动化脚本编写及 CI/CD 集成等关键环节,帮助开发者构建可复用、高可用的部署方案。
前期准备:服务器与码云账户配置
在开始部署前,必须确保本地开发、远程仓库和目标服务器三者之间的通信链路畅通无阻。
服务器环境要求
推荐使用一台基于 Linux 的云服务器(如 CentOS 7+ 或 Ubuntu 20.04 LTS),并完成以下基础配置:
- 安装必要的运行时环境(根据项目技术栈选择):
- 前后端分离项目:Node.js + Nginx
- Python 应用:Python + Gunicorn + Nginx
- Java 项目:JDK + Tomcat / Spring Boot Jar 包
- PHP 项目:PHP-FPM + Apache/Nginx
- 开放常用端口(如 80、443、22),关闭不必要的防火墙规则。
- 使用
sudo权限用户登录,避免直接使用 root 操作。
码云项目初始化
确认已在 码云官网 创建项目,并通过以下命令推送本地代码至远程仓库:
git remote add origin git@gitee.com:your-username/your-project.git git push -u origin main
⚠️ 注意分支名称:新项目默认为
main,旧项目可能仍为master,请根据实际情况调整。
配置 SSH 密钥实现免密拉取
为了实现服务器自动从码云拉取代码而无需输入密码,建议采用 SSH 公钥认证机制,这是最安全且广泛使用的身份验证方式。
配置步骤如下:
-
生成 SSH 密钥对
登录服务器后执行以下命令(邮箱可自定义):
ssh-keygen -t rsa -b 4096 -C "deploy@yourcompany.com" -f ~/.ssh/gitee_rsa
推荐使用独立密钥文件(如
gitee_rsa)以区分不同平台账号。 -
获取公钥内容
查看并复制公钥:
cat ~/.ssh/gitee_rsa.pub
输出示例如下:
ssh-rsa AAAAB3NzaC1yc2E... deploy@yourcompany.com -
添加公钥到码云账户
- 登录码云 → 右上角头像 →「个人设置」→「SSH 公钥」
- 粘贴公钥内容,标题可填写为“Production Server”
- 点击保存
-
测试连接是否成功
执行:
ssh -T git@gitee.com -i ~/.ssh/gitee_rsa
若返回提示信息如:
Hi 用户名! You've successfully authenticated...则表示 SSH 配置成功。
✅ 提示:若希望默认使用该密钥,可在
~/.ssh/config中添加配置项:
Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/gitee_rsa
此后无需手动指定密钥即可执行 Git 操作。
克隆码云代码到服务器
SSH 认证配置完成后,即可在服务器上安全拉取代码。
创建部署目录
sudo mkdir -p /var/www/html/your-project sudo chown $USER:$USER /var/www/html/your-project cd /var/www/html/your-project
克隆项目代码
git clone git@gitee.com:your-username/your-project.git .
首次克隆会下载完整历史记录和所有文件。
更新代码(日常操作)
后续每次发布更新时,在项目根目录执行:
git pull origin main
建议先检查当前状态:
git status # 查看是否有未提交更改 git log --oneline -5 # 查看最近几次提交记录
这有助于防止意外覆盖或误操作。
构建自动化部署脚本
对于频繁迭代的项目,手动执行 git pull 易出错且效率低下,我们可以通过 Shell 脚本 + Webhook 触发机制 实现自动化部署。
编写部署脚本
创建 /opt/deploy.sh 文件:
#!/bin/bash
# 部署脚本:自动拉取代码、安装依赖、构建并重启服务
# 日志输出路径
LOG_FILE="/var/log/deploy.log"
PROJECT_PATH="/var/www/html/your-project"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始部署..." >> "$LOG_FILE"
# 进入项目目录
cd "$PROJECT_PATH" || {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 错误:无法进入项目目录" >> "$LOG_FILE"
exit 1
}
# 拉取最新代码
git pull origin main >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 错误:代码拉取失败" >> "$LOG_FILE"
exit 1
fi
# 根据项目类型执行相应构建命令
# 示例:Node.js 项目
npm install >> "$LOG_FILE" 2>&1
npm run build >> "$LOG_FILE" 2>&1
# 重启 Web 服务(视实际服务而定)
systemctl reload nginx >> "$LOG_FILE" 2>&1
# 或 systemctl restart pm2-root(Node 进程管理)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 部署完成" >> "$LOG_FILE"
设置脚本权限
chmod +x /opt/deploy.sh
配置码云 Webhook
进入码云项目页面:
- 「管理」→「Webhook」→「添加 Webhook」
- URL 填写服务器监听地址,
http://your-server-ip:8080/webhook/deploy - 触发事件选择「推送代码」
- 可选:设置 Token 验证增强安全性
启动轻量 HTTP 服务监听 Webhook
可以使用 Node.js、Python Flask 或 Nginx + FastCGI 创建一个简单的服务来接收请求并触发脚本。
示例:使用 Python Flask 快速搭建
from flask import Flask, request
import subprocess
import hmac
import hashlib
app = Flask(__name__)
SECRET_TOKEN = 'your-secret-token' # 与 Webhook 设置一致
def verify_signature(payload_body):
signature = request.headers.get('X-Gitee-Token')
return hmac.compare_digest(signature, SECRET_TOKEN)
@app.route('/webhook/deploy', methods=['POST'])
def webhook():
if not verify_signature(request.data):
return 'Forbidden', 403
subprocess.Popen(['/opt/deploy.sh']) # 异步执行,避免超时
return 'Deploy triggered.', 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
启动服务后配合 Supervisor 或 systemd 进行守护:
pip install flask nohup python webhook.py &
🔐 安全建议:应通过 Nginx 反向代理暴露服务,并启用 HTTPS 加密传输。
安全与权限管理最佳实践
自动化部署虽便捷,但也带来潜在风险,务必遵循最小权限原则,强化系统防护。
关键安全措施包括:
| 措施 | 说明 |
|---|---|
| 🛡️ 使用专用部署用户 |


