16回答

0收藏

设置一个PHP Web项目,基础设施

技术问答 技术问答 557 人阅读 | 16 人回复 | 2022-03-03

如何最好地设置我的PHP(LAMP)开发拥有开发、登台和生产服务器,开发环境。一键部署到任何一个,一键回滚到任何修改版本。回滚还应将数据库模式和数据回滚到当前源代码的状态。/ r0 ~3 H) l7 k" S% v8 ^
现在,我已经用过了Shell脚本为一个应用程序完成所有这些操作(数据库回滚功能除外)。我很好奇如何设置他人的环境,以及是否有任何一般的工具或最佳的布局实践。
9 ^4 n1 c3 T. x4 e+ R, F# g那么,你是怎么做到的呢?您使用了哪些现有工具?2 |" y/ k5 [: j0 R7 L
谢谢!
3 z4 L3 N/ U# [$ Z3 P更新:请澄清,因为我感兴趣的内容有点混乱。3 \* r" X* U( @! G! f- X
我真的希望人们能了解他们的环境设置。
6 A8 k# _9 [2 z3 J0 f假如你操作一个PHP你应该如何控制项目和你的数据库架构?你用什么工具?他们能在公司内部还是我们能在网上找到?
' F& t# k) s2 a2 `. z4 P假如你操作一个PHP您将如何进行项目和提交(和/或每晚)的自动化测试?您使用什么源版本的控制系统?你用过吗?SVN并在提交后的挂钩中进行测试?9 r; s; j0 z7 v& u% _" s
如果您运行多个开发服务器、登台服务器和生产服务器PHP如何组织和部署项目?
1 F! H9 C6 w+ K* A! ]希望从中得到启发的是一个好主意,那就是别人如何把一切都粘在一起。; d2 k9 r4 E+ u/ s
                                                               
! `+ o" `' i! D. W    解决方案:                                                               
! w$ @! U( T5 w                                                                我们的生产环境包括以下内容:
% s9 E  X" p% q! ?* g7 ]$ X
  • 三个前端为我们的网站提供服务
  • 2个数据库后端(主从,复制)
  • 1混合运行httpd广告数据库我们的开发环境是同时运行数据库和httpd在配置方面,我们为每个安装程序提供了不同的工作区域VC是Subversion。过渡也很简单-
    ! q6 R) s8 J  t! c它在前端之一上运行。
    2 M6 L( i8 |0 p数据库变更0 r+ P0 ~6 k9 a0 c6 {% N
    起初,我们在数据库设计上花了很多时间,似乎真的收获了。在过去的五个月里,我们没有做出任何重大改变。我们部署的大部分变化都在前端。到目前为止,我们手动更改了数据库,我总是写一个小脚本来恢复。
    ( M+ L5 H/ P4 {8 j8 Y# o/ V0 J如果我有更多这些,我可以在这里使用理论和迁移。事实上,我从来没有机会在生产中使用它们,但我已经广泛使用它们,它们似乎非常强大。
    . E2 e* Z, ]! j1 K5 e部署方式
    3 E/ D$ y. g% H. q- N) a因此,每当我们部署新版本时,我们都会创建一个代码标签,以便在登台时签字,然后通过一系列检查和其他操作将代码部署到生产前端。为了完成所有的部署,我在那里Capistrano设置了几个任务。
    # R  e' v( x. s看看这个样本capfile:
    $ g. {; ~! ~  e. b/ Urole :www,"web01","web02","web03"role :web,"web01","web02","web03","web04"role :db,"db01","db02"desc "Deploy sites"task :deploy,:roles => :www do    run "cd /usr/www/website && sudo svn --username=deploy --password=foo update"endCapistrano在不定义任务的情况下,允许您操作任何其他命令:- n8 ?/ \, q( q$ ~/ w) n. Z+ V, V7 i
    cap invoke COMMAND="uptime" ROLES=web(需要设置 角色    “ web.见上述示例。# O8 w& P2 B0 }
    编码样式和文档
    5 T/ ?+ e' [. v& \; y, M' X: d1 B我们几乎遵守PEAR我们使用编码标准PHP_CodeSniffer(phpcs)检查。当我说很多话时,我的意思是我分叉了提供的嗅探,并添加了一些我自己的困惑例外。0 k0 s5 p( ?  t8 A( y5 W
    除编码风格外,phpcs还检查内联文档。该文档最后由phpDocumentor创建。
    ( l! ?+ t/ L- u, P* ^CI3 d! z0 H" Y1 j- u$ e
    我有这些工具同时安装在我们身上。CI服务器(连续的集成) P: C0 p* ~" [2 f' L3 C" J  ^
    ),这是phpUnderControl使用上述和CruiseControl的,PHPUnit的,Xdebug(一对夫妇代码测量......)等。
    & K+ `8 u8 U% \" W# \% H1 u3 w单元测试是我们目前所缺乏的。但我们现在要做的是在分析引擎中发现每一个错误(将文本分析为某些格式)后,我们会编写测试,以确保它不会再次出现。我还编写了一些基本的测试来检查URL路由和内部XMLRPC
    # X* x, y3 C' Q% I  w) V& ]& rAPI,但这确实需要改进。我们同时采用了phpUnit风格测试和phpt。+ }! {% g* D. E& |
    在CI服务器 构建    一个新版本,每天生成几次图表、文档和各种报表。
    ! l9 q0 W! g% Y* X% t8 o% }除上述所有工具外,我们还使用它们Google Apps(主要用于电子邮件),并保留所有其他文件Google Sites( Q; R. y* \4 r% t& A' o& |
    Wiki。例如,部署过程、质量检验测试列表等。
  • 分享到:
    回复

    使用道具 举报

    回答|共 16 个

    爱你中华

    发表于 2022-3-4 00:07:49 | 显示全部楼层

    路过的帮顶
    回复

    使用道具 举报

    麦琪的礼物

    发表于 2022-3-5 14:36:14 | 显示全部楼层

    我也是坐沙发的
    回复

    使用道具 举报

    粗茶淡饭

    发表于 2022-3-6 15:38:03 | 显示全部楼层

    顶起出售广告位
    回复

    使用道具 举报

    梦想中

    发表于 2022-3-7 09:53:23 | 显示全部楼层

    小白一个 顶一下
    回复

    使用道具 举报

    东山在起

    发表于 2022-3-8 05:24:28 | 显示全部楼层

    找到啦 开心
    回复

    使用道具 举报

    周冰

    发表于 2022-3-8 16:39:18 | 显示全部楼层

    路过 帮顶 嘿嘿
    回复

    使用道具 举报

    王鸿芳九尾狐

    发表于 2022-3-8 23:47:19 | 显示全部楼层

    哈哈 都不错啊
    回复

    使用道具 举报

    琶洲

    发表于 2022-3-9 05:56:01 | 显示全部楼层

    我擦!我要沙发!
    回复

    使用道具 举报

    粉枝

    发表于 2022-3-9 11:13:02 | 显示全部楼层

    小白一个 顶一下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    29055 积分
    9659 主题
    热门推荐