創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2016年12月3日 星期六

建置Django應用程式的運行環境

本文提要

可運行Django應用程式的技術堆棧有很多樣的選擇,這裡採用的組合:
  • OS: Ubuntu Server 14.04
  • Web Server: Apache + mod-wsgi
  • Database: PostqreSQL或是SQLite
  • Python: 3.4
  • Django: 1.8
以下假定要在個人家目錄下建立Python虛擬環境,在其中建立新的Django專案。當然如果已有現成合適可用的Python虛擬環境與Django專案,直接複製即可。

以下也假定已安裝好PostqreSQL Server,就不花巨大篇幅解釋這方面的設置,以及Apache或Python虛擬環境的詳細使用,這些寫在別處。這裡僅寫與Django直接相關的部分。

只是簡單的範例,應視實際情況做修改。

安裝必要套件


$ sudo apt-get update
$ sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

建立Python虛擬環境


$ sudo pip3 install virtualenv
$ mkdir ~/myproject
$ cd ~/myproject
$ virtualenv myprojectenv
$ source myprojectenv/bin/activate
pip install django

建立並設置新Django專案


django-admin.py startproject myproject .
修改myproject/settings.py

STATIC_ROOT = os.path.join(BASE_DIR, "static/")


cd ~/myproject
./manage.py makemigrations
./manage.py migrate
./manage.py createsuperuser
./manage.py collectstatic
deactivate
離開虛擬環境,繼續其它設置工作。

設置Apache

修改/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    # ...省略其它不相關內容

    Alias /static /home/user/myproject/static
    <Directory /home/user/myproject/static>
        Require all granted
    </Directory>

    <Directory /home/user/myproject/myproject>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
    # wsgi 3.4版,Daemon mode用以下2種寫法都可以。3.3版,要用第2種
    WSGIDaemonProcess myproject python-home=/home/user/myproject/myprojectenv
    # WSGIDaemonProcess myproject python-path=/home/user/myproject:/home/user/myproject/myprojectenv/lib/python3.4/site-packages
    WSGIProcessGroup myproject
    WSGIScriptAlias / /home/user/myproject/myproject/wsgi.py
</VirtualHost>

其它

在wsgi.py加入路徑,重要

import sys
sys.path.append("/home/user/myproject")
所append的這個目錄即manage.py的所在

修改專案目錄的屬性,讓Web Server能順利在其中執行:

$ sudo chown -R www-data:www-data ~/myproject
若用SQLite

$ chmod 664 ~/myproject/db.sqlite3
若用PostgreSQL

$ apt-get install libpq-dev
然後記得先進入python虛擬環境中再安裝psycopg2。進入與離開虛擬環境的方式這裡就不重複寫了。

pip install psycopg2
若用Mezzanine商店模組Cartridge
關於SHOP_CURRENCY_LOCALE設置
先用locale指令看一下變數,再依據自己的變數,在/etc/apache2/envvars加入如:

export LANG='zh_TW.UTF-8'
export LC_ALL='zh_TW.UTF-8'
最後將Apache Server重啟

$ sudo service apache2 restart

參考

沒有留言:

張貼留言