Skip to content

lf8289/white

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

White

White is a blog cms. it's based Anchor-cms that a blog cms wrote by php. The White project keeps the most of achor-cms features, but pythonic and some new feartures:

  1. write blog use markdown
  2. custom field extension
  3. custom theme
  4. multi-languages support
  5. rss feed
  6. some monitor api for mananger
  7. database connection pool
  8. memozie cache
  9. take advantage of Flask and Jinjia2

image

Install

Firstly download or fetch it form github then run the command in shell:

pip install -r requirements.txt

or:

Firstly download or fetch it form github then run the command in shell:

cd white # the path to the project
python setup.py install

Development

Fork or download it, then run:

cd white # the path to the project
python setup.py develop

Compatibility

Built and tested under Python 2.7

Setup Database

  • create database in mysql:
  • then run the mysql schema.sql script in the project directoy schema:
mysql -u yourusername -p yourpassword yourdatabase < schema.sql

if your database has not been created yet, log into your mysql first using:

mysql -u yourusername -p yourpassword yourdatabase
mysql>CREATE DATABASE a_new_database_name
# = you can =
mysql> USE a_new_database_name
mysql> source schema.sql

when firstly run the project, please use the root account, then go to user management ui change your account info:

username

white

password

white

Setup Config file

Write python setting in a file, the setting class name must be Setting

from white.setting import Config

class Setting(Config):

    HOST = 'localhost' # server host
    PORT = 5000 # server port

    DEBUG = True

    ## Flask Session module
    # session
    SECRET_KEY = '7oGwHH8NQDKn9hL12Gak9G/MEjZZYk4PsAxqKU4cJoY='
    SESSION_TYPE = 'filesystem'
    SESSION_FILE_DIR = '/var/www/$yoursite.com/cookies'

    ###### 
    # Wanna use redis session, please comment filesystem session settings
    # SESSION_TYPE = 'redis'
    # import redis 
    # SESSION_REDIS = redis.Redis()
    # PERMANENT_SESSION_LIFETIME = datetime.timedelta(60)

    SESSION_FILE_THRESHOLD = 100
    SESSION_FILE_MODE = 0600

    ## DB Config
    DB_CONFIG  = {
        'db': 'white',
        'user': 'white',
        'passwd': 'white',
        'host': 'localhost',

        'max_idle' : 10 # the mysql timeout setting
    }
    DB_MAXCONN = 10
    DB_MINCONN = 5

    # the custom fields asset path
    CONTENT_PATH = '/var/www/$yoursite.com/content'

    LANGUAGE = 'en_GB' # in ('zh_CN', 'zh_TW', 'en_GB')

    THEME = 'default' # the froent theme name

If your wanna set session adapter please see more information in flask-session doc.

Run in console

The terminal help options

> python whited -h
usage: whited [options]

optional arguments:
  -h, --help            show this help message and exit
  -host HOST, --host HOST
                        the host for run server
  -p PORT, --port PORT  the port for run server
  -d, --debug           open debug mode (default False)
  -c FILE, --config FILE
                        config path (default '/etc/white/config')

Try run

If you wanna use production mode and whited running the blog service, please install gevent firstly.

> python whited -c=conf/config -d
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader

Run White in Other WSGI Servers

When you wanna use other wsgi servers, just booststrap app, then take the app in your server api:

from white.server import WhiteServer

server = WhiteServer()
app = server.bootstrap()

wsgi_server_run(app) # your wsgi warpper

Monitor Api

All apis require admin permisssion, please take admin user session.

DB status check

GET /admin/meta/db_status.json

{
  "message": "Fine", 
  "status": "ok"
}

Get Application config

GET /admin/meta/config.json

{
  "APPLICATION_ROOT": null, 
  "CONTENT_PATH": "$content_path", 
  "CSRF_SECRET": "hide: e8c78f7bfe8eccf18b1e731a27a7e2835739a9c8a354559ad5eced4c5f76d909", 
  "DB_CONFIG": {
    "db": "white", 
    "host": "localhost", 
    "max_idle": 10, 
    "passwd": "hide: d38681074467c0bc147b17a9a12b9efa8cc10bcf545f5b0bccccf5a93c4a2b79", 
    "user": "white"
  }, 
  "DB_MAXCONN": 10, 
  "DB_MINCONN": 5, 
  "DEBUG": true, 
  "HOST": "localhost", 
  "JSONIFY_PRETTYPRINT_REGULAR": true, 
  "JSON_AS_ASCII": true, 
  "JSON_SORT_KEYS": true, 
  "LANGUAGE": "en_GB", 
  "LOGGER_NAME": "white", 
  "MAX_CONTENT_LENGTH": null, 
  "PERMANENT_SESSION_LIFETIME": "31 days, 0:00:00", 
  "PORT": 5000, 
  "PREFERRED_URL_SCHEME": "http", 
  "PRESERVE_CONTEXT_ON_EXCEPTION": null, 
  "PROPAGATE_EXCEPTIONS": null, 
  "SECRET_KEY": "hide: dc5c40edf6c37edf0a7c615127d435b5aa8d0fcaccef4fde20f190aff81148fd", 
  "SEND_FILE_MAX_AGE_DEFAULT": 43200, 
  ...
}

Get site meta

GET /admin/meta/meta.json

{
  "auto_published_comments": true, 
  "comment_moderation_keys": [], 
  "description": "White is a Blog system", 
  "posts_per_page": 10, 
  "site_page": 0, 
  "sitename": "White"
}

Get current user info

GET /admin/user.json

{
  "bio": "", 
  "email": "white@demo.com", 
  "real_name": "White", 
  "role": "root", 
  "status": "active", 
  "uid": 1, 
  "username": "white"
}

LICENSE

2015 Copyright (C) White

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

About

A Blog Cms Website backed by MySQL in Flask&Python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 65.9%
  • HTML 19.3%
  • CSS 10.3%
  • JavaScript 4.5%