草庐IT

php - CodeIgniter:开发和生产环境

coder 2024-01-03 原文

我目前正在学习 CodeIgniter PHP 框架。目前,我正在寻找一个开发环境和一个生产环境。来自纯粹的 C 和 JAVA 背景,我习惯于在本地拥有一切(带有版本控制),但由于我将在网站上拥有 PRODUCTION 端,我想知道一些不同的事情:

  • 将 DEV 环境保留在本地是否更好?
  • 在 DEV 端进行更改以使它们达到 PRODUCTION 端(假设 DEV env 是本地的)时,什么是好的(且简单的)方法?
  • 是否有可能(如果有,如何设置?)将 CodeIgniter 设置为在同一代码空间中拥有 DEV 和 PROD 环境(比如在服务器上,但具有不同的数据库表)?
  • 在我将在框架中创建的应用程序上使用版本控制时,是否建议只拥有我为应用程序创建的文件,或者添加整个框架(以保持代码与框架版本一致)?

  • 我感谢您提前提出的任何想法或建议。

    谢谢!

    最佳答案

    我不使用 CodeIgniter,所以我可能无法回答你所有的问题;但是,这里有一些提示:

  • 开发环境:我喜欢每个开发人员都有自己的环境;当它在他的机器上时,它通常更容易/更快
  • 尽管如此,如果您的开发机器运行的是 Windows,而您的生产服务器将运行 Linux,它可能会带来一些问题(这两者之间存在一些差异,例如文件名区分大小写)
  • 在这种情况下,如果你有一台足够强大的计算机,使用 VMWare 或 VirtualBox 来运行一个极简的虚拟机(上面有 Linux+Apache+PHP+MySQL;代码源也在上面,通过 samba 共享导出)可能是一个很好的解决方案——这就是我半年多来一直在做的事情,而且效果很好
  • 将更改从 dev 推送到 prod :
  • 一种解决方案是登录生产服务器并执行“svn update”;但我真的不喜欢那样(如果某些文件已直接在生产服务器上修改——是的,有时会发生这种情况),您可能会遇到冲突等;这绝对不好玩,因为它可能会破坏网站 ^^
  • 我更喜欢的一个解决方案(需要更多时间来部署,但如果你只部署一次,比如说,每周一次,那就可以了——而且绝对更安全)是在其中一台开发机器上使用“svn export”,创建一个tar/zip/whatever 存档,并将其上传到生产服务器。然后,您将其解压缩到一个新目录;完成后,您更改符号链接(symbolic link)以将根目录指向该新目录。好消息是:您将旧源代码保留在生产服务器上,如果您部署的内容出现灾难性问题,您只需将一个符号链接(symbolic link)更改回以前的版本——这有时可以节省一天 ^ ^
  • 哦,而且,作为旁注:您应该编写一个脚本来自动为您执行此操作:它会避免有一天在手动执行时弄乱 ine 步骤(并且会在总是这样做的人在假期 ^^ )
  • 关于在两种环境中使用源的一个实例:即使您计划仅针对框架执行此操作,我也不建议这样做:
  • 这意味着在同一台机器上有 dev 和 prod,这很糟糕:如果一些仍在开发脚本中的人变得疯狂并且做了坏事怎么办?如果一个开发人员在错误的目录中输入了一些“rm -Rf”的亲属怎么办?
  • 您考虑过不同的数据库表(我宁愿使用不同的数据库;使用不同的用户,以避免任何人对错误的数据库做出任何错误的请求!),但这不是唯一的事情:临时文件呢?缓存,例如?
  • 我真的更喜欢完全分离实例;即使这意味着在机器上有两次源/框架 - 我真的真的建议拥有两台不同的机器!
  • 关于在 SVN 上拥有框架:
  • 您在 SVN 上拥有的东西越多,建立一个新的开发环境就越容易:理想情况下,只需一个“svn checkout”,并且为刚刚加入您团队的新开发人员准备了一个新环境;再加上你可以给他的虚拟机(从别人的机器复制),你可以让开发人员在几十分钟内准备好处理你的项目——这很好;-)
  • 尽管如此,在 SVN 中拥有框架是更新它的 PITA:您必须删除它,替换它,重新提交它,...
  • 使用 svn:externals(如果可以的话——取决于你的设置/你的框架),指向框架的 SVN 服务器本身,可能是一件好事,总是保持最新(不一定指向 HEAD ;使用标签或者一个分支可能对你来说已经足够了)。

  • 希望这几条笔记有帮助...
    玩得开心 !

    关于php - CodeIgniter:开发和生产环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258587/

    有关php - CodeIgniter:开发和生产环境的更多相关文章

    1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

      我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

    2. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

      我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

    4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

      这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

    5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

      我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

    6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

      您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

    7. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

      无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

    8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

      在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

    9. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

      之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

    10. 微信小程序开发入门与实战(Behaviors使用) - 2

      @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

    随机推荐