Django项目设计(项目从需求分析到上线整个流程记录)

Django部署遇到的问题:

nginx+gunicorn 

nginx修改配置文件监听端口

主要是修改监听端口和域名

 

gunicorn

ls1@bbdm-lab:~/web_new$ gunicorn -w 4 -t 3600 --bind unix:/tmp/bbdm.hzau.edu.cn.socket web_project.wsgi:application

 

screen  -ls  //查看进程

screen -r  web   //进入进程

遇到问题

当你挂起screen,下次想重新连上screen时,有时会出现screen session的状态为Attached但是却连不上的情况,比如我想重新进入session id 为18352的screen,运行‘screen -r 18352’,提示“There is no screen to be resumed matching 18352”,解决方法如下:

screen -ls // 列出状态为Attached的session id

screen -D  -r <session-id>

//进入screen之后按住CTRL + a + d 就可以退出进程

解释:-D -r 先删除前一用户再登陆。

 

 

 

下面是我的项目参赛文档

目前生物信息方面的研究是很热门的内容,其中研究识别和预测lncRNAs的生物信息学方法是一个热点内容,虽然目前许多的lncRNAs预测工具提供web应用,但其中很多的web应用已关闭,而很多预测工具包其所使用的开发语言不同,所需的各种环境也不同,研究人员在对多种方法结果对比时配置环境和调用接口极不方便。针对当前lncRNAs预测工具分散、没有集中管理、运行环境各不相同的情况,且加上目前还没有一个全面的预测lncRNAs的平台,因此我们想到提供一个统一、完整的web平台供相关生物信息研究人员预测未知RNA使用。

目前平台整合了目前科学界常用的以及最新的识别并预测lncRNAs的方法,提供了一个完整、统一的web平台和软件包供研究人员对未知RNA进行预测使用,可大幅提高研究人员的工作效率。我们的平台提供了9个lncRNAs预测软件(longdist、CPAT、CPC2、CPPred、PLEK、CNCI、lgc、LncADeep、FEElnc),均可实现正常使用。用户在进入页面后,可以查看相关的背景知识和每个软件的注释(包括论文出处和输出样式)。在预测界面,用户可选择相应模型,加载自己的fasta格式文件进行预测,之后系统提示用户输入邮箱地址,邮箱地址输入后不久我们会将结果发送至对应的邮箱。

网站前端采用的bootstrap框架。网站后端采用的基于python语言的django框架。前后端使用了ajax来进行交互。测试在电脑中完成之后,需要一个可持续稳定的服务器进行web的部署,这里采用nginx+gunicorn的方式进行部署。将nginx作为服务器最前端,接收web的请求,统一管理请求。nginx把所有静态请求自己来处理。然后,nginx将所有非静态请求通过gunicorn传递给Django,由Django来进行处理,从而完成一次完整的web访问。

 

图1 技术路线                   图2 系统流程图

 

 

界面设计:网站前端采用的bootstrap框架,它基于html css JavaScript的前端开发框架,并且在jQuery的基础上进行了改进和完善,实现响应式布局并且完成手机电脑的自适应.在制作过程中参考了一些现有的科研工具网站,充分体现了简洁大方的设计理念。简单实用是该项目最大的特点。

 

 

关键技术:(重点难点)

1.页面静态化以及前后端分离

页面静态化的主要目的是为了加快页面的加载速度。做法:将信息详情页面做成静态HTML,放在CDN(减少了服务端的压力,主要用的百度的cdn)上做为静态数据发送给用户端,而数据信息通过前端ajax 异步发送请求来获取。只获取动态数据信息部分,加载速度可以达到全部渲染的2倍。

2.预测工具的收集

LncRnas的预测工具来源于各篇论文,目前许多的lncRNAs预测工具部分提供了web应用,但其中很多的web应用已关闭。同时其他大量的lncRNAs预测工具基于软件包的形式分散,其所使用的开发语言不同,所需的各种环境也不同,研究人员在对多种方法结果对比时配置环境和调用接口极不方便。针对当前lncRNAs预测工具分散、没有集中管理、运行环境各不相同的情况,一个整合的、全面的预测lncRNAs的平台是十分必要的,会极大地提高研究人员的研究效率。

3.系统性能提升(并发和响应时间)

并发量是一个比较大的问题。当同时有很多个用户访问并提交测试请求时,因为服务器的资源有限,而服务器在运行预测工具时就会占用很多资源,因此不可能同时运行大量的测试请求,所以设置了一个消息队列,同时设置了4个gunicorn线程,各自监听自身的访问请求,并且设置线程自动结束的等待时间为1小时,防止程序卡死。

4.多软件部署

    许多lncRNAs的预测工具的安装部署基于不同的环境依赖,需要各自配置不同的运行环境来能分别使其正常运行,同时要保持各工具独立完整运行,保持结果的稳定性。

 

主要测试:

作品效果图及测试过程

 

图一 网页预测界面

 

图二 预测模型选择

 

图三 输入邮箱地址

 

 

图四 成功信息提示

 

图四 顺利收到邮件

 

图五 邮箱内预测结果

 

 

运行速度:

前台动态页面响应时间<1秒,生成静态页面响应时间<20毫秒

测试报告等待时间依赖于服务器中的预测工具所运行的时间这个时间优化取决于工具本身。

 

兼容性:

支持多浏览器,手机电脑平板多平台均可使用

 

安全性:

1.信息泄露:本网站不采用登陆模式,所获取的信息只有个人邮箱和fasta文件,并且系统会定期清理缓存,因此不存在个人信息泄露的问题。

2.输入字符:由于网站是作为工具进行使用的,所以不按规定的输入后台无法识别文件就会中止运行,无法得到结果,也不会占据系统资源。

3.上传文件:文件类型未进行限制,但不按照规定文件格式上传文件无法得到结果邮件,系统终止文件的处理。

 

部署方便性

Django项目部署在服务器上采用nginx+gunicorn组合的方式,方便迁移,但项目采用调用系统指令的方式使用预测工具,预测工具在服务器中的部署是比较麻烦的。

 

可用性:

通过主页中的简介和文字说明,该web工具的使用难度非常小,容易上手。

 

 

web平台,无需安装,浏览器登陆http://bbdm.hzau.edu.cn即可使用

项目协调:项目分为两个大部分,分别是预测工具的部署,和web网站的开发,我们分成两个部分进行开发,一人负责一个方面的问题,就可以各司其职的进行程序的处理。

水平提升:通过此次的项目,系统的学习了django网站从实现到上线的整个流程。并且在预测工具的使用中学会了相关的生物信息学和机器学习知识,尤其是对于序列类数据的清洗、筛选、整合的处理流程,还有机器学习模型的具体运行机制,都加深了理解并投入了实践。在本次项目中,我们还锻炼了文献的阅读能力和整合能力,可以快速将以往论文中的观点提取出,分析方法的可行性及提升空间,从而整合出我们自己的方法,在这方面我们受益匪浅。

后续升级:

1.继续调研不断地加入新的lncRNAs预测工具

2.完善用户体验,加入更多信息提示

3.进一步扩展网站功能,加入更多相关功能模块

因为文档中的图片出现一定的问题,所以没能复制过来。文档在下面的连接中,可以下载看看。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章