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