私有 GitHub 仓库部署到个人服务器实战 (2026-02-02 15:52)
本文最后更新于 2026-02-02,文章内容可能已经过时。
将私有 GitHub 仓库部署到个人服务器实战
在开发过程中,我们经常需要将代码从私有 GitHub 仓库部署到个人服务器进行测试或生产。本文将详细介绍两种常见的部署方式:通过 Git 直接拉取部署,以及通过 Docker 容器化部署。无论哪种方式,我们都需要先处理好 GitHub 私有仓库的认证问题,即创建 GitHub Personal Access Token (PAT)。
一、创建 GitHub Personal Access Token (PAT)
为了让服务器能够访问您的私有 GitHub 仓库,我们需要创建一个 Personal Access Token (PAT)。这是一个比使用您的 GitHub 密码更安全、更灵活的认证方式。
-
登录 GitHub
访问 GitHub 并登录您的账号。 -
进入开发者设置
点击右上角您的头像 ->Settings(设置) -> 左侧菜单栏Developer settings(开发者设置)。 -
生成新的令牌
在Developer settings页面,点击左侧Personal access tokens(个人访问令牌) ->Tokens (classic)->Generate new token(生成新令牌)。 -
配置新令牌
- Note (备注): 为您的令牌起一个有意义的名字,例如 "Server_Deployment_Token"。
- Expiration (有效期): 选择一个合适的有效期。为了安全,建议选择最短的可用时间或自定义日期,并在过期前及时更新。
- Select scopes (选择范围): 这是非常关键的一步。
- 如果您只需要拉取私有仓库代码,勾选
repo->repo:status(访问仓库状态),repo_deployment(访问部署状态),public_repo(访问公共仓库),repo:invite(邀请协作者),security_events(访问安全事件)。 - 最常用且安全的做法是仅勾选
repo下的repo(Full control of private repositories),它包含了访问私有仓库的所有权限。 - 注意:根据您的具体需求,仅授予最小权限原则。例如,如果仅仅是拉取代码,只勾选
repo即可。
- 如果您只需要拉取私有仓库代码,勾选
-
生成令牌并保存
点击最下方的Generate token(生成令牌)。
重要:生成的令牌只会显示一次,请务必立即复制并妥善保存。一旦离开页面,您将无法再次看到它。
您的 PAT 看起来会像这样:ghp_XXXXXXXXXXXXXXX。
二、服务器环境准备
在部署之前,您的服务器需要进行一些基本的配置和安装必要的工具。这里以 Ubuntu/Debian 系统为例。
1. 更新系统
为了确保所有软件包都是最新的,首先更新您的服务器:
sudo apt update
sudo apt upgrade -y
2. 安装 Git
Git 是我们从 GitHub 拉取代码的必要工具。
sudo apt install git -y
安装完成后,您可以验证 Git 是否成功安装:
git --version
3. 安装 Docker (如果使用 Docker 部署)
如果选择 Docker 部署方式,您需要安装 Docker 引擎。
卸载旧版本 (如果存在)
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin apt-transport-https ca-certificates curl gnupg lsb-release; do sudo apt remove $pkg; done
安装 Docker Engine
# 添加 Docker 的官方 GPG 密钥
sudo apt update
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker 仓库
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
# 安装 Docker Engine, containerd 和 Docker Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
配置 Docker 用户权限 (可选但推荐)
为了避免每次运行 Docker 命令都使用 sudo,您可以将当前用户添加到 docker 用户组:
sudo usermod -aG docker ${USER}
# 退出并重新登录,或重启终端使更改生效
# exit
验证 Docker 安装:
docker run hello-world
三、Git 部署方式
这种方式直接将代码克隆到服务器上,适用于简单的应用部署。
1. 克隆私有仓库
使用您之前生成的 GitHub PAT 来克隆私有仓库。
git clone https://<YOUR_GITHUB_PAT>@github.com/<YOUR_USERNAME>/<YOUR_PRIVATE_REPO>.git
替换以下内容:
<YOUR_GITHUB_PAT>: 您的 GitHub Personal Access Token。<YOUR_USERNAME>: 您的 GitHub 用户名。<YOUR_PRIVATE_REPO>: 您的私有仓库名称。
例如:git clone https://ghp_XXXXXXXXXXXXXXXXX@github.com/yourname/my-private-app.git
2. 进入项目目录并安装依赖
cd <YOUR_PRIVATE_REPO>
# 根据您的项目类型安装依赖,例如 Node.js 项目:
npm install
# Python 项目:
pip install -r requirements.txt
3. 运行您的应用
根据您的应用类型运行程序。例如:
# Node.js 项目
npm start
# Python Flask/Django 项目
python app.py
您可能需要使用 nohup 或 pm2 等工具来在后台运行应用,并配合 Nginx 或 Caddy 进行反向代理。
4. 更新部署
当您的 GitHub 仓库代码有更新时,在服务器上进入项目目录并拉取最新代码:
cd <YOUR_PRIVATE_REPO>
git pull
# 重新安装/构建依赖(如果需要)
# npm install
# ...
# 重启您的应用
# 例如,如果您使用 pm2: pm2 restart <app_name>
四、Docker 部署方式
使用 Docker 进行部署可以更好地隔离应用环境,简化部署流程。
1. 在项目根目录创建 `Dockerfile`
Dockerfile 是一个文本文件,包含构建 Docker 镜像的指令。以下是一个示例 Dockerfile,适用于一个简单的 Node.js 应用。您可以根据自己的项目类型进行修改。
# 使用官方 Node.js 18 作为基础镜像
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 将 package.json 和 package-lock.json (或 yarn.lock) 拷贝到工作目录
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 将所有本地代码拷贝到工作目录
COPY . .
# 暴露应用监听的端口
EXPOSE 3000
# 定义容器启动时运行的命令
CMD ["npm", "start"]
说明:
FROM: 指定基础镜像。WORKDIR: 设置工作目录。COPY: 复制文件。RUN: 执行命令(在镜像构建时)。EXPOSE: 声明容器运行时会监听的端口。CMD: 容器启动时运行的命令(只能有一个)。
2. 构建 Docker 镜像
在服务器上,进入您的项目根目录,也就是 Dockerfile 所在的目录。
cd <YOUR_PRIVATE_REPO>
# 构建镜像
# 使用您之前生成的 GitHub PAT 作为构建参数,确保 Docker 构建时能访问私有仓库(如果Dockerfile里有需要)。
# 通常情况下,如果Dockerfile只COPY本地文件,则不需要在构建时传递PAT。
# 如果您的Dockerfile内部有git clone或其他需要认证的操作,才需要传递。
# 例如:
# docker build --build-arg GITHUB_PAT=<YOUR_GITHUB_PAT> -t my-private-app:latest .
# 或者,如果Dockerfile中不直接访问github,只需要简单构建:
docker build -t my-private-app:latest .
-t my-private-app:latest: 给镜像命名并打标签。.: 表示 Dockerfile 在当前目录。
3. 运行 Docker 容器
构建完成后,您可以运行容器:
docker run -d -p 80:3000 --name my-private-app-container my-private-app:latest
-d: 后台运行容器。-p 80:3000: 将服务器的 80 端口映射到容器的 3000 端口(根据您的 EXPOSE 端口调整)。--name my-private-app-container: 给容器命名。
4. 更新 Docker 部署
当您的 GitHub 仓库代码有更新时,需要重新构建和运行 Docker 容器:
# 1. 停止并删除旧容器
docker stop my-private-app-container
docker rm my-private-app-container
# 2. 拉取最新代码
cd <YOUR_PRIVATE_REPO>\ngit pull
# 3. 重新构建镜像
docker build -t my-private-app:latest .
# 4. 运行新容器
docker run -d -p 80:3000 --name my-private-app-container my-private-app:latest
总结
本文详细介绍了将私有 GitHub 仓库部署到个人服务器的两种方法:Git 直接部署和 Docker 容器化部署。无论您选择哪种方式,关键都在于正确地创建和使用 GitHub Personal Access Token 来进行认证。Docker 部署提供了更好的环境隔离和可移植性,而 Git 直接部署则更为简单快捷。根据您的项目需求和复杂度,选择最适合您的部署策略。
希望这篇指南对您有所帮助!🦊