Git 服务器搭建

2021/1/19 git

# 系统环境

  • 操作系统:Ubuntu Server 20.04 LTS 64bit
  • git版本:2.25.1

# 安装 Git

# 使用 apt-get 安装
lighthouse@VM-0-5-ubuntu:~$ sudo apt-get install git

# 查看版本
lighthouse@VM-0-5-ubuntu:~$ git --version
git version 2.25.1
1
2
3
4
5
6

# 创建用户

# 查看已创建的用户列表
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
# 返回的结果
root|0|0
sync|4|65534
tss|106|111
pollinate|110|1
ubuntu|1000|1000
lxd|998|100
lighthouse|1001|1001

# 创建用户并创建此用户的文件夹,若仅需创建用户,请使用 useradd
sudo adduser 用户名
#... 按照提示配置姓名、邮箱、密码等即可

# 删除用户
sudo userdel 用户名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 创建仓库

注意:git init --bare用于初始化服务器仓库,git init用于初始化本地仓库

# 进入home文件夹
cd /home
# 创建仓库文件夹
sudo mkdir project.git
# 初始化仓库
git init --bare project.git
1
2
3
4
5
6

# 本地使用

# 同步本地仓库,之后输入密码即可
git clone Git用户名@服务器IP地址:/home/project.git
1
2

# 使用hook实现自动部署

  1. 进入hooks文件夹

    cd /home/project.git/hooks
    
    1
  2. 创建post-update或者post-receive

    # 创建并编辑
    sudo vim post-update
    
    1
    2
  3. 编辑post-update

    I进入编辑,Esc退出编辑,退出编辑后输入:wq保存并退出文件编辑

    #!/bin/sh
    # 项目名
    PROJECT_NAME=project
    # 打包后的包名
    PROJECT_DIST=dist
    # 项目路径,临时存放git的代码路径和仓库地址
    PROJECT_DIR=/home/$PROJECT_NAME
    # 存放打包后的包文件路径
    PACKAGE_DIR=/home/html/$PROJECT_NAME
    
    
    if [ -d $PROJECT_DIR ]; then
            rm -rf $PROJECT_DIR;
    fi
    mkdir $PROJECT_DIR
    chmod -R 777 $PROJECT_DIR
    
    if [ -d $PACKAGE_DIR ]; then
            rm -rf $PACKAGE_DIR
    fi
    
    cd $PROJECT_DIR
    unset GIT_DIR # 必须重置,否则无法进入文件夹
    
    git init
    git remote add origin $PROJECT_DIR.git
    git pull origin master
    
    # 安装依赖,并打包,将打包文件放入nginx配置的路径中
    npm install
    npm run build
    mv $PROJECT_DIST $PACKAGE_DIR
    
    cd $PACKAGE_DIR
    unset GIT_DIR
    
    rm -rf $PROJECT_NAME
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
  4. 修改post-update权限(赋予执行权限)

    sudo chmod +x post-update
    
    1
  5. 完成之后,本地往服务器推送(push)代码,即可触发post-update文件内的命令