我在本地电脑和带有ssh的web服务器上都有一个Web应用程序。问题是,我正在本地开发该应用程序,并且我想通过其他方式将其与服务器同步,而不是通过ftp复制文件。是否有其他方法?git?
我在本地电脑和带有ssh的web服务器上都有一个Web应用程序。问题是,我正在本地开发该应用程序,并且我想通过其他方式将其与服务器同步,而不是通过ftp复制文件。是否有其他方法?git?
评论更新:
无论你的网站是用什么语言编写的,你都必须确保所有更改都能够到达生产环境。这通常是一个多步骤的过程。Fabric专门设计了封装这些步骤并将它们简化为一个命令。而Pip和virtualenv则更加针对Python,可以捕获其他库的变化等,但Ruby/Rails也可能有相应的工具。目标是使用一个单一命令从开发环境转移到预发布环境,再使用另一个单一命令从预发布环境转移到生产环境。通常我会建议在您的开发环境中使用git
。
通过指定要构建的标签(以使您的构建经过审核且可重复),您的构建将构建一些可部署的内容(例如 .tar.gz
),然后您可以使用ssh
/scp
将其复制到您的服务器上。
我不建议直接从开发环境进行同步。因为您需要用于开发、实验、支持工具和文件等方面。
Capistrano最初是专门用于部署Rails应用程序的,但现在已被扩展为可部署任何类型的Web应用程序(称为无需Rails部署)。
一旦设置完成,工作流程如下:
cap deploy
。第3步是Capistrano发挥魔力的地方,也是它被开发出来的目的。Capistrano会从代码库中检出新的代码副本,将该代码复制到一个新的"发布"目录(类似于20091028230834
这样的时间戳),最后将目录current
链接到您的最新副本。在此过程中,如果存在迁移,则可能会运行迁移。最终您将得到一个像这样的目录结构:
...deploy-to-path/current -> ./releases/20091028230834
...deploy-to-path/releases/
20091028230834/
20091028225623/
... # You can configure the number of releases kept after deployment.
...deploy-to-path/shared/
cached-copy/ # A cached copy of your repository, which Capistrano updates
... # Any shared data, like file uploads, for your application.
deploy.rb
),其中包含以下信息:
capify
(给自己默认文件),并在测试服务器上(或服务器上的测试目录)上运行它,以查看它的作用。一旦您让它部署某些内容,您可以自定义它以执行额外的移动/符号链接操作。你还应该考虑一下你想要如何发布东西...不断推送变化到生产环境可能会使跟踪问题变得非常困难。
正如其他人所提到的,你可以使用 Git 同步来管理你的代码。当你有一组新的更改认为已经准备好时,这些更改可以放在一个分支中,或者至少标记它们,以便知道一组更改一起发送了什么。
然后,你可以将这些更改同步到一个暂存目录,并在那里验证完成后切换到它们。