当前位置:首页 > 行业动态 > 正文

怎样快速实现Git上传至Linux服务器?

通过Git将本地代码上传至Linux服务器需先在服务器创建裸仓库,配置SSH密钥实现免密连接,本地使用 git remote add关联远程仓库地址后,执行 git push推送分支,服务器通过钩子脚本可触发自动部署,确保文件权限与路径正确即可完成同步。

服务器环境配置

  1. 登录Linux服务器
    使用SSH工具连接服务器(如Terminal或PuTTY):

    ssh username@server_ip -p port_number

    若未配置SSH密钥,需通过密码验证登录。

  2. 安装Git
    更新系统并安装Git(以Ubuntu为例):

    sudo apt update && sudo apt install git -y

    验证安装:git --version

  3. 创建裸仓库
    裸仓库用于接收代码推送,不包含工作目录:

    mkdir /var/repo/my_project.git && cd /var/repo/my_project.git  
    git init --bare

    设置目录权限:

    chown -R git:git /var/repo/my_project.git

配置本地项目

  1. 初始化本地仓库
    进入项目根目录执行:

    git init
    git remote add origin ssh://git@server_ip:port/var/repo/my_project.git
  2. 生成SSH密钥对(可选)
    若未配置免密登录,生成密钥并上传公钥至服务器:

    ssh-keygen -t rsa  
    cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  3. 推送代码到服务器

    git add .  
    git commit -m "Initial commit"  
    git push origin main

自动化部署到网站目录

  1. 配置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
  2. 设置网站目录权限

    chown -R git:www-data /var/www/my_project  
    chmod -R 755 /var/www/my_project

配置Web服务器(以Nginx为例)

  1. 创建虚拟主机配置文件:

    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;
        }
    }
  2. 启用配置并重启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等文件。

引用说明
本文参考以下权威资源:

  1. Git官方文档 – git-scm.com/doc
  2. Nginx配置指南 – nginx.org/en/docs
  3. Let’s Encrypt部署实践 – certbot.eff.org
0