如何设置Git将python应用程序文件部署到Ubuntu服务器?

如何设置Git将python应用程序文件部署到Ubuntu服务器?,python,windows,git,ubuntu,Python,Windows,Git,Ubuntu,我在VPN主机上安装了一个新的Ubuntu12.10服务器。我已经安装了所有必需的设置,如Nginx、Python、MySQL等。我正在配置它,以便使用uWSGI部署Flask+Python应用程序。工作正常 但为了创建一个基本的应用程序,我使用Putty工具(从Windows)创建了所需的应用程序.py文件 但我想设置一个Git功能,这样我就可以将代码推送到所需的目录,比如/var/www/mysite.com/app_data,这样我就不必每次对网站进行一些更改时都使用SSH或FileZil

我在VPN主机上安装了一个新的Ubuntu12.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
等工具访问和部署数据

请建议

  • 在服务器上创建一个裸存储库
  • 将本地存储库配置为将服务器上的存储库用作远程存储库
  • 在本地工作站上工作时,将更改发送到服务器上的存储库中
  • 在服务器存储库中创建一个post-receive钩子,该钩子调用“git-archive”,从而将文件传输到服务器上的其他目录

innaM的修改版本:

概念 有三个存储库

  • 在本地开发机器上开发
  • 中央存储库服务器-如GitHub、Bitbucket或任何其他
  • 生产服务器
  • 然后,您将事情从devel提交到central,并在您想要部署到prod上时,立即要求prod从prod中提取数据

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

    一步一步地 在更多细节上,你可以这样做

    在devel上准备回购协议 在devel服务器上开发并测试应用程序

    将其放入本地存储库:

    $ git init
    $ git add *
    $ git commit -m "initial commit"
    
    在中央服务器上创建repo 例如,bitbucket提供了以下描述:

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

    $ git remote add origin  <bitbucket-repo-url>
    $ git push origin
    
    如果您的应用程序需要在更新后重新启动,那么您必须确保重新启动会发生(这应该可以使用git log命令,它将在更新后显示新行,或者您可以检查,如果状态代码会告诉您)

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

    从您的devel机器(假设您有ssh访问权限):

    优点是,您可以控制更新发生的时刻

    讨论 我使用类似的工作流程

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

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

    我了解到,将源代码和配置数据保存在同一个repo中会使某些情况变得更加困难(这就是为什么我正在使用salt)

    fab
    来自Fabric(基于python)的命令可能是最好的选择(如果在Windows上安装变得困难,请参阅

    $ cd /var/www
    $ git clone <bitbucket-repo-url>
    $ cd mysite.com
    
    $ git pull
    
    $ ssh user@prod.server.com "cd /var/www/mysite.com && git pull origin && myapp restart"