Linux:将文件上传到实时服务器 - 如何自动化流程?

时间:2011-07-15 16:57:43

标签: linux ssh scp

我正在我的本地机器上开发(apache2,php,mysql)。当我想将文件上传到我的实时服务器(nginx,mysql,php5-fpm)时,我首先备份我的www文件夹,提取数据库,scp一切到我的服务器(这很乏味,因为它受opiekey保护),记录我自己在,将文件从我服务器上的主目录复制到我的www目录,如果我很幸运,文件权限和其他一切都可以解决,我可以在线查看更改。如果我不走运,我将不得不研究出了什么问题。

今天,我只更改了一个文件,并且只需要为此文件完成整个过程。你可以想象这有多烦人。有更快的方法吗?一种自动化的方法吗?也许像SVN中的“提交”之类的东西,然后飞走?

你们如何处理这些类型的事情?

PS:我对这一切都非常新,所以请耐心等待!例如,我总是将文件复制到服务器上的主目录中,因为scp似乎无法将它们直接复制到/ var / www文件夹中?!

3 个答案:

答案 0 :(得分:2)

有很多实用程序可以帮到你。如果您了解python,请尝试fabric。如果你了解红宝石,你可能更喜欢capistrano。它们允许您编写本地和远程操作的脚本。

如果您有一个服务器场要处理,那么这两个服务器可能无法以您想要的规模运行。对于10多台服务器,请查看chefpuppet以完全管理您的服务器。

您是从本地签出部署,打包源(我的首选解决方案),远程存储库还是完全不同的东西取决于您。什么对你有用是好的。只需确保您的部署是可重现的(也就是说,您可以随时说“5分钟前它没有被破坏,我想拥有现在我5分钟前所拥有的东西”)。无论你使用哪种版本控制都比没有版本控制更好(标记版本可能是最舒服的)。

答案 1 :(得分:1)

我认为“SVN”方法非常接近你真正想要的。你创建一个每隔几分钟就会运行“svn update”的cron作业(如果使用mercurial,则为hg pull -u,类似于git)。另一个选择是使用dropbox(我们有时会将它用于我们的Web服务器) - 这个很容易setyp并与非开发人员(如UI设计师)分享......

答案 2 :(得分:0)

rsync只会在本地计算机和远程计算机之间发送更改。它将是scp的替代品。您可以了解如何设置它以满足您的需求。

您无法复制到/ var / www,因为您用于登录复制会话的凭据无权写入/ var / www。假设您具有root访问权限,请将/ var / www(或更好的子目录)上的组(chown)更改为您的组,并更改权限以允许您的组写访问权限(chmod g + w)。

rsync非常轻量级,因此应该很容易上手。