1

我在 VPN 主机上设置了一个新的 Ubuntu 12.10 服务器。我已经安装了所有必需的设置等Nginx, Python, MySQL。我正在配置它以使用 uWSGI 部署 Flask + Python 应用程序。它工作正常。

但是为了创建一个基本的应用程序,我使用了 Putty 工具(来自 Windows)并创建了所需的应用程序.py文件。

但是我想设置一个 Git 功能,这样我就可以将我的代码推送到所需的目录/var/www/mysite.com/app_data,这样我就不必在每次对我的网站进行一些更改时使用SSH或等等。FileZilla

由于我同时使用 Ubuntu 和 Windows 来开发应用程序,因此设置一种 Git 功能将帮助我轻松地将我的数据推送或更改到我的云服务器。

如何在 Ubuntu 中设置 Git 功能?以及如何使用诸如此类的工具访问它并部署数据GitBash

请建议

4

2 回答 2

0
  • 在您的服务器上创建一个裸存储库。
  • 将本地存储库配置为将服务器上的存储库用作远程存储库。
  • 在本地工作站上工作时,提交更改并将它们推送到服务器上的存储库。
  • 在服务器存储库中创建一个调用“git 存档”的 post-receive 挂钩,从而将您的文件传输到服务器上的某个其他目录。
于 2013-05-04T14:26:27.187 回答
0

innaM 的修改版本:

概念

拥有三个存储库

  1. devel - 在本地开发机器上开发
  2. 中央 - 存储库服务器 - 像 GitHub、Bitbucket 或其他任何东西
  3. prod - 生产服务器

然后,您将事情从开发提交到中央,并且只要您想在产品上部署,就要求产品从产品中提取数据。

“要求” prod 服务器拉取更新可以由 cron 管理(然后您必须等待片刻),或者您可以使用其他方式,例如 ssh 要求执行 git pull 并可能重新启动您的应用程序。

一步步

更详细地说,你可以这样。

在开发上准备回购

在您的开发服务器上开发和测试应用程序。

将其放入本地存储库:

$ git init
$ git add *
$ git commit -m "initial commit"

在中央服务器上创建 repo

例如 bitbucket 提供了这样的描述:https ://confluence.atlassian.com/display/BITBUCKET/Import+code+from+an+existing+project

通常,您在 Bitbucket 上创建项目,找到它的 url,然后从您的 devel repo 调用中找到它:

$ git remote add origin  <bitbucket-repo-url>
$ git push origin

将中央仓库克隆到产品服务器

登录到您的产品服务器。

转到 /var/www 并克隆形式 bitucket:

$ cd /var/www
$ git clone <bitbucket-repo-url>
$ cd mysite.com

你应该准备好你的目录。

触发对 prod3 的更新发布

有很多选择。一个是 cron 任务,它会定期调用

$ git pull

如果您的应用程序需要在更新后重新启动,那么您必须确保重新启动会发生(这应该可以使用 git log 命令,它会在更新后显示新行,或者您可以检查,如果状态码会告诉你。

就我个人而言,我会使用“单次 ssh”(您要求不使用 ssh,但我假设您要求“更简单”的解决方案,因此单次调用应该比使用 ftp、scp 或其他魔法更简单。

从您的开发机器(假设您在那里有 ssh 访问权限):

$ ssh user@prod.server.com "cd /var/www/mysite.com && git pull origin && myapp restart"

优点是,您确实控制了更新发生的时刻。

讨论

我使用类似的工作流程。

rsync似乎在许多情况下服务得足够好或更好(请注意在应用程序运行时创建的文件和应用程序中的文件,这些文件应在正在进行的版本中删除,也应在服务器上删除)。

salt(saltstack) 也可以,但需要更多的学习和设置)。

我了解到,将源代码和配置数据保存在同一个仓库中会使有时情况变得更加困难(这就是我致力于使用 salt 的原因)。

fabFabric 中的命令(基于 python)可能是最佳选择(如果在 Windows 上安装变得困难,请查看http://ridingpython.blogspot.cz/2011/07/installing-fabric-on-windows.html

于 2013-06-17T14:46:07.520 回答