GIT 和 Django 项目

GIT 和 Django 项目

我有两台服务器,一台Dev服务器和一台Production服务器。Production服务器运行一个实时的 Django 网站,而Dev服务器有 Django 项目的副本。我使用服务器Dev来处理 Django 网站、进行改进、修复错误等。一旦我对版本的运行情况感到满意Dev,我就会将整个 Django 目录从Dev服务器移出并替换服务器上的相同目录Production。两台服务器是不是在同一个局域网上,所以过程并不简单。

到目前为止,我遇到了一些与此相关的问题。

  1. 移动整个目录既费力又费时
  2. 如果我只修改几个文件,甚至移动由于项目越来越大,替换几个文件比替换整个目录更麻烦,我担心会错过一些东西
  3. 我经常在移动东西后遇到权限问题
  4. 这种方法效率极低,而且由于时间不够,我也没有想出新的方法。现在情况已经失控,我需要解决这个问题。

我认为我需要将这个过程转移到 GIT 存储库。但我的问题是如何设置这一切?

  • 我是否应该将存储库托管在Production服务器上,从Dev服务器提取,执行工作,然后提交?然后,我会从服务器Production(托管存储库的同一台服务器)提取内容以运行当前工作版本?
  • 我是否在服务器上托管 repo Dev,从同一台服务器提取数据来对 repo 进行工作,然后将工作版本提取到服务器上Production
  • 我是否应该将 repo 托管在与Production服务器和Dev服务器不同的服务器(第三台服务器)上?
  • 我是否需要担心有关 Django 和 repos 的任何特殊事项?

谢谢您的帮助 :)

答案1

我从事 Django 开发和 GIT 工作已有 18 个月。在此期间,我尝试自己托管一个 git 存储库,现在我使用 GITHUB 来完成这项工作。它更简单、更省时,而且成本更低。看看我的考虑:

  • 除非您是具有 GIT 经验的 Linux 专家,否则将您的项目托管在 GITHUB 中会更便宜(考虑到时间就是金钱)。他们为公共项目提供免费的 GIT 托管(任何人都可以克隆/分叉它们)。如果您想拥有一个私人存储库,他们还提供(便宜的)付费 GIT 托管。

  • GITHUB(或其他 GIT 托管公司)将使设置存储库变得更加容易,这样您就可以在使用 GIT 时学习如何使用它(换句话说,由于有了 Web 界面,您在使用 GIT 之前不需要学习超过基本的 GIT 命令行语法的知识)

  • GIT 是一个分布式控制版本系统。这意味着,你放置存储库副本的每个地方都将拥有你所有代码的完整历史记录,因此,如果你选择托管自己的 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 生产():
        “””
        将环境设置为生产
        “””
        continue = confirmed('更新生产环境,继续?', default=False)
        如果不继续:
            abort(‘再见——感谢您没有参与生产!’)
        env.hosts = ['my_server.my_domain.com.br']
        env.key_filename = ['~/amazon/my_ssh_key.pem']
        环境.用户 = 'ubuntu'

    # 使用这个来运行结构更新程序:
    fab 生产 deploy_production
  • 使用 virtualenv 和 virtualenvwrapper
  • 在项目根目录中创建一个名为“.gitignore”的文件,并放入您不想通过 GIT 管理的文件(或文件模式),如:*.pyc、.idea、.DS_Store(每行一个)

希望有帮助,好看!

如果您觉得这些答案有用,请给分。

答案2

我建议你使用你提到的 git 等源代码控制系统,在本地完成你的工作,然后查看织物用于部署。您可以使用git checkout-index在本地导出代码(通过 fabfile 中的代码),然后通过类似 的命令将其发送到服务器fab dev deploy。当您准备好部署到生产环境时fab prod deploy。您可以将代码放入 fabfile 中以将源代码移动到正确的位置,更新依赖项(如 Django)(例如通过 pip),重新启动 uwsgi 等。

相关内容