怎样快速实现Git上传至Linux服务器?
- 行业动态
- 2025-04-21
- 5
通过Git将本地代码上传至Linux服务器需先在服务器创建裸仓库,配置SSH密钥实现免密连接,本地使用
git remote add
关联远程仓库地址后,执行
git push
推送分支,服务器通过钩子脚本可触发自动部署,确保文件权限与路径正确即可完成同步。
服务器环境配置
登录Linux服务器
使用SSH工具连接服务器(如Terminal或PuTTY):ssh username@server_ip -p port_number
若未配置SSH密钥,需通过密码验证登录。
安装Git
更新系统并安装Git(以Ubuntu为例):sudo apt update && sudo apt install git -y
验证安装:
git --version
。创建裸仓库
裸仓库用于接收代码推送,不包含工作目录:mkdir /var/repo/my_project.git && cd /var/repo/my_project.git git init --bare
设置目录权限:
chown -R git:git /var/repo/my_project.git
配置本地项目
初始化本地仓库
进入项目根目录执行:git init git remote add origin ssh://git@server_ip:port/var/repo/my_project.git
生成SSH密钥对(可选)
若未配置免密登录,生成密钥并上传公钥至服务器:ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
推送代码到服务器
git add . git commit -m "Initial commit" git push origin main
自动化部署到网站目录
配置Git钩子(Hook)
进入服务器仓库的hooks
目录,创建post-receive
脚本:cd /var/repo/my_project.git/hooks nano post-receive
添加以下内容(修改
/var/www/my_project
为实际网站目录):#!/bin/bash TARGET="/var/www/my_project" GIT_DIR="/var/repo/my_project.git" BRANCH="main" while read oldrev newrev ref do if [[ $ref = refs/heads/$BRANCH ]]; then echo "Deploying $BRANCH to $TARGET..." git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f # 可选:执行额外命令(如安装依赖) cd $TARGET && npm install && npm run build fi done
赋予脚本执行权限:
chmod +x post-receive
设置网站目录权限
chown -R git:www-data /var/www/my_project chmod -R 755 /var/www/my_project
配置Web服务器(以Nginx为例)
创建虚拟主机配置文件:
sudo nano /etc/nginx/sites-available/my_project
添加基础配置:
server { listen 80; server_name your_domain.com; root /var/www/my_project; index index.html; location / { try_files $uri $uri/ =404; } }
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/my_project /etc/nginx/sites-enabled/ sudo systemctl restart nginx
常见问题与优化方案
- 权限问题:若部署失败,检查目录所有权(
git
用户需拥有网站目录写入权限)。 - 钩子未触发:确认
post-receive
脚本权限为可执行(chmod +x
)。 - HTTPS支持:使用Let’s Encrypt免费证书配置SSL:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain.com
- 敏感文件隔离:通过
.gitignore
排除node_modules
、.env
等文件。
引用说明
本文参考以下权威资源:
- Git官方文档 – git-scm.com/doc
- Nginx配置指南 – nginx.org/en/docs
- Let’s Encrypt部署实践 – certbot.eff.org