Django项目 - Lenotes浅谈(未完待续)

首先,简单地介绍一下Lenotes这个项目吧,这是一个类似于在线共享文档的项目,主要的特色是支持多人共同编辑同一份文件,可以用来作为共享日记,开发记录,作业公告板等等。作为首次开发网络应用的尝试,我们在开发的过程中也遇到许多的问题,也是花费许多的功夫才完成项目的基本功能;所以呢,我想在这里,把开发过程中遇到的一些问题以及解决方法总结一下,方便新学者在开发过程中查阅,当然,由于是首次尝试开发这类型的应用,难免某些地方处理的不是很好,大家如果有更好的解决方案也欢迎在评论区留言,谢谢^_^

github仓库 Lenotes

主要分为前端,后端,服务端三部分,由于我个人在小组中主要负责的是后端开发以及服务器部署与维护,所以呢,前端部分会少一丢丢hhh

前端:

前端主要用到的有 HTML, CSS, JavaScript 数种语言,熟悉的同学应该知道各种语言的基本用途,这里就稍稍提一下就好

HTML、 CSS、 JavaScript三者的关系 ,以下内容来自参考博客,有兴趣可以转过去了解更多的内容

(参考博客:新手理解HTML、CSS、javascript之间的关系, 新手理解HTML、CSS、javascript之间的关系)

网页主要由三部分组成: 结构( Structure) 、 表现( Presentation) 和行为( Behavior)

 

HTML —— 结构, 决定网页的结构和内容( “是什么”)

CSS —— 表现( 样式) , 设定网页的表现样式( “什么样子”)

JavaScript( JS) —— 行为, 控制网页的行为( “做什么”)

总的来说呢,HTML是你能够看到的东西,CSS则是对你能够看到的东西进行布局使得更加的美观,而JS则是定义了一些动画呀,拖拽呀等等的动作,使得网页更加的灵动hhh

后端:

 

既然我们这是一个Django项目,后端自然是 Python+Django架构喽(Python语言的版本是3.6.5,Django版本是2.0.3,不同的Python版本差异相必大家都是很清楚的,不过Django1.x与2.x版本之间也是有不少的差别的,在查阅有关文档需要注意版本类型,这里我们小组就掉进过坑QAQ)

服务端:

服务端我们采用的是 阿里云ECS服务器+apache2进行项目的部署(参考博客:Django 部署(Apache))参考博客中已经是介绍的很详细的啦,不过呢,我再悄悄填上几个坑吧

浏览器访问及安全:

1.端口号问题:由于http的80端口是默认端口,所以呢,使用这一端口的话需要到正规部门进行注册备份等等(阿里云后台有提供解决方案),所以我们使用类似于8000,8080等端口也是可以的。

2.阿里云的安全组问题:在我们完成部署之后发现还是无法通过浏览器访问,检查后发现是阿里云的安全组策略阻止了未写进安全组策略的协议/端口的访问(学过计算机网络的同学应该很清楚),所以我们要在阿里云的安全组策略加上下面的规则(配置安全组策略的教程很简单,这里就不讲解了)

3.项目的settings.py文件设置:还需要的Lenote/lenote/settings.py中的ALLOWED_HOSTS中将你的服务器的公有IP,域名等添加进去这样才能够通过浏览器进行访问。

4.DEBUG安全问题:这个相信大家都懂的hhh,不过在进行调试后还是很容易忘记设置DEBUG为False,务必注意在修改后执行service apache2 restart命令(Ubuntu)

数据上传与下载:

1.上传的问题不是很大,很多的基本教程就有讲解,主要的问题是要给上传的目标文件夹以及数据库写权限,可以通过执行下面的几条命令完成这个工作:

sudo chgrp -R www-data Lenote/media
sudo chmod g+w -R Lenote/media
sudo chgrp www-data Lenote/db.sqlite3
sudo chmod g+w Lenote/db.aqlite3

2.下载的问题就是很大了,发现下载文件的时候总是会出现500的服务器内部错误,经过检查发现大部分是下载的文件编码不能够被正确识别的问题,这个涉及到服务器支持的编码等等,相对比较麻烦,也没有比较好的解决方案,如果大家有更好的解决方案请多多指教。

数据文件的备份工作:

要问运维最害怕的是什么,估计就是不小心删库了吧hhh,那一瞬间的感觉确实美妙,在测试的时候不小心删了一次,刺激!所以呢,我写了一个脚本来进行数据库的备份工作,以防不小心删库啦啦啦

由于网上大部分的博客都是对mysql数据库的备份操作(调用mysql提供的接口),查了好久没有找到sqlite3的接口,所以呢,照猫画虎写了一个脚本然后设置自动执行就OK的啦

(参考教程:Linux下定时执行脚本, linux定时执行脚本)

LenoteBackUp.sh

修改/etc/crontab文件以实现定时执行备份脚本

Django项目 - Lenotes浅谈(未完待续)_第1张图片

其他补充

2018.9.6 今天因服务器爆炸重装一次系统盘,再次部署了一下项目,结果出现错误:服务器拒接连接,经过检查是

/etc/apache2/ports.conf出了问题,这是由于我们使用的是8080端口,需要将其中的 Listen 80 改为 Listen 8080

另外一个问题是各类库的重新安装问题,有一个小窍门 在原来的开发环境中 pip freeze > requirements.txt 之后在新的开发环境中使用 pip install -r requirements.txt,可以避免依赖库的问题;但是这次不是这方面的问题,而是我们使用的 django-imagekit 与原来存在的 imagekit 库发生冲突,导致不能够正常导入。(报的错误是:ImportError: cannot import name autodiscover)

你可能感兴趣的:(Django项目 - Lenotes浅谈(未完待续))