markdown wiki by python with flask
采用Python+Flask+Redis+SQLite开发(看后面选型介绍)
首先它的定位是一款wiki系统,旨在作为个人或小团队的知识库管理系统。
目前仅支持python3,建议Python3.4及以上
推荐采用SuperVisor+Nginx+Gunicorn+Virtualenv的组合。以ubuntu为例:(你也可以参考conf/目录下的配置文件):
基础包安装
sudo apt-get install supervisor -y
sudo apt-get install build-essential python-software-properties software-properties-common -y
sudo add-apt-repository ppa:nginx/stable
sudo add-apt-repository -y ppa:rwky/redis
sudo apt-get update
sudo apt-get install nginx -y
sudo apt-get install -y redis-server
sudo apt-get install python3-pip -y
sudo apt-get install libssl-dev libffi-dev python-dev python3-dev -y
sudo apt-get install libevent-dev libssl-dev libffi-dev libsasl2-dev libpq-dev libxml2-dev libxslt1-dev libldap2-dev -y
配置pip源为豆瓣源: vim ~/.pip/pip.conf
[global]
index-url = https://pypi.douban.com/simple #豆瓣源,可以换成其他的源
disable-pip-version-check = true #取消pip版本检查,排除每次都报最新的pip
timeout = 120
配置virtualenv:
sudo pip3 install virtualenv
mkdir venv && cd venv
virtualenv mdwiki
source mdwiki/bin/activate
pip3 install gunicorn
配置相关配置(具体配置文件请参考conf/目录下对应文件)
sudo vim mdwiki/gunicorn.conf.py
sudo vim /etc/supervisor/conf.d/default.conf
sudo vim /etc/nginx/conf.d/default.conf
设置开机自启
sudo vim /etc/rc.local
/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
生产环境部署: 在客户机安装NodeJS及gulp,客户机安装fabric
pip3 install fabric
python run.py create_db
python run.py init_admin -n yourname -e youremail -p yourpassword
配置好conf目录下的fabric.py脚本。然后在项目目录下执行:
gulp product
fab -f conf/fabric.py deploy
即可实现自动部署。以后每次即只要执行这两条命令就可部署至远程。
如果你需要二次开发,或者只是想本地进行简单测试:本地开发环境安装
前端配置的话你需要安装node.js,及gulp。
npm init
#用conf/gulp-version-number替换 node_moules/gulp-version-number
gulp dev
gulp watch
python配置你需要
pip3 install -r requirements.txt
python run.py create_db
python run.py init_admin -n yourname -e youremail -p yourpassword
python run.py run
一些说明后续会细化及补充
Python3 or 2.7?
作为新手,Python3义不容辞.为什么?就为了原生支持UTF-8.(开玩笑),因为Python3代表了Python的未来,而且越来越多的库已经迁移到了Python3,没有什么理由不选择它。
IDE选择:
pycharm+sublime text3,这个也没必要解释了。
Web框架选择:
Flask(为什么?只会这个,而且大家都说好。)
服务器选择:
nginx+gunicorn这应该是比较流行的方案吧,也不做过多解释。
数据库选择: SQLite+Redis
部署方式:
浏览器兼容性: 不考虑万恶的IE
后端库选择:
Flask插件如下:
前端库选择:
gulp-前端资源管理与打包,可以参考我的一篇文章:gulp组织小型项目小记
animate.css特效
bootstrap 都懂的
jQuery
jQuery插件:validate,fancyBox,jQuery-ui
simplemde markdown编辑器
webuploader 百度开源的文件上传组件
toastr一款漂亮的通知组件
taggle.js 标签输入组件
highlight.js代码高亮
email:xbynet@outlook.com
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。