BLOG
Enjoy when you can, and endure when you must.
MAR 05, 2016/心得与分享
DannySite 4.1: 更新与使用说明

不得不说时间飞逝,距离上一次网站的更新又一晃眼过去了大半年的时间。这一段时间其实挺忙的,做了些项目、学习了一些新的知识、到不少地方旅游了一下、为自己增加了一个个人主页(http://danny.onl)、过了一个欢快的春节...最后又回过来对自己的网站做了一次小小的更新。当然这其实是有原因的啦。

最近更换了服务器,如果有朋友时长关注这些,会发现我转向了阿里云香港的服务器上,并且走的 CN2 线路,不得不说确实对于国内来说更快更稳了点。虽然这里只是一个小小小的个人网站,不过既然存在,那就应该想办法做得更好,也让来访的朋友更舒心。另外,我也将静态文件迁移至了 OSS 上,因此本次更新也主要是为了适配这一点。

另外,有很多朋友提到说我虽然公开了网站源码,但对于项目该如何配置与部署说得非常含糊。我确实意识到了这一点并不是一个好的作风。也借此机会在这里对“如何使用”做一个补充。

 

更新日志

1. 在博客首页增加对“友情链接”的显示;

2. 增加对阿里云 OSS 的支持,在使用前请针对 settings 中的 OSS_OPTIONS 配置项进行配置;

3. 修改 CKEditor 相关逻辑以支持阿里云 OSS,在使用前,需设置 DEFAULT_FILE_STORAGE 为 'core.storage.AliOSSStorage' 并将 CKEDITOR_IMAGE_BACKEND 配置项改为 'oss';
4. test.models 增加 oss_image,可以在 INSTALLED_APPS 中引入 test 对 OSS 上传进行测试。

 

使用说明

工程代码:https://github.com/manyunkai/dannysite4

1. 基础环境搭建:

dannysite4 是在 Python3 上开发,并做了对 Python2.7 的支持;因此需安装 2.7.3 以上或 3.2 以上版本的 Python;Django 需选择 1.8.X 版本;另外还需安装以下第三方库:

pymysql==0.6.6

pillow==2.8.1

six==1.9.0

redis==2.10.3

qrcode==5.1

requests==2.8.1

oss2==2.0.5

如果要统计博客的访问量,还需正确配置 redis。

2. 基本配置项说明:

这里我主要针对我自定义添加的一些配置项做一个详细的说明:

ACCOUNT_LOCK_TIME = 30 * 60
ACCOUNT_LOCK_BY_ATTEMPTED_COUNT = 5

这两项是关于账户安全的配置,即在登录时如果遇到多次密码错误的情况,会临时锁定该账户以保证安全。其中 ACCOUNT_LOCK_BY_ATTEMPTED_COUNT 是可尝试的次数,如果大于此次数则会被锁定,ACCOUNT_LOCK_TIME 是临时锁定的时间,单位为秒,如这里设定的是半个小时。

CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'cus',
    },
    'basic': {
        'toolbar': 'Basic'
    }
}

以上是针对 CKEditor 富文本编辑器的配置,CKEDITOR_UPLOAD_PATH 指定文件上传的根目录,CKEDITOR_IMAGE_BACKEND 指定图片处理的 backend,我在此增加了一个 oss 的 backend 来增加对阿里云 OSS 的支持,我会在后面详细描述。CKEDITOR_CONFIGS 是配置富文本编辑器功能面板的。其他还有很多可配置项,具体可参考 CKEditor 的文档。

BLOG_VISITORS_CACHE_KEY = 'blog:{0}:visitors'
BLOG_VISITORS_CACHE_TIMEOUT = 24 * 60 * 60

这两项是针对博客访问量缓存的配置,BLOG_VISITORS_CACHE_KEY 配置缓存的 KEY 值,BLOG_VISITORS_CACHE_TIMEOUT 则是缓存周期,意思是在缓存周期内,一个 session 对一个页面的多次访问只计 1 次有效访问。博客访问量的统计用到了 redis 作为缓存,因此还有如下关于 redis 的配置项:

REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_PASSWORD = None
REDIS_SOCKET_TIMEOUT = None
REDIS_CONNECTION_POOL = None
REDIS_CHARSET = 'utf-8

最后是 OSS 配置:

OSS_OPTIONS = {
    'bucket': '',       # your bucket
    'location': '',     # root you want to store you files
    'base_url': '',     # url prefix when requesting
    'image_process_base_url': '',   # url prefix when requesting processed image
    'image_process_rule': '',   # such as @1e_1c_0o_0l_100h_100w_100q
    'endpoint': '',     # your endpoint
    'access_key': '',   # your access key
    'access_key_secret': ''     # your access key secret
}

另外记得检查一下数据库、模板等配置。

3. 运行测试服务器:

配置好之后,首先初始化数据库:

python manage.py migrate

并增加一个超级用户:

python manage.py createsuperuser

最后即可尝试运行了:

python manage.py runserver

 

如何使用 OSS 作为存储的 backend

对于最基本的使用来说,只要正确配置 OSS_OPTIONS,即可开始使用了。你可以将 test 加入到 INSTALLED_APPS 中,然后尝试到后台管理的以下位置做文件上传的尝试:

请注意我在 test.models.Test.oss_image 上指定了 storage=AliOSSStorage()。

如果要在 CKEditor 中也使用到 OSS 作为上传文件的存储 backend,则需要做一下配置修改:

将 DEFAULT_FILE_STORAGE 改为 core.storage.AliOSSStorage:

DEFAULT_FILE_STORAGE = 'core.storage.AliOSSStorage'

将 CKEDITOR_IMAGE_BACKEND 改为 oss:

CKEDITOR_IMAGE_BACKEND = 'oss'

然后按需修改 CKEDITOR_UPLOAD_PATH,然后你可以在 CKEditor 中尝试上传图片等。

 

大概就是这样了,如果有任何问题,都可以随时与我联系,我们一起交流讨论。

COMMENTS
LEAVE COMMNT