由于Open edX的依赖繁多,安装繁琐等原因,bitnami提供了二进制的一键安装包Open edX,edx的blog上对此事有过报道

一般而言,社区倾向于采用原生的安装方式,原因有二:

  • 当前大多的讨论基于原生版本,这样使用过程中遇到的坑,易于搜到解决方案,因为大家围绕着一个相同的版本。这样可以充分发挥社区的力量
  • 易于升级和改造(主要也是因为资料多)

另一方便,我们也有动力去采用一键安装的二进制包:

  • 安装便利,只要下载好二进制文件(1.1G),安装即可.
  • 不必担心国内外网络的差异造成的各类诡异错误。在校园网中这个优势尤其明显
  • 对环境的要求仅有linux-x64!

#安装

  • 在目标机器上下载bitnami-edx-cypress-4-linux-x64-installer.run (这是当前最新版)
    • 你可以采用你喜欢的工具下载(wget,curl,aria2c等),也可以本地下好,scp传输到目标机器
  • chmod 755 bitnami-edx-cypress-4-linux-x64-installer.run
  • ./bitnami-edx-cypress-4-linux-x64-installer.run
  • 之后按提示填写信息就行

#使用 ###访问

  • http://localhost:8080 : lms(学生端)
  • http://localhost:18010 : cms(教师端)
  • http://localhost/admin : admin(后台管理)

start/stop the servers

1
2
3
:::text
cd ~/application-version
./ctlscript.sh start

更多的设置参考Bitnami_Open_edX wiki

#探索

###项目结构 使用tree探索:tree -L -C ~/edx-cypress-4

###相关进程 ps aux |grep edxapp

我们看到

/home/wwj/edx-cypress-4/apps/edx/edx-platform/bin/python.edxapp ./manage.py lms --settings=aws celery worker -I contentstore.tasks --loglevel=info --queues=edx.lms.core.low --hostname=edx.lms.core.low.%h --concurrency=1

###控制脚本 搜索edx.lms.core.lowgrep edx.lms.core.low ~/edx-cypress-4 -R

发现/home/wwj/edx-cypress-4/apps/edx/scripts/ctl.sh

通过分析ctl.sh,我们发现,bitnami采用shell来控制edx,而不是像原生安装那样采用supervisor来控制进程

###源码 查看源码的git log我们发现,最后一次提交为bde4dc5fdb6b470db0de361bc87038faf4f5471c,这恰好是named-release/cypress.rc 最终的提交

所以bitnami没有动源码

这意味着它和原生系统基本相同

#题外 另外我对bitnami采用的技术挺感兴趣,下午和@netwalk0r聊了一下,他说以前看过bitnami的安装包,应该不是采用base64的打包,我们都觉得应该是使用某种方式包装了二进制包和shell。

欢迎对此了解的同学一起来讨论咯

当然由于我相信docker这类技术是未来,所以也不愿在二进制打包这类技术上话费太多精力


补充

偶然的机会发现,bitnami 的应该是使用了makeself来打包,这个工具好强大

#参考