2013-06-28 36 views
21

我想将所有我的网站移到GitHub以获得所有显而易见的好处。我不是命令行的忠实粉丝,所以我喜欢GitHub,因为它允许我避免触及所有这些。在GitHub上建立一个存储库,然后与我的电脑同步很容易。我需要能够从GitHub自动推送到网络服务器,尽管如此,当我在本地更新某个主分支时,将其与GitHub同步,它会在网站上实时显示。从谷歌搜索这个主题看来,大多数技术似乎需要命令行或看起来相当复杂。我想用大约15-20个站点(其中许多托管在来自不同客户端的不同服务器上)执行此操作。我想找到一个在我的技能范围内的选项,并且每个站点不需要2-3小时。任何人都知道设置这个最好的,最简单的方法吗?从GitHub推送到Web服务器

+5

第一步是学习如何使用命令行。你正在走向一些相当详细的模式,并且不使用命令行,你不会走得太远。另外,要小心,可能有一些文件不会放在github中(图像和文档可能不需要源代码控制)以及要部署的数据库,并且它不会像魔术一样完成......我认为你应该寻找是一个部署工具 –

+0

无论是使用OSX,你都可以考虑这个基于GUI的相当方便的工作流程(我也用这个为一些WordPress的东西):http://eppz.eu/blog/push-git-to-ftp/ – Geri

+0

您可能需要使用像https://www.heroku.com/这样的PAAS进行研究,该支持通过简单的push即git push heroku master来支持部署 –

回答

8

这是复杂的部分是webhook on GitHub

每个GitHub的仓库有每当库推送到Web服务器通信的选项。

这意味着您的网站必须有一个进程监听GitHub在收到提交时发送的JSON消息。

你可以看到那些听众的多个实例,这样webhook-deployer,与auto.php(一个PHP服务器):

<?php 

// Prevent accidental XSS 
header("Content-type: text/plain"); 

// Run the script 
if ($_POST['payload']) { 
    shell_exec("./pull.sh"); 
} 

这GitHub的项目建议,没有密码的SSH密钥,这点我同意开头(测试它)。
但是,特别是对于私人项目,最好运行ssh-agent并管理受保护的ssh密钥密码。
作为亚诺什comments

  • 如果GitHub的库是公共的,那么他甚至不需要一个。
  • 如果回购是私人的,那么他需要它,但这不应该这么轻率。如果可能的话,他应该使用关键代理。
    如果这太复杂了,那么他可以使用专用的SSH密钥而不用仅用于此部署的密码,并且该密钥永远不应该离开部署PC。
+1

您为什么鼓励没有密码的SSH密钥?如果GitHub存储库是公共的,那么他甚至不需要一个。如果回购是私人的,那么他需要它,但这不应该这么轻率。如果可能的话,他应该使用关键代理。如果这太复杂了,那么他可以使用专用的SSH密钥,而不用为此部署使用密码,并且该密钥绝不应该离开部署PC。 – janos

+0

@janos非常好的一点。我已经修改了答案,并在其中加入了你的观点,以获得更多的知名度。 – VonC

5

我知道这票是旧的,但对于那些谁找到这个不知何故,结账dploy.io。这是一个托管服务,专门用于将您的repo从GitHub/Bitbucket部署到您的服务器。它支持SFTP/FTP/S3/Heroku/SSH命令等等。

声明:我对dploy.io

2

的工作,你可能想看看这个PHP脚本:
https://github.com/JohannesHoppe/easy-git-deploy
(它做一个git克隆git的拉动,混帐推你)

几年来,我用这个脚本管理我所有的wordpress安装。

提示:如果您使用的是共享主机环境,那么脚本限制可能会破坏首次执行。在这种情况下,通过SSH登录并手动执行第一个克隆:

git clone 'https://user:[email protected]//github.com/user/repo.git' 

此处您还可以手动确认SSH密钥指纹。

第二提示:您应该使用.htaccess/.htpasswd文件保护该目录。