推送到webroot上面的托管项目

时间:2014-03-26 03:40:42

标签: git cakephp dreamhost

我在CakePHP上托管了DreamHost个应用程序 - 并在我的MacBook上本地克隆了它。

我正在尝试设置我的环境,以便我可以在MacBook上进行开发并根据需要推送到托管网站 - 但无法弄清楚如何设置git从本地推送到远程当远程文件高于webroot

如何设置我的本地git以在托管应用上推送到webroot上方的文件?

谢谢!

4 个答案:

答案 0 :(得分:2)

  

但是当远程文件位于webroot之上时,无法弄清楚如何设置git从本地推送到远程。

要设置回购,您需要一个中间回购作为参考点。现在,此回购可能位于githubbitbucket等托管网站上,也可能是您服务器本身的bare repo。 (注意 - bitbucket为少数用户提供免费私人回购

bare repo的优点是,您可以规避与在服务器,在线服务和开发机器之间设置ssh机制相关的任何问题。如果您的服务器出现故障,缺点是丢失服务器上的所有代码,尽管您的开发机器上仍然会有一份副本,因此不会全部丢失。

第1步

因此,让我们假设你继续推进一个简单的回购。如果您将使用bitbucket / github,请忽略此步骤。

为此,我们需要在您的服务器上创建一个裸仓库:

ssh user@myserver
cd /some/isolated/location
git init --bare intermediate_repo.git

这将创建一个路径为/some/isolated/location/intermediate_repo.git的中间仓库。

接下来,cd在这个裸仓库中,并运行以下命令,以便您可以通过ssh访问repo git server

cd intermediate_repo.git
mv hooks/post-update.sample hooks/post-update
chmod a+x hooks/post-update
git update-server-info

所以现在你的bare repo很适合作为中间回购,我们可以将其作为remote添加到其他存储库中。

第2步

现在在dev机器中,添加一个遥控器(Step2)

git remote add intermediate ssh://user@myserver:/some/isolated/location/intermediate_repo.git

第3步

server s repo上添加远程

ssh user@myserver
cd /repo/location
git remote add intermediate /some/isolated/location/intermediate_repo.git

第4步

所以现在你很高兴去()。

您可以从开发机器中按照以下方式推送代码

git push intermediate branchname

将其拉入您配置的代码仓库

ssh -t user@myserver "cd /repo/location && git pull intermediate branchname"

PS

如果您选择安装bitbucket,请跳过步骤1,然后在步骤2&在上面的3中,将url / path替换为bitbucket ssh url。查看this bitbucket link以使用bitbucket设置ssh访问权限。此外,在生成ssh密钥时,生成它们没有密码,否则你可能需要调试ssh和passphrases周围的更多东西。

您可以在Views位置使用/repo/location/Views文件夹,您可以配置该文件夹以进行网络安全访问。

答案 1 :(得分:1)

这是一个很好的问题,我能为您提供的最好的解决方法,但它对我们的团队有用。您需要使用第三方服务(如GitHub或BitBucket)托管您的代码才能实现此目的。

我们在本地编写/测试代码,并推送到GitHub。当我们准备部署时,我们会按照以下几行运行脚本:

echo "Connecting to mysite.com";
# DocumentRoot is /var/www/site
ssh -t myUser@myIPAddress "cd /var/www; git pull;" 

这通过ssh连接到服务器,并执行两个命令,一个cd到git目录,另一个拉动更改。 git pull完成后,连接退出。 (-t标志强制伪tty分配,允许我们执行这两个命令。)

我们创造了一台机器' GitHub上的用户沿着here概述的线路,因此我们可以使用基于密钥的身份验证,而不用担心丢失密码。

这有帮助吗?我还可以添加/解释什么?

答案 2 :(得分:1)

如果您有ssh访问权限,可以将您的仓库推送到服务器到您选择的目录,然后从Web根文件夹创建符号链接到该目录中的views文件夹或编写脚本和rsync他们。这个脚本可以在远程git repo上的post-hook中实现。

答案 3 :(得分:0)

您是否使用SSH调查git push? SSH可以访问您的帐户可以访问的主机上的任何位置。我们一直用它来推动webroot。