GIT和Django项目

我有两台服务器,一台Dev服务器和一台Production服务器。 Production服务器运行一个活的Django站点,而Dev服务器有一个Django项目的副本。 我使用Dev服务器在Django站点上工作,进行改进,修复错误等。一旦我对Dev版本的工作方式感到满意,我将从Dev服务器移动整个Django目录,并replaceProduction上的相同目录服务器。 两台服务器不在同一个局域网中,所以这个过程并不简单。

目前为止我还有一些问题。

  1. 移动整个目录是费力和费时的
  2. 如果我只修改了一些文件,甚至更换一些文件比整个目录更繁琐,因为项目越来越大,我担心我会错过一些东西
  3. 移动东西后,我经常遇到许可问题
  4. 这是非常低效的,而且由于时间不够,我没有想出一个新的方法。 现在只是失控,我需要解决这个问题。

我想我需要移动到这个过程的GIT存储库。 但我的问题是,我将如何设置这一切呢?

  • 我是否将Production服务器上的存储库托pipe起来,从Dev服务器上拉出来,做功,然后提交? 然后,我会从Production服务器(相同的服务器回购托pipe)拉运行当前的工作版本?
  • 我是否在Dev Server上托pipe回购,从同一台服务器上提取回购,然后将Production版本拖到Production服务器上?
  • 我应该在不同于Production服务器和Dev服务器(第三台服务器)的服务器上托pipe回购吗?
  • Django有什么特别的考虑和回购,我需要担心?

谢谢您的帮助 :)

我与Django开发和GIT合作了18个月。 在这期间,我试图托pipe自己的git仓库,今天我使用GITHUB的工作。 这是一个小的成本更容易和节省时间。 看看我的考虑:

  • 除非你是具有GIT经验的Linux专家,否则在GITHUB主持你的项目会更便宜(考虑到时间就是金钱)。 他们有免费的GIT托pipe公共项目(任何人都可以克隆/分叉)。 他们也有(廉价)付费的GIT托pipe,如果你想有一个私人存储库。

  • GITHUB(或其他GIT托pipe公司)将使设置储存库变得更加容易,因此您可以学习在使用GIT时使用GIT(换句话说,由于Web界面,您不必学习比GIT命令更多的内容在使用GIT之前的行语法)

  • GIT是一个分布式控制版本系统。 这意味着每个放置版本库的地方都会包含所有代码的完整历史logging,所以如果您select托pipe自己的GIT服务器,则将DEV或PRD服务器放在一起并不重要。 其实你可以把它放在自己的笔记本上,不用担心丢失数据,因为你也有DEV和PRD的副本。 请记住,您必须从您的GIT服务器上启动您的DEV和您的PRD服务器上的PULL。

  • 使用FABRIC脚本可以很容易地从您自己的机器更新DEV或PRD服务器。 所有你需要做的是在你的fabfile.py中有这样的东西:

     def deploy_production():
        用cd('/ home / my_user / my_project'):
            运行(“git pull”)#更新到最新版本
            带有前缀('source〜/ .virtualenvs / my_env / bin / activate'):
                运行('./ manage.py collectstatic --noinput')
     def production():
         “””
        将环境设置为生产
         “””
         continue = confirm('更新生产环境,继续?',default = False)
        如果不能继续:
            中止('再见 - 谢谢你没有做什么生产!')
         env.hosts = ['my_server.my_domain.com.br']
         env.key_filename = ['〜/ amazon / my_ssh_key.pem']
         env.user ='ubuntu'

     #使用它来运行结构更新程序:
    晶圆厂生产deploy_production
  • 使用virtualenv和virtualenvwrapper
  • 在名为“.gitignore”的项目根目录中创build一个文件,并将不想通过GITpipe理的文件(或文件模式)放在如下位置:* .pyc,.idea,.DS_Store(每行一个)

希望它有帮助,好看!

如果您发现这些答案有用,请分配点数。

我build议你像上面提到的那样使用git之类的源代码控制系统,在本地做你的工作,然后看一下Fabric的部署。 您可以使用git checkout-index将代码在本地(通过fabfile中的代码)导出,然后通过fab dev deploy等命令将代码发送到服务器。 准备好部署到生产fab prod deploy 。 你可以把代码放在fabfile文件中,将源代码移动到合适的位置,像Django一样更新依赖项(例如通过pip),重新启动uwsgi等。