我希望将所有网站都移到GitHub,以获得所有明显的好处。我不是命令行的忠实粉丝,所以我喜欢GitHub,因为它让我可以避免触及所有这些。在GitHub上设置存储库,然后将其与我的计算机同步很容易。我需要能够自动从GitHub推送到网络服务器,所以当我在本地更新主分支,与GitHub同步时,它会在网站上运行。从谷歌搜索主题似乎大多数技术要么需要命令行或看起来相当复杂。我想用大约15-20个站点(其中许多站点托管在来自不同客户端的不同服务器上)执行此操作。我想找到一个在我的技能范围内的选项,每个站点不需要2-3个小时。有人知道设置它的最好,最简单的方法吗?
答案 0 :(得分: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密钥密码
正如janos comments:
- 如果GitHub存储库是公共的,那么他甚至不需要一个。
- 如果回购是私有的,那么他需要它,但这不应该这么简单。如果可能,他应该使用密钥代理 如果这太复杂了,那么他就可以使用专用的SSH密钥而不使用密码短语来进行此部署,并且该密钥永远不会离开部署PC。
答案 1 :(得分:5)
我知道这张票很旧,但对于那些以某种方式找到这张票的人,请结帐dploy.io。它是一个托管服务,专门用于将您的repo从GitHub / Bitbucket部署到您的服务器。它支持SFTP / FTP / S3 / Heroku / SSH命令等。
免责声明:我在dploy.io上工作
答案 2 :(得分:2)
您可能想看看这个PHP脚本:
https://github.com/JohannesHoppe/easy-git-deploy
(它有一个git clone,git pull,git push for you)
几年以来,我用该脚本管理我的所有wordpress安装。
提示:如果您使用的是共享托管环境,则脚本限制可能会破坏第一次执行。在这种情况下,通过SSH登录并手动执行第一次克隆:
git clone 'https://user:passwort@//github.com/user/repo.git'
您也可以在此手动确认SSH密钥指纹。
第二个提示:您应该使用.htaccess / .htpasswd文件保护目录。