实战:用 git 搭建静态网站

作者: 余歌_非鱼 | 来源:发表于2014-10-20 13:17 被阅读429次

    转载自[http://typeof.net/m/static-website-using-git-in-actions.html]

    在 Github Pages 火起来之后,很多人写博客都开始用全静态了。(什么?评论?disqus 啊!)这种静态站使用 git 管理网站内容,在本地(或者在服务器端使用 Jekyll)生成页面内容后,用 git 推送到服务器上完成部署。这种设计让我等死 Nerd 感觉很舒服,毕竟一切尽在掌握。搭建一个这样的服务器并不困难,趁着最近入手 42qu 的服务器,就在这里放个教程给和我一样的神奇生物好了。

    装 git 这个工作不复杂,我的服务器使用 Centos 6.2,yum install git 就搞定了。

    接下来是安装 git 的权限管理系统 gitosis 使服务器支持推送。这个步骤不在赘述,网上内容多得是。我假定你放网站的 repo 位于 /home/git/repositories/site.git。

    然后是把 git 用户和网页服务器的用户(我这里是 nginx)加入同一个组里。这对之后 git 和网站目录同步至关重要,否则会有非常麻烦的权限问题。

    sudo groupadd web
        sudo usermod -a -G web git
        sudo usermod -a -G web nginx
    

    首先我们需要建立一个目录来放置网站,接下来把它的从属组改成上面建立的 web 组并且设置组的写权限:

    sudo mkdir /var/www/site
        sudo chmod g+w /var/www/site
        sudo chgrp web /var/www/site
    

    接着找到你的网站对应的 repo(比如 /home/git/repositories/site.git),编辑里面的 hooks/post-receive 文件:

    #!/bin/bash
        
    
        
    while read oldrev newrev ref
        
    do
        
        branch=`echo $ref | cut -d/ -f3`
        
    
        
        if [ "master" == "$branch" ]; then
        
            git --work-tree=/var/www/site checkout -f $branch
        
            echo 'Changes pushed live.'
        
        fi
        
    
        
    done
    

    这一段脚本是用 git 用户运行的,所以上面才需要给 /var/www/site 设置权限还要把 git 加组。

    好了,现在可以推更新了:

    git push origin master
    

    如果看到“Changes pushed live.”,你就成功了。把 nginx 的目录设置成 /var/www/site,看看效果如何?

    相关文章

      网友评论

        本文标题:实战:用 git 搭建静态网站

        本文链接:https://www.haomeiwen.com/subject/umaptttx.html