作者blue3 (啦啦啦)
看板Web_Design
标题Re: [问题] Joomla hosting in Heroku
时间Sun Dec 28 00:29:12 2014
你要先了解heroku平台的设计原则
才有办法设计出符合这个平台的应用程式
http://12factor.net/
这是heroku创办人提出的12factor
如果一个应用程式依照这12个原则去设计
那麽将可以更容易地被scale或是部署在不同的环境
你的问题解决方式很简单,也是heroku建议的方式
就是所有应用程式相关的设定,都应该透过环境变数的方式去设定
https://devcenter.heroku.com/articles/config-vars
像是资料库,或是add-on的设定
而dyno本身的设计必须是stateless的
也就是不应该有任何的状态资料(session, file等)被储存
file应该透过第三方平台去存取
session则应写入资料库或是透过像memcached来做分散式快取
这是因为dyno的设计,是建构在硬体可能随时坏掉的前提之上
因此stateless的特性,让dyno不储存任何状态
可以在dyno crash的时候,重新启动一个dyno来服务
另外,修正一下你的说法,
并不是一个request进来才会产生一个dyno,
dyno在你push code到heroku时就会产生了
如果你只有一个dyno, 才会有sleep的效应
也就是你说的,太久没用被卸载来减轻平台本身的负担
当"第一个"request进来,才会再产生一个dyno
如果你有两个dyno, 就不会sleep
但是两个dyno的状况下,就要让session可以在不同dyno之间同步
你遇到的不是平台的问题 而是它的设计就是如此
※ 引述《jimmytzeng (jimmytseng)》之铭言:
: 各位大大好
: 小弟最近再使用Heroku 进行Jommla的布署
: 但是遇到一些问题
: 因为Heroku为了减少server负载的使用量,设计成当有request进来时,才会产生一个DYNO
: (好像再google cloud platform里叫作instance)
: 而第一次再这个DYNO进行Joomla的初始化的时候(就是再web上进行设定那步骤), 其设定档(configruation.php)似乎只储存在这个DYNO
: 当这个DYNO随着时间被关闭後, 此设定档或是安装的模组就随着此DYNO的消失而消失...
: 如此当下次DYNO被产生的时候,又要重新一次去进行Joomla的设定....
: 有大大有相关经验解决类似这种问题吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.105.53.40
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Web_Design/M.1419697754.A.C13.html
※ 编辑: blue3 (27.105.53.40), 12/28/2014 00:48:09
※ 编辑: blue3 (27.105.53.40), 12/28/2014 01:12:29