我们希望购买一些 SSL 证书来保护电子商务网站的登录页面。不需要确保实际支付过程的安全,因为这由拥有自己的 verisign 证书的第三方保护。RapidSSL 看起来是一个不错(而且便宜)的选择,但一位销售人员告诉我,它们仅适用于“测试站点”,并建议我们使用 4 倍成本的选择。任何人都可以就我们应该寻找什么以及我们应该考虑什么提出任何建议吗?
谢谢。
我们有一个在我们公司开发的电子商务应用程序。它是一个相当标准的 LAMP 应用程序,我们已经断断续续地开发了大约 3 年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的颠覆解决方案 (unfuddle.com) 中进行管理。在报告错误时,我们会在测试域上进行这些修复,然后在我们对错误已修复感到满意时将更改提交到 svn。我们遵循相同的程序添加新功能。
值得指出的是,我们的系统和应用程序在我们的服务器上的总体架构。每次开发新功能时,我们都会将此更新推广到使用我们的应用程序(始终是我们控制的服务器)的所有站点。使用我们系统的每个站点在 95% 的代码库中基本上都使用完全相同的文件。我们在每个站点中有几个文件夹,其中包含为该站点定制的文件 - css 文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。
这将进入实际部署本身。当我们准备好推出某种更新时,我们在测试站点所在的服务器上运行一个命令。这将执行复制命令 (cp -fru /testsite/ /othersite/) 并通过每个虚拟主机强制根据修改日期更新文件。我们托管的每个附加服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出我们不想被覆盖的文件,并在复制完成后将它们移回。我们的 rollout 脚本执行许多其他功能,例如应用 SQL 命令来更改每个数据库、添加字段/新表等。
我们越来越担心我们的流程不够稳定,不具备容错能力,也有点暴力方法。我们也意识到我们没有充分利用 subversion,因为我们有一个立场,即开发新功能会阻止我们推出重要的错误修复,因为我们没有使用分支或标签。我们在我们的服务器上有如此多的文件复制似乎也是错误的。我们也无法轻松地对我们刚刚推出的内容执行回滚。我们确实在每次推出之前执行差异,以便我们可以获得将要更改的文件列表,以便我们知道之后更改了什么,但回滚过程仍然存在问题。就数据库而言,我已经开始将 dbdeploy 作为一种潜在的解决方案。不过,我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地联系在一起,因此推出/回滚将更多地与 svn 相关联。类似于使用 export 命令来确保站点文件与 repo 文件相同。如果解决方案也可以停止我们服务器周围的文件复制,那也很好。
忽略我们目前的方法,听听其他人如何解决同样的问题会非常好。
总结...
提前致谢
编辑:
我最近阅读了很多关于使用Phing和Capistrano执行此类任务的好文章。任何人都可以提供更多关于他们的信息以及他们对这种任务的表现如何?
我们的服务器(所有 CentOS)都受 IP 限制,但我经常外出并停留在动态 IP 地址上。使用 DynDNS 小部件我已将此动态 IP 设置为始终与 DynDNS 主机名同步,但我应该如何将此解析为 hosts.allow 中的 IP。目前我已经编写了一个 cron 脚本,它每隔几分钟运行一次并检查分配给该主机名的 IP 并将动态 IP 写入 hosts.allow 但我不太热衷于将其作为解决方案。有没有更优雅的方式我可以这样做?
谢谢。
在我们其中一台服务器的 apache 错误日志 (/usr/local/apache/logs/error_log) 中,我们看到一个 shell 命令经常运行并抛出错误,如下所示:
sh: list_price: command not found
Run Code Online (Sandbox Code Playgroud)
list_price 是我们在 50 多个网站上的电子商务系统中使用的一个字段,当然没有任何可疑之处。问题是我们不知道这是如何传递给 shell 的——我们已经检查了 exec() 和 system() 的所有出现,但我们看不出这是如何传递的。有什么方法可以让我们更容易地检测到它的来源可能是什么,因为没有什么比我上面所说的更有意义的输出了。仅供参考,这是在运行 CentOS 5 的服务器上,有问题的站点都是 PHP。
php ×2
bash ×1
centos ×1
deployment ×1
dynamic-ip ×1
hosts.allow ×1
lamp ×1
shell ×1
ssl ×1
static-ip ×1
svn ×1