标签: deployment

使用 Nginx、Apache、mod_wsgi 部署 Django 应用程序

我有一个可以使用标准开发环境在本地运行的 django 应用程序。我现在想将其移至 EC2 进行生产。django 文档建议使用 apache 和 mod_wsgi 运行,并使用 nginx 加载静态文件。

我在 Ec2 机器上运行 Ubuntu 12.04。我的 Django 应用程序“ddt”包含一个带有 ddt.wsgi 的子目录“apache”

import os, sys
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/usr/lib/python2.7/site-packages/django/')
sys.path.append('/home/jeffrey/www/ddt/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

我从 apt 安装了 mod_wsgi。我的 apache/httpd.conf 包含

NameVirtualHost *:8080

WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi
WSGIPythonPath /home/jeffrey/www/ddt

<Directory /home/jeffrey/www/ddt/apache/>
<Files ddt.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)

在 apache2/sites-enabled 下

<VirtualHost *:8080>
ServerName www.mysite.com
ServerAlias mysite.com
<Directory /home/jeffrey/www/ddt/apache/>
    Order deny,allow …
Run Code Online (Sandbox Code Playgroud)

deployment nginx django mod-wsgi apache-2.2

14
推荐指数
1
解决办法
2656
查看次数

如何说服我的 IT 经理将企业从 IE6 升级到更新的浏览器?

我们已经在整个企业范围内推出了 Windows XP SP2(不幸的是,在可预见的未来没有希望转向 Vista 或 Windows 7),我们最新的内部推出实际上也包含了 SP3 - 但不幸的是,IE 明确保留在版本6.

不管我们那里有无数的安全警告并且在更大的万维网上缺乏适用性,我的经理仍然认为为 IE6 编写的 Intranet 应用程序是继续使用它的主要原因。我们可以做些什么来使投票对我们有利?当用户不断打电话给我们抱怨网站看起来不正确时,我们已经厌倦了支持一个有问题的浏览器,而且越来越多的人要求浏览器标签“因为这就是他们在家里拥有的”。

我们可以提出的任何论点都会很棒!

deployment internet-explorer

13
推荐指数
2
解决办法
571
查看次数

如何说服管理层部署到虚拟机

您将如何“销售”将 VM 用于生产应用服务器?在这种情况下使用它们有什么引人注目的好处?

我必须维护许多关键但目前资源需求很少的应用程序(syslog-ng、openldap、一些内部工具),我们希望这些应用程序是多余的。我不喜欢一堆机器的 CPU 使用率只有 0.1%,只是出于本金的考虑。

但是,如果您试图说服那些声称“虚拟机消耗资源,因此对任何生产情况都没有好处”的人,您会告诉他们什么?

virtualization deployment

13
推荐指数
3
解决办法
905
查看次数

使用直通身份验证将 Web 部署到 IIS 7

经过多次反复试验配置,我目前能够编写 msdeploy.exe 脚本,将 Visual Studio 2010 中内置的包部署到运行 IIS 7.5 的远程服务器,命令行如下:

基本认证命令:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

我可以通过启用传递身份验证来消除在命令行中提供密码的需要吗?在Web部署文档提到的authType参数可以指定,而不是基本“NTLM”。但是,每当我尝试此操作时(请参见下面的示例),我都会收到一个指示 401 的错误。WMSvc 网络日志显示 401.2 并且该日志条目中没有填充用户 ID,与以前使用基本身份验证的尝试不同,实际上显示的是 DOMAIN\myuser在网络日志中。在客户端或服务器的事件查看器中找不到其他有用的信息。

注意:目标网络服务器在另一个域上,所以我做了一个net use \\webserver /u:DOMAIN\myuser来建立一个令牌。

直通身份验证命令尝试:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

msdeploy.exe 似乎没有在 HTTP 级别正确地与 IIS 进行身份验证。可能有什么问题?

客户端为Windows XP,服务器为Win2008R2。两者都运行 msdeploy.exe 版本 7.1.618.0。两者都安装了 .NET 2.0、3.5 和 4.0。

deployment authentication iis-7.5

13
推荐指数
1
解决办法
3274
查看次数

生产部署工具

与构建软件类似,应该使用工具来部署生产服务器更新(无论是数据库、网站、路由器配置等)。工具的使用减少了某些类型的人为错误(例如遗漏的步骤)。

  • 哪些工具可用于软件/配置/等部署(无论是免费的还是商业的)?

  • 每个帖子列出一个工具
  • 它执行部署过程的哪一部分
  • 使用此工具的特定优点或缺点(即,仅 .NET,支持所有 LAMP/WAMP 平台等)

不要添加已经存在的工具 - 如果您对给定的答案有什么特别想说的,请添加评论。

-亚当

deployment development process

12
推荐指数
2
解决办法
2264
查看次数

改进我们的部署策略

我们有一个在我们公司开发的电子商务应用程序。它是一个相当标准的 LAMP 应用程序,我们已经断断续续地开发了大约 3 年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的颠覆解决方案 (unfuddle.com) 中进行管理。在报告错误时,我们会在测试域上进行这些修复,然后在我们对错误已修复感到满意时将更改提交到 svn。我们遵循相同的程序添加新功能。

值得指出的是,我们的系统和应用程序在我们的服务器上的总体架构。每次开发新功能时,我们都会将此更新推广到使用我们的应用程序(始终是我们控制的服务器)的所有站点。使用我们系统的每个站点在 95% 的代码库中基本上都使用完全相同的文件。我们在每个站点中有几个文件夹,其中包含为该站点定制的文件 - css 文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。

这将进入实际部署本身。当我们准备好推出某种更新时,我们在测试站点所在的服务器上运行一个命令。这将执行复制命令 (cp -fru /testsite/ /othersite/) 并通过每个虚拟主机强制根据修改日期更新文件。我们托管的每个附加服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出我们不想被覆盖的文件,并在复制完成后将它们移回。我们的 rollout 脚本执行许多其他功能,例如应用 SQL 命令来更改每个数据库、添加字段/新表等。

我们越来越担心我们的流程不够稳定,不具备容错能力,也有点暴力方法。我们也意识到我们没有充分利用 subversion,因为我们有一个立场,即开发新功能会阻止我们推出重要的错误修复,因为我们没有使用分支或标签。我们在我们的服务器上有如此多的文件复制似乎也是错误的。我们也无法轻松地对我们刚刚推出的内容执行回滚。我们确实在每次推出之前执行差异,以便我们可以获得将要更改的文件列表,以便我们知道之后更改了什么,但回滚过程仍然存在问题。就数据库而言,我已经开始将 dbdeploy 作为一种潜在的解决方案。不过,我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地联系在一起,因此推出/回滚将更多地与 svn 相关联。类似于使用 export 命令来确保站点文件与 repo 文件相同。如果解决方案也可以停止我们服务器周围的文件复制,那也很好。

忽略我们目前的方法,听听其他人如何解决同样的问题会非常好。

总结...

  • 使跨多个服务器的文件与 svn 保持同步的最佳方法是什么?
  • 我们应该如何防止文件复制?符号链接/其他东西?
  • 我们应该如何构建我们的 repo 以便我们可以开发新功能并修复旧功能?
  • 我们应该如何触发推出/回滚?

提前致谢

编辑:

我最近阅读了很多关于使用PhingCapistrano执行此类任务的好文章。任何人都可以提供更多关于他们的信息以及他们对这种任务的表现如何?

php deployment svn lamp web-applications

12
推荐指数
1
解决办法
972
查看次数

用于安装 Windows 7 的媒体

我需要查明是否使用OEMRetailVolumeVL (VLK) 媒体将 Windows 7 部署到网络。

我需要知道使用的是哪种产品,以防它导致我遇到的一些许可问题。

此信息在注册表中的何处存在?

windows deployment windows-7 licensing

12
推荐指数
1
解决办法
1058
查看次数

Gitlab CI - 通过 SSH 部署到远程服务器

我有一个使用 Gitlab CI 的 Gitlab 环境,用于一个新项目来证明编译的文件并通过 rsync 复制到生产服务器。

这些资源的构建是 exec 的机器是 docker(节点 6)的映像,但现在我必须使用 linux 将结果文件从该容器 Docker 命令复制到服务器......我的问题是通过 ssh 连接同步。

目前我有以下几点:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

通过这个我得到:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that …
Run Code Online (Sandbox Code Playgroud)

ssh deployment continuous-integration gitlab

12
推荐指数
1
解决办法
3万
查看次数

基础设施部署的测试驱动开发?

我一直在使用 puppet 来部署基础设施,而且我所做的大部分工作都是与 Web 2.0 公司合作的,这些公司热衷于为他们的 Web 应用程序进行测试驱动的开发。这里有没有人使用测试驱动的方法来开发他们的服务器配置?你使用什么工具来做到这一点?你的测试有多深?

deployment automated-testing testing

11
推荐指数
1
解决办法
1421
查看次数

在 IIS 7 中看不到“管理服务委派”选项

我已经在 IIS 上安装了管理服务,并且想要配置 Web 部署。

在服务器级别,我可以看到管理服务、功能委派、IIS 管理器等

我也安装了 IIS6 管理,但由于这是一个生产服务器,我不想删除它只是为了检查。

iis-7 deployment

11
推荐指数
2
解决办法
2万
查看次数