未加星标

edx启动过程分析

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二05 | 时间 20161001 | 作者 红领巾 ] 0人收藏点击收藏

我是在Ubuntu-14.04.05的系统里安装的edx,这个版本的Ubuntu的启动系统应该是upstart---相比于BSD,linux的启动系统种类多而繁杂,变化快,一会是SystemV,一会是Upstart,一会又是Systemd, 几乎让我抓狂---但是Ubuntu同时也兼容SystemV的启动方式,这就使复杂问题更复杂了。

首先看看/etc/init里面的文件:

edx启动过程分析

可以看到该目录下都是一些开机要启动的程序的配置文件,文件的扩展名都是conf,其中跟edx运行有关的至少有:

mysql.conf mongod.conf supervisor.conf

前两者都是数据库的启动文件。第三个supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

我们看看文件supervisor.conf的内容:

edx启动过程分析

这个配置文件的意思的开机时运行程序:

/edx/app/supervisor/venvs/supervisor/bin/supervisord

并读取配置文件/edx/app/supervisor/supervisord.conf

配置文件/edx/app/supervisor/conf.available.d/lms.conf中有如下语句:

[include]

files = /edx/app/supervisor/conf.d/*.conf

所以查询一下/edx/app/supervisor/conf.d目录下的文件:

edx启动过程分析

我们再打开文件/edx/app/supervisor/conf.d/lms.conf

注意其中运行了gunicorn。再看看它的配置文件

edx启动过程分析

/edx/app/edxapp/lms_gunicorn.py内容:

edx启动过程分析

现在应该明白了:edx是一个通过支持wsgi应用的gunicorn部署的Django应用软件。

目录/etc/init分析到这里,我们不要忘记最开始我们说到Upstart是兼容sysvinit的,怎么做到的?在/etc/init/下有两个重要的配置文件:rc-sysinit.conf和rc.conf。前者rc-sysinit.conf中有:

env DEFAULT_RUNLEVEL=2

说明系统的运行级别为2:

我们也可以这样查看

[email protected]:~$ runlevel

N 2

由于Upstart兼容SystemV,现在由Upstart通过运行rc再运行/etc/init.d/rc2

这个命令,再来完成/etc/rc2.d/下相应程序的启动。

(为什么不选择常用的运行级3呢?不清楚.)

进入目录/etc/rc2.d查看系统启动时启动了哪些程序:

[email protected]:/etc/rc2.d$ ls | more

README

S20memcached

S20nginx

S20postfix

S20rabbitmq-server

S20rsync

S20screen-cleanup

S23ntp

S70dns-clean

S70pppd-dns

S95elasticsearch

S99grub-common

S99ondemand

S99rc.local

继续查看/etc/nginx/nginx.conf,关键在于最后:

include /edx/app/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

前面/edx/app/nginx/conf.d/目录下并没有内容,看看后面:

$ ls -l /etc/nginx/sites-enabled/

lrwxrwxrwx 1 root root 36 Aug 29 10:54 certs -> /edx/app/nginx/sites-available/certs

lrwxrwxrwx 1 root root 34 Aug 29 10:54 cms -> /edx/app/nginx/sites-available/cms

lrwxrwxrwx 1 root root 42 Aug 29 10:54 edx-release ->

/edx/app/nginx/sites-available/edx-release

lrwxrwxrwx 1 root root 36 Aug 29 10:54 forum ->

/edx/app/nginx/sites-available/forum

lrwxrwxrwx 1 root root 34 Aug 29 10:54 lms -> /edx/app/nginx/sites-available/lms

lrwxrwxrwx 1 root root 37 Aug 29 10:54 xqueue ->

/edx/app/nginx/sites-available/xqueue

再看看lms的配置文件,你可以做个最基本的配置修改,如修改端口号,同时也看到通过这个配置文件,nginx、gunicorn和django很好地开始协作。

现在我们应该得到这个结论:edx的主体部分是一个基于django框架的应用程序,它通过gunicorn部署到nginx服务器。现在的系统通过开机应用程序init在开机的时候就启动配置好的nginx服务器和其他包括数据库服务器等应用服务器,并通过supervisor软件启动gunicorn,将edx这个django这个应用软件部署到nginx服务器。

仓促而就,错误在所难免。

本文地址:http://www.codesec.net/Linux/2016-10/135864.htm


edx启动过程分析

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

分页:12
转载请注明
本文标题:edx启动过程分析
本站链接:http://www.codesec.net/view/483742.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(28)