`
xiaoshenge
  • 浏览: 169757 次
  • 性别: Icon_minigender_1
  • 来自: 十堰
社区版块
存档分类
最新评论

如何在你自己的服务器搭建类似github的服务,git部署站点

阅读更多

前言:如果你使用git管理代码(不希望公开的),但是没有钱买github的服务,你可以再自己的服务器上搭建git服务器(这里只写支持ssh协议的,与github差的太远了,希望不要怪我这个标题党)。同时如果你用git部署项目的话,只需要一条pull命令就可以把测试机上的代码更新到线上(之前我还傻傻的登录线上机子然后pull,其实只需要在本地push一下就好)。

 

参考资料:《git权威指南》

http://www.ooso.net/archives/596

 

-.搭建支持ssh协议的git服务器

 

1:linux服务器上安装好git(可以参考:http://help.github.com/linux-set-up-git/)

 

2:本地安装git软件(参考:http://help.github.com 里面的set up git)

 

3:给支持git操作的用户添加认证信息,在用户家目录(~/home)新建.ssh文件夹:将本地(就你开发机子上的~/.ssh/id_rsa.pub添加到服务器上~/.ssh/authorized_keys

 

4:在linux服务器上创建项目的共享版本库(git init --bare --share;git update-server-info

 

5:然后你就可以使用了,操作跟你操作github一样( git clone 添加了认证信息的用户名@服务器域名(或者ip):/项目路径

 

二.git部署你的项目

 

1:.在你部署的机子上通过git clone把版本库中的代码克隆一份

 

2:设置部署机上的项目git配置

git config receive.denyCurrentBranch ignore

git config --bool receive.denyNonFastForwards false

 

cd .git/hooks wget http://utsl.gen.nz/git/post-update chmod +x post-update

3:设置你本地版本库

 

[remote "web"]
        url = your-ssh-username@your-host:/var/www/yoursite/

4:然后你就可以

git psuh origin master(更新到版本库)
git push web(更新到线上)

 

如果你有这个需求,同时我这篇文章误导你了(没看明白我写啥,可以email我)。

 

--------------------------------华丽的分界线(以下部分是之前的自己的备忘录)---------------------------------------------

 

我们知道git支持很多协议,这里想说的是本地和ssh。


本地就是你的代码库分别在两个盘:



在d盘的test目录生成不包含工作区的版本库

d:/test/  git init --bare

然后在e盘就可以用了

e: git clone d:/test

...

e:/test git push oringin master

在网络中就是通过ssh连接到你的服务器:



在你的服务器建立git用户:

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh

然后你自己的本地的~/.ssh/id_rsa.pub添加到服务器上~/.ssh/authorized_keys

然后用git用户创建版本库

cd /var/www/gitcode/test

git init --bare --share

git update-server-info

然后你本地就可以使用了
$ git clone git@youserver:/var/www/gitcode/test
....
$ git push origin master


然后你就可以尽情使用git了。


最后再次感谢github管理员在大过年的帮我解决问题(昨晚平安夜发的问题)。

还有这个http://progit.org/,你可以学习很多git知识。



git部署站点:

上面说到搭建git没有工作区间的版本库,当我们需要部署该代码时候。(比如web服务器也在git版本库管理机子上)


cd /var/www/test


git clone /var/www/gitcode/test


web服务器就省略了...


也许我们是本地开发,我们本地有个版本,修改完了git push origin master

然后在登陆到web服务器下面git pull,才实现代码一致,我想可能有简单办法,自己对git不熟悉,刚好看到这篇文章。http://www.ooso.net/archives/596


在web部署的库中:

git config receive.denyCurrentBranch ignore

git config --bool receive.denyNonFastForwards false


给web下面的代码加上git用户可写的权限,

 

cd .git/hooks wget http://utsl.gen.nz/git/post-update chmod +x post-update

在本地库加上

[remote "webdev"]

        url = your-ssh-username@your-host:/var/www/yoursite/


然后你就可以

git psuh origin master

git push webdev

省去了在登陆web服务器pull的步骤。



这么强大的git了这是值得学习。

 

[注]:大部分的git push失败都是有权限导致的,当push失败(除冲突除外),先去检查权限问题。

1
0
分享到:
评论
2 楼 xiaoshenge 2012-03-27  
superhanliu 写道
好文章,建议更详细一点,弄个完整的指南就更好了

恩,清明我搞一个完整的指南吧,这篇文章一开始只是我自己的备忘录。
1 楼 superhanliu 2012-03-27  
好文章,建议更详细一点,弄个完整的指南就更好了

相关推荐

    hexo+github搭建自己的博客

    仓库的名字一般设置为你在GitHub Pages上的用户名.github.io,因为GitHub Pages会默认使用这个名字的仓库来发布你的网站。记得在仓库设置里开启GitHub Pages功能,并选择源代码分支为主分支。 现在,我们可以在本地...

    个人博客系统-前后端,基于hexo搭建

    比如,安装`hexo-generator-archive`插件生成归档页面,`hexo-generator-sitemap`生成站点地图,以及`hexo-deployer-git`实现自动部署到GitHub Pages。 运行`hexo generate`命令会生成静态网页,`hexo server`则...

    Hexo + github page 实现搭建博客.zip

    "Hexo + GitHub Page 实现搭建博客"的主题旨在介绍如何利用Hexo静态站点生成器和GitHub提供的免费托管服务GitHub Page来创建一个自己的在线博客。下面将详细阐述这一过程中的关键步骤和涉及的技术知识点。 首先,...

    hexo github page本地仓库代码

    在GitHub Pages上托管Hexo博客,用户可以免费享受全球CDN分发的静态网页服务。 首先,让我们详细了解Hexo的基本使用流程: 1. **安装 Hexo**: 在本地计算机上安装Node.js环境后,可以通过npm(Node.js包管理器)...

    reposurfer.github.io

    5. **自动化工作流**:Jekyll支持通过命令行工具进行构建和部署,可以与Git集成,实现本地预览和自动发布到GitHub Pages。 **三、reposurfer.github.io-main** 1. **仓库结构**:`reposurfer.github.io-main`很...

    快速搭建自己的文档系统全部用Markdown来编写文档

    GitHub Pages提供免费的静态网页托管服务,特别适合个人文档系统的部署。步骤如下: 1. **创建GitHub账号**:如果你还没有GitHub账号,先注册一个。 2. **创建新的GitHub仓库**:命名仓库时,遵循“用户名.github....

    信息2020年5月(上)-用GitHub协同共建一个“开源”网站1

    通过以上步骤,你可以轻松地在GitHub上搭建一个开源网站,并利用FastPages实现文档的自动化转换,使得网站的更新变得更加便捷。这种做法不仅适合个人展示,也非常适用于团队协作,共同维护一个知识分享的平台。

    docsite静态站点搭建工具 v1.2.3.zip

    "docsite静态站点搭建工具 v1.2.3.zip"是一个用于快速构建和部署静态网站的工具,版本为1.2.3。该工具适用于那些希望便捷地创建、管理和发布内容,而无需复杂的服务器端技术的用户。在计算机领域,静态站点因其安全...

    Hexo在github上构建免费的Web应用 _ 粉丝日志1

    它允许开发者快速搭建个人博客,并且能够方便地部署到GitHub Pages,从而实现一个无需服务器成本的Web应用。Hexo的主要优势在于其轻量级的结构、高效的生成静态页面的能力以及丰富的主题和插件生态系统。 1. **Hexo...

    ontime-git.github.io

    7. **部署到GitHub Pages**:如果你打算将站点托管在GitHub Pages,只需将`_site`目录的内容推送到你的GitHub仓库的`gh-pages`分支即可。 在使用过程中,不断熟悉Jekyll的Markdown语法和YAML元数据,以及SCSS的编写...

    a1046700338.github.io:使用GitHub-pages通过hexo驱动部署的个人博客网站

    【描述】:这个项目是一个典型的个人博客网站,利用了GitHub Pages服务和Hexo框架来搭建。GitHub Pages是GitHub提供的一项免费服务,允许用户在GitHub上托管静态网页。Hexo则是一个快速、简洁且高效的博客框架,基于...

    dwishampster.github.io:站点

    这个标题表明我们关注的是一个个人或者组织在GitHub上建立的静态网站,通常这种类型的网站是通过GitHub Pages服务来搭建和发布的。GitHub Pages允许用户免费托管静态网页,适合展示个人作品、博客或者项目文档。 ...

    TonyTang90.github.io:Hexo和Git Page用于编写静态博客

    总的来说,TonyTang90.github.io是一个使用Hexo和GitHub Pages搭建的静态博客,利用JavaScript驱动的Hexo提供便捷的写作和管理体验,通过GitHub Pages实现免费且稳定的在线发布。这样的博客系统不仅易于维护,而且...

    xiyoung.github.io:我的博客网站由Hexo和Next开发,部署在Github Pages中

    这段描述说明了博客源代码存储在一个公开的Github仓库中,使得其他人可以访问并学习如何搭建类似博客。Github Pages是GitHub提供的一项免费服务,允许用户托管静态网站。如果要将博客部署到本地进行预览或编辑,用户...

    festline.github.io:的源代码-git source code

    例如,你可以在这里设置站点标题、作者信息、URL、主题、部署设置等。 4. **_posts目录**:Jekyll项目中的_posts目录通常存放博客文章,每篇文章都是一个单独的Markdown或Textile文件,包含日期、标题等元数据。 5. ...

    Madoka-Kaname.github.io:git page Blog by hexo主题下

    总的来说,"Madoka-Kaname.github.io:git page Blog by hexo主题下"代表了一个利用Git Page服务和Hexo静态站点生成器搭建的个人博客项目。通过学习和理解HTML、CSS以及Hexo的工作原理,不仅可以创建美观的博客,还能...

    tergytrg.github.io

    通常,这种命名方式暗示这是一个GitHub Pages站点,GitHub Pages是GitHub提供的免费静态网页托管服务。 【标签】:“HTML”表明这个项目的核心内容可能涉及到HTML(HyperText Markup Language)技术,HTML是网页...

    使用Hexo搭建自己的博客.md

    拥有一个精心维护的博客可以让你在同行中脱颖而出,提高自己的可见度。 4. **职业发展**:良好的博客内容不仅能够吸引潜在雇主的关注,还可能带来更多的合作机会和发展机遇。 #### 三、Hexo简介 - **定义**:Hexo...

Global site tag (gtag.js) - Google Analytics