PythonAnyWhere 則是一個服務商,可以提供以 python 為基礎的許多 web framework,例如 django。所以,在 PythonAnyWhere 上要提供一個 Django 網站是內建功能之一。其他的像 flask 或是 bottle 等 web framework 現在也支援。一般人可以申請免費服務試用,可以有 512 MB 的硬碟空間與 100 秒 cpu 時間。如果 100 秒 cpu 時間用完,其實還是可以正常運作,只是慢一點而已,拿來試用非常剛好。
把 Mezzanie 與 PythonAnyWhere 結合在一起是很簡單的。PythonAnyWhere 官方建議在 virtualenv 的環境上來做,也給了範例如下:
第一步,建立 virtualenv 環境
source virtualenvwrapper.sh
mkvirtualenv mezzanine
在 PythonAnyWhere 上必須使用已經提供好 環境設定,所以要使用他們提供的 virtualenvwrapper.sh 與 mkvirtualenv 進入 virtualenv 的環境中。如果要在 virtualenv 裡用到 python3,要使用以下的指令替代上面第二行指令
mkvirtualenv mezzanine --python=python3
如果要使用官方已經裝好的 numpy, scipy 的話,要加上這個參數 --system-site-packages。執行完之後,就會停在 virtualenv 的環境裡:
第二步,安裝 mezzanine(mezzanine)13:12 ~ $
接下來就是使用 pip install mezzanine 安裝。
第三步,建立網站專案
在經過一連串下載後,就是開始第一個專案來試用一下了。開第一個專案的指令是:
mezzanine-project project_name
cd project_name
接下來的動作是設定時區與建立資料庫內容。首先在 settings.py 找到TIME_ZONE, 改成我們這裡的TIME_ZONE='Asia/Taipei'。
然後執行以下指令:
會在資料庫裡建立所需要的 table。預設使用的是 sqlite3 的資料庫。眼睛利一點的會看到管理者預設帳號密碼是 admin/default。等一下要用,真的要上線一定要去改密碼。python manage.py createdb --noinput
第四步,設定 wsgi
PythonAnyWhere 與 mezzanine 的連結是靠 wsgi,請到 web 頁籤
建立一個按下建立 web app 的按鈕,選擇 manual configuration。
然後把 virtualenv 路徑設定到 /home/yourusername/.virtualenvs/mezzanine 。
找到 WSGI configuration file 所指的檔案連結按下去,改成以下這樣:
然後按下web app 的 Reload 按鈕,接下來要處理 static 檔案。import os import sys # add project folder to path path = '/home/yourusername/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'] = 'project_name.settings' # load default django wsgi app for Django >= 1.4 from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
第五步,設定 static 檔案
在 web 頁籤,到 Static files 那裡設定:
Url: /static/
Path: /home/yourusername/project_name/static
然後執行以下指令:
這樣會把 static 的檔案搬到對的地方去。再按下web app 的 Reload 按鈕。python manage.py collectstatic
現在就可以瀏覽一下剛才的成果。
接下來,使用的方法就又是另一個問題了。
沒有留言:
張貼留言