基于django的轻量级CMS Mezzanine搭建笔记

版权声明:本文为博主原创文章,未经博主允许请尽情转载。 https://blog.csdn.net/yanghuan313/article/details/70215655

0x00 什么是Mezzanine

它是一个基于django的内容管理平台(content management platform),组成简单,可扩展性和定制性强,特别适合小型的个人博客系统。它也提供了类似于wordpress的管理页面、博客发布、图片展示等功能,配置简单,数据库灵活改变。相对于wordpress那样笨重繁多的功能来说,mezzanine显得非常轻巧,但麻雀虽小,五脏俱全,博客系统该有的东西,它都有提供。
官方网站:Mezzanine - The Best Django CMS

0x01 安装依赖环境

接下来我以基于debian发行版的linux系统为例,介绍如何搭建。
首先,确保你安装了python2.7(最好是这个版本),并且已经安装了pip,同时setuptools已经完成了更新。
输入下面的命令完成setuptools的更新:

pip install -U setuptools

接下来,我们安装一些python相关的依赖:

apt-get install python-imaging python-dev
apt-get install libjpeg8 libjpeg8-dev build-dep

如果你用的是centos:

centos:  yum install python-imaging python-dev 

0x02 安装Mezzanine

方式一,直接通过pip安装:

pip install mezzanine

我失败了,所以选择了下面这种方式,去官方的 github clone文件,手动安装:

mkdir mezzanine-src
cd mezzanine-src
git clone https://github.com/stephenmcd/mezzanine.git

接下来,我们进入到目录中,执行安装命令:

python setup.py install

我在安装的时候特别慢,有些库下载直接超时,如果你也出现这种情况,建议可以考虑手动pip安装那些库。

接下来,创建我们的第一个工程:

mezzanine-project yourproject_name
cd yourproject_name
python manage.py createdb --noinput  # 这里用的是默认的SQLite数据库,后面我再说怎么修改

这里写图片描述

本地把项目跑起来:

python manage.py runserver

这里写图片描述

这时,你打开浏览器,本地访问 http://127.0.0.1:8000/ 就能看到网站了。注意,别用 localhost,它目前并不在mezzanine允许的HOST列表中,所以会报错。

这里写图片描述

0x03 修改默认数据库

大家刚刚应该注意到了,我说这个项目默认的数据库是SQLite,这个轻量级数据库对一个博客系统来说完全足够了,但有特殊需求怎么办?我如何换成mysql?

Mezzanine 默认支持4种数据库,postgresql_psycopg2 , mysql , sqlite3 和 oracle 。

我们进入工程目录,我的目录大概是这样的:

这里写图片描述

接着进入 yourproject_name (我的是myproject),编辑 local_settings.py

这里写图片描述

这个注释写的很清楚了,我就不做更多的说明了。

修改完以后,重新执行:

python manage.py createdb --noinput

即可重新创建数据库。

0x04 修改默认的主页

这个主页是不是挺low的?我们的博客系统肯定不能用这么low的主页,比如我想要主页打开就是文章的列表,应该怎么办?

依旧进入到刚刚修改数据库时的那个目录,找到并编辑 urls.py 文件,

这里写图片描述

看到我划线的地方了吧,去掉划直线那句代码的注释,并把最上面的 HOMEPAGE AS STATIC TEMPLATE 对应的url语句注释起来。还没完,它提示你了,别忘了引入视图函数
在该文件(urls.py)的开头,加上 import mezzanine.blog.views ,重启项目,你就会发现你的首页变成了 Blog 。

这里写图片描述

0x05 修改配置信息

大家肯定注意到了,左上角是 Mezzanine ,我想让它显示 MyBlog ,怎么办?
还有,我想要开启一些功能,但是admin管理页面无法做到,怎么办?

肯定不会让你改源代码的,访问:http://mezzanine.jupo.org/docs/configuration.html#default-settings

比如第一个问题,就可以通过配置这个选项来解决:

这里写图片描述

local_settings.py 文件里随便找个地方,加上:

这里写图片描述

重启服务,你就能看到变化了。
其它的配置也是类似。

0x06 部署

官方其实提供了部署方式,大家只用四级英语的水平看看文档也就明白了。
我这里提供自己的简易部署方式,基于uwsgi + nginx 完成的。因为我上一篇博客也完成了类似的部署,大家可以对照看一下:centos+flask+uwsgi+nginx+supervisor部署小结

首先你要正确安装 uwsgi 和 nginx ,这里我就不细说了,网上有很多。重点是安装完 uwsgi 以后,启动一下看有没有报错(错误会用三个 !!!括起来)。

然后,我们开始配置:

第一步,在第二层工程目录下,也就是和local_settings.py 一个目录下,有个 wsgi.py ,把它拷出来,放到上一层目录,即和manage.py 一个目录下。

第二步,在 manage.py 所在目录下,新建一个 config.ini 文件,内容如下:

[uwsgi]

socket = 127.0.0.1:8001 
chdir = /usr/apps/python/myblog/    //改成你的项目根目录
processes = 2 
threads = 4 
module = wsgi      //这里和 wsgi.py 对应

第三步,nginx 配置如下,配置文件里其余的地方不用改

server {

        listen   80;
        server_name www.you.com;
        access_log /var/log/myblog_access.log;
        error_log /var/log/myblog_error.log;

        location / {
         include        uwsgi_params;
         uwsgi_pass     127.0.0.1:8001;
        }

        location /static/ {
         alias  /usr/apps/python/myblog/static/;
        }
}

大家观察nginx的配置文件应该注意到了,静态资源文件夹 static 下的文件是不全的,访问时会报404,怎么办?
一种解决方案是把 Mezzanine 框架中的static文件直接拷过来,不过我发现了更好的解决办法,直接执行:

python manage.py collectstatic

第四步,开启服务:

uwsgi config.ini
nginx -s start

观察输出信息,都没报错的话,应该就搞定了。

0x07 小结

忙活了大半天,期间出了一个令我怀疑人生的BUG,无论如何配置nginx,静态资源都是404,后来才发现,不知道什么时候我设置了缓存时间30天,而且还是我在错误配置的时候,所以后面就悲剧了。

当时我就在想,之前写过一篇博客,关于浏览器的缓存头部,还说什么如果黑客给你设置一个极长的缓存时间,那你将活在梦中。

没想到自己竟然亲身体验了一把,缓存真是个好东西。

展开阅读全文

没有更多推荐了,返回首页