文章目录
1.前言
我之前通过coding page或者github page使用git来部署和更新网站非常方便,用上服务器后使用ftp感觉也不是很方便,就想着能不能在服务器端也使用git,毕竟git实在是太方便而且强大了。
接下来我们将以 Ubuntu 为例搭建 Git 服务器,并使用post-receive 钩子部署和更新。
2.过程
2.1Git 服务器搭建
2.1.1安装Git
确认你的系统是否已安装git,可以通过git
指令进行查看,如果没有,在命令行模式下输入sudo apt-get install git
命令进行安装。
2.1.2创建用户
sudo useradd git -m
使用该命令创建一个git用户,并同时在/home
创建一个同名文件夹。
2.1.3创建证书登录
上一步为了安全没有设置密码,故采用更安全的证书登录。可使用ssh-keygen
命令创建密钥对。
收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个。
如果没有authorized_keys文件就通过下面的命令创建它:
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
2.1.4初始化Git仓库
我们选定一个目录作为Git仓库
cd /home
mkdir gitrepo
chown git gitrepo/
cd gitrepo
git init --bare XXX.git
这样就创建好了一个空仓库,然后再将仓库归属改为git用户。
chown -R git XXX.git
2.1.5克隆仓库
git clone git@xxx.xxx.xxx.xxx:/home/gitrepo/XXX.git
在你本地电脑的合适位置运行上面的代码,将仓库克隆到本地文件夹。
2.2部署网站
2.2.1创建网站目录
例如我想把网站的文件夹放在/www/wwwroot
目录内,可通过下面的命令进行创建和克隆。
cd /www/wwwroot
mkdir www.XXX.com
git clone git@127.0.0.1:/home/gitrepo/XXX.git www.XXX.com
//如果不是同一台主机,可像上面一样使用公网ip
chown -R git www.XXX.com
2.2.2创建钩子
cd /home/gitrepo/XXX.git/hooks
touch post-receive
在post-receive中写入如下内容
#!/bin/sh
WEBROOT=/www/wwwroot/www.XXX.com
git --work-tree=$WEBROOT checkout -f master
chmod -R 777 $WEBROOT
3.结语
至此,在服务器使用Git部署和更新网站已经的流程已经结束。教程默认已经简单熟悉git的相关命令,如果对git的后续操作还有疑惑,可参考官方文档Git - Documentation (git-scm.com)