如果这更容易,我正在使用Codeigniter。我想知道一个网站上线是否具有填充的数据库和用户访问,并且我有一个新的想法要实施到网站中,我应该怎么做?您是否直接在实时站点上工作?
或者您是否将数据库和文件复制到本地服务器(MAMP/WAMP/XAMMP(并在那里处理它,如果它有效,则使用更改更新活动站点。对于第二种方法,是否可以检查哪些文件已更改并仅上传这些文件?如果它在本地服务器上工作,但在更新实时站点后它不起作用怎么办?
代码点火器配置还可以选择默认数据库和其他数据库。我想知道这些如何用于测试?
不要直接在实时站点上工作。相反,拥有一个开发环境(例如,在您的计算机上使用 vmware 或 virtualbox(并克隆实时环境。在版本控制中获取代码(我再说一遍:在版本控制中获取代码(,在开发计算机上针对版本控制中的开发分支进行开发。完成测试并对更改感到满意后,将它们提交到"部署"或"实时"分支,并从那里部署到实时站点上。请务必在推出新代码之前备份数据库。
编辑:使用符号链接在活动站点上暂存新代码库。如果它不起作用,只需将其切换回旧目录。为您节省很多格瑞夫!
- 阅读版本控制(svn,git等(。
- 永远不要在活动站点上工作,最好是在另一台服务器上(以防止
while(1){..}
崩溃等(,但至少在同一台服务器上至少在另一个文档根/域上工作,最好只能有限地访问您的 IP。 - 通常我只复制表定义(
mysqldump -t
很好(,并完全拥有另一个数据库,如果您需要最新和最好的数据,您可以将主数据库复制到测试数据库,这也为您提供了便宜备份的优势,如果您还没有备份。 - 我通常在 Apache/Vhost 配置 (
SetEnv DEV=1
( 中设置一个开关,以便在代码中使用if(getenv('DEV')==1)
来检查我是否可以在错误条件下转储变量,并限制意外提交/上传代码的可能性,而"开发开关"仍然意外打开。
这个问题的典型答案是在测试环境中完成工作,而不是在生产环境中完成工作。 我同意这通常是处理变化的最佳方式。 如果您拥有豪华的测试环境,请充分利用它。 毕竟,这就是它的目的——测试。
但是,这并不意味着在生产环境中工作是完全禁止的。 您的决定应基于以下几个因素:
- 您网站的运营对您的业务需求至关重要吗?
如果是这样,请在测试环境中完成所有工作,并在完全测试更改后将其部署到实时环境。
- 您即将进行的更改是否会对网站的其余部分产生重大影响?
例如,是否要更改数据库架构?您是否要更改用户登录或退出您网站的方式? 如果是这样,请在测试环境中完成工作。 如果您正在更改在其他地方没有任何影响的页面的行为,则可以在生产环境中进行更改。
- 您的更改需要多长时间才能实施?
如果无法保证更改不会超过 15-20 分钟,请在测试环境中执行工作。