2016年3月15日 星期二

[python] django-cms 在 pythonanywhere 的安裝

django-cms 是基於 django 的 CMS (Content Management System,內容管理系統),可以快速建立可上線的網站、部落格…等等。它也是去年(2015 年)被選為最佳 CMS 的系統。(http://www.cmscritic.com/announcing-the-2015-winner-for-best-open-source-cms/)

PythonAnyWhere 則是一個服務商,可以提供以 python 為基礎的許多 web framework,例如 django。所以,在 PythonAnyWhere 上要提供一個 Django 網站是內建功能之一。其他的像 flask 或是 bottle 等 web framework 現在也支援。一般人可以申請免費服務試用,可以有 512 MB 的硬碟空間與 100 秒 cpu 時間。如果 100 秒 cpu 時間用完,其實還是可以正常運作,只是慢一點而已,拿來試用非常剛好。

把 django-cms 與 PythonAnyWhere 結合在一起是很簡單的。PythonAnyWhere 官方似乎沒有比較正式的說明,不過在經過測試之後,在 virtualenv 的環境上來做,應該會是比較好的選擇。

第一步,建立 virtualenv 環境
source virtualenvwrapper.sh
mkvirtualenv djangocms --python=python3 
在 PythonAnyWhere 上必須使用已經提供好 環境設定,所以要使用他們提供的 virtualenvwrapper.sh 與 mkvirtualenv 進入 virtualenv 的環境中。
如果要在 virtualenv 裡用到 python3,所以加上 --python=python3

如果要使用官方已經裝好的 numpy, scipy 的話,要加上這個參數 --system-site-packages。

執行完之後,就會停在 virtualenv 的環境裡:
(djangocms) 12:24 ~ $

第二步,安裝 djangocms-installer
現在 django-cms 是使用 djangocms-installer 來安裝,所以要先用 pip 安裝這個。
pip install djangocms-installer
第三步, 建立 djangocms 專案
這裡建議照我說的做,不然不小心會把自己的家目錄裡的東西砍光光。
首先,開一個目錄叫 project_name,然後進去。

(djangocms) 12:32 ~ $ mkdir project_name(djangocms) 12:33 ~ $ cd project_name/(djangocms) 12:34 ~/project_name $

然後使用以下指令建立專案:
(djangocms) 12:34 ~/project_name $ djangocms -p . my_demo

會開始問一些問題,基本上就一路按 enter,不然就照我的來選:
Database configuration (in URL format) [default sqlite://localhost/project.db]:
django CMS version (choices: 2.4, 3.0, 3.1, 3.2, stable, develop) [default stable]:
Django version (choices: 1.5, 1.6, 1.7, 1.8, 1.9, stable) [default stable]:
Activate Django I18N / L10N setting (choices: yes, no) [default yes]:
Install and configure reversion support (choices: yes, no) [default yes]:
Languages to enable. Option can be provided multiple times, or as a comma separated list. Only language codes supported by Django can be used here: en
Optional default time zone [default Etc/UTC]:
Activate Django timezone support (choices: yes, no) [default yes]:
Activate CMS permission management (choices: yes, no) [default yes]:
Use Twitter Bootstrap Theme (choices: yes, no) [default no]:
Use custom template set [default no]:
Load a starting page with examples after installation (english language only). Choose "no" if you use a custom template set. (choices: yes, no) [default no]: yes



然後就開始安裝到停下來。會要你輸入管理員的帳號、信箱、密碼。
Creating admin userUsername (leave blank to use 'ironman'): Email address: 在這裡輸入信箱Password: Password (again): Superuser created successfully.All done!


第四步,建立 web app
到 web 頁籤按下建立 web app 的按鈕,選擇 manual configuration。
設定 virtualenv 路徑設定到 /home/yourusername/.virtualenvs/djangocms。

import os
import sys
# add project folder to path
path = '/home/ironman/project_name'
if path not in sys.path:
    sys.path.append(path)
# Remove any references to your home folder (this can break Mezzanine)
while "." in sys.path:
    sys.path.remove(".")
while "" in sys.path:
    sys.path.remove("")
# specify django settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_demo.settings'

# load default django wsgi app for Django >= 1.4
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
到 Static files 那裡設定:
Url: /static/
Path: /home/yourusername/project_name/static
第五步,修改 db 位置設定
因為用安裝器裝的設定,有一點不一樣,所以 db 位置它指錯了。
請到 project_name/my_demo/settings.py 裡,找到這裡:
DATABASES = {
    'default': {
        'CONN_MAX_AGE': 0,
        'ENGINE': 'django.db.backends.sqlite3',
        'HOST': 'localhost',
        'NAME': 'project.db',
        'PASSWORD': '',
        'PORT': '',
        'USER': ''
    }
}

把 'NAME': 'project.db' 改成 'NAME': 'project_name/project.db'

不改會出現錯誤:no such table: cms_urlconfrevision

再按下web app 的 Reload 按鈕。
瀏覽結果,這是有選範例首頁的樣子:

這是沒選範例首頁的樣子:


接下來就是怎麼使用它的問題了。這裡有「使用者」的說明文件。http://docs.django-cms.org/en/3.2.3/user/index.html

沒有留言:

張貼留言