在服务器使用Git部署和更新网站

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)

GISer, a novice who is learning hard
博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 ( CC 4.0 BY-SA ) 协议
本文永久链接是: https://blog.manchan.top/post/Getting-Git-on-a-Server/