使用Git工具方便的部署网站到远程服务器上。

本地安装Git

没特殊需求直接官网下载相应版本一路next即可

远程服务器(CentOS为例)安装Git

1. 安装 git,执行如下命令

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git 

2. 创建专用用户并配置仓库

useradd git
passwd git  #直接输入密码并确认

先用 su git 命令切换到刚创建的用户

cd /home/git/
mkdir -p projects/web    #网站项目的目录,与Nginx目录一致
mkdir repos && cd repos
git init --bare web.git    #初始化创建一个仓库

创建hook函数连接项目地址与Git仓库地址

cd web.git/hooks
vi post-receive 

输入以下内容:

#!/bin/sh
git --work-tree=/home/git/projects/web --git-dir=/home/git/repos/web.git checkout -f

添加完毕后修改权限

chmod +x post-receive

exit 命令退出到root账户

chown -R git:git /home/git/repos/web.git

至此,远程仓库创建完毕

3. 设置用户权限和公钥

为了安全禁用git用户的Shell 登录权限,执行以下命令:

cat /etc/shells    #查看git-shell是否在登录方式里面
which git-shell    #查看路径
vi /etc/shells   #添加which git-shell中显示的路径,通常为 /usr/bin/git-shell

修改/etc/passwd中的权限,将git:x:1000:1000::/home/git:/bin/bash 修改为 git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell

接下来配置公钥,避免每次上传都要输入密码,本地使用git进入cd /.ssh目录,输入

ssh-keygen -t rsa -C "your_email@youremail.com"    #一般备注为自己的邮箱

将生成公钥上传到服务器上的/home/git/.ssh目录

同步本地项目到远程仓库

进入要同步的本地项目路径,例如/public

cd public/
git init    #初始化仓库
git remote add [分支名称] git@server_ip:/home/git/repos/web.git    #首先关联本地仓库和远程仓库

若修改了远程服务器端口(例如1234)则使用以下命令

git remote set-url [分支名称] ssh://git@server_ip:1234/home/git/repos/web.git

提交项目

git status    #查看当前本地项目的变化情况
git add .    #要提交文件夹的名称,"."表示将所有文件添加到跟踪列表
git commit -m "first commit"    #提交信息
git pull --rebase [分支名称] master    #获取远程库与本地同步合并,防止多人项目出错
git push -u [分支名称] master