Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有mercurial文件的情况下将Django部署到生产服务器?_Django_Mercurial - Fatal编程技术网

如何在没有mercurial文件的情况下将Django部署到生产服务器?

如何在没有mercurial文件的情况下将Django部署到生产服务器?,django,mercurial,Django,Mercurial,我最初是一名.NET开发人员,当时我们不得不从VisualStudio发布一个软件,我们必须将其切换到发布模式,以确保删除调试挂钩并保留存储库文件。最终的结果是一组干净的文件准备投入生产 在切换到Django并使用它近三个月后,我现在准备部署第一个应用程序。我读了不少这方面的书。我知道如何将调试设置为False,使用production_setting.py,以及如何在Apache上部署WSGI 但我还没有弄明白,推出发行版是一个很好的过程 根据我现在所知,我将为发布做以下工作: 手动将所有文

我最初是一名.NET开发人员,当时我们不得不从VisualStudio发布一个软件,我们必须将其切换到发布模式,以确保删除调试挂钩并保留存储库文件。最终的结果是一组干净的文件准备投入生产

在切换到Django并使用它近三个月后,我现在准备部署第一个应用程序。我读了不少这方面的书。我知道如何将调试设置为False,使用production_setting.py,以及如何在Apache上部署WSGI

但我还没有弄明白,推出发行版是一个很好的过程

根据我现在所知,我将为发布做以下工作:

  • 手动将所有文件复制到上载目录(不包括隐藏的mercurial目录)
  • 把它们都拉上
  • 通过SCP将它们发送到Ubuntu服务器
  • 登录到服务器
  • 提取zip文件并将所有内容放在适当的位置
  • 修改设置_production.py并输入凭据
这是Django部署的健康过程吗?:)
仅供参考,我正在使用Aptana Studio 3.2.1

感谢您提供的所有提示

;文档将其描述为

。。。一个Python(2.5或更高版本)库和命令行工具,用于简化应用程序部署或系统管理任务中SSH的使用

它可以做你想做的所有事情

您的“部署”任务可能有几个子任务(
\u upload\u tar\u from\u hg()
\u migrate()
等),但总体情况如下:

from fabric.api import * 

env.release_name = 'foo_bar-1.0'
env.deployment_path = '/var/www/django/%s' % env.release_name    

def deploy():
    local('hg archive -t tgz $s.tar.gz' % env.release)
    put('%s.tar.gz' % env.release, env.deployment_dir)
    run('cd %s && tar -xzvf %s.tar.gz' % (env.deployment_path, env.release))
    local('rm %s.tar.gz' % env.release)
    run('cd %s/%s && ln -s settings_production.py settings.py' % (env.deployment_path, env.release))
这取决于在源代码管理中有一个单独的
设置\u production.py
,这可能不合适。Fabric可以在文本文件中查找和替换,也可以使用组合设置

签出以填补空白(例如指定服务器的连接详细信息。设置完成后,只需运行

fab deploy
这个过程应该自动进行

注意:从Mercurial创建不含
hg
元数据的存档,只需一步操作即可完成,只需使用
hg archive
命令)

在目标服务器上设置。对“hg”用户使用SSH密钥通常是最安全的方法,因为您可以将shell访问权限限制为该用户,只允许该用户访问repo

推到该repo并使用post-receive钩子将推送到您的web服务器将从中提供服务的文件夹中(并在需要时重新加载您的web服务器)


您还可以在设置文件中设置一个条件,检查应用程序是否在生产服务器上(例如,检查文件或环境变量),并加载相关设置(设置\u prod.py或设置\u dev.py)

在目标服务器上设置远程Mercurial repo。推到该repo并使用post-receive钩子
签出
将推送到web服务器将从中提供服务的文件夹中(并在需要时重新加载web服务器)。您还可以在设置文件中设置一个条件,检查应用程序是否在生产服务器上(例如,检查文件或环境变量),并加载相关设置(settings\u prod.py或settings\u dev.py)@elithrar这应该是答案。听起来很有趣,我如何创建这样的后期接收挂钩?Thanks@Kave请参见此处:-本质上,您在项目的.hgrc文件中创建一个“钩子”,然后将其绑定到脚本(Python、Ruby、bash;随便什么)。然后脚本处理繁重的工作。e、 g您可以重新加载web服务器,或者修改配置文件,等等。到目前为止,hg存档已经帮了我不少忙。在需要更复杂的解决方案之前,这非常有助于简化工作+谢谢。