關於我自己

我的相片
努力尋找人生方向的爆肝程式猿,期望可以多看多聽多學,朝向彩色的夢想前進。

2014年1月31日 星期五

[教學] 在 ubuntu 架設 django + apache2 + mysql

好久沒有寫部落格了,最近剛好在嘗試把 django 架到伺服器上,

所以就來寫一個筆記記錄一下步驟。


事前準備:

主機: Ubuntu 12.04.3 x64

域名: 在這個範例為 coderobot.biz



首先為了方便起見,我會先安裝 fish shell
wget http://fishshell.com/files/2.1.0/linux/Ubuntu/fish_2.1.0-1~precise_amd64.deb 
sudo dpkg -i fish_2.1.0-1~precise_amd64.deb

安裝 django (1.6.1 版本)
pip install Django==1.6.1

安裝 apache2
sudo apt-get update
sudo apt-get install apache2

安裝 wsgi 模組
sudo apt-get install libapache2-mod-wsgi

安裝 mysql,過程會要你設定 root 的密碼
sudo apt-get install mysql-server libapache2-mod-auth-mysql

初始化資料庫
sudo mysql_install_db

安裝 python 的 mysql 函式庫
sudo apt-get install python-mysqldb


完成軟體的安裝之後,現在要進行一些設定

1. 設定你的主機名稱

到 /etc/apache2/http.conf,輸入以下內容:

ServerName www.coderobot.biz


2. 配置虛擬主機

建立配置文件 /etc/apache2/sites-available/controlcenter

controlcenter 是可以自由命名的文件名稱

輸入以下內容
<VirtualHost *:80>
        ServerName coderobot.biz
        ServerAdmin admin@coderobot.com

        WSGIScriptAlias / /var/www/controlcenter/django.wsgi
        <Directory /var/www/controlcenter>
                Order allow,deny
                Allow from all
        </Directory>

        Alias /static /var/www/controlcenter/static
        <Directory /var/www/controlcenter/static>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>
紅色的部分需要根據自己的情況輸入


啟動虛擬主機
sudo a2ensite controlcenter


再來建立 django 的專案

切換到 /var/www 底下,並創建 django 專案
django-admin.py startproject controlcenter

切換到 /var/www/controlcenter 並建立 django.wsgi

輸入以下內容
# coding= utf-8
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'controlcenter.settings'
path = '/var/www/controlcenter'
if path not in sys.path:
    sys.path.append(path)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
紅色的部分需要根據自己的情況輸入


重新啟動伺服器
sudo service apache2 restart

輸入網址,這時候你應該就可以看到 django 預設的頁面了



mysql 配置


將 /etc/mysql/my.cnf 裡面的 bind-address 那行註解


進入 mysql shell,新增給 django 使用的資料庫並新增使用者給遠端連線使用
create database controlcenter;
grant all on controlcenter.* to admin@'%' identified by 'PASSWORD';
grant all on controlcenter.* to admin@'localhost' identified by 'PASSWORD';
set password for 'user'@'%' = password('pass');
紅色的部分需要根據自己的情況輸入


重新啟動 mysql 伺服器
sudo service mysql restart
現在就可以從遠端連接資料庫了

(但為了增加安全性,應該維持只允許 local 連線,遠端則以 ssh 連進主機的資料庫)


編輯 /var/www/controlcenter/controlcenter/settings.py
DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'controlcenter',
        'USER': 'admin',
        'PASSWORD': 'PASSWORD',
        'HOST': '' 
    } 
}
紅色的部分需要根據自己的情況輸入,NAME 為資料庫名稱


初始化 django 的資料庫
python manage.py syncdb


最後,將 debug 模式取消

編輯 /var/www/controlcenter/controlcenter/settings.py
DEBUG = False

ALLOWED_HOSTS = ['.coderobot.biz']
紅色的部分需要根據自己的情況輸入



重新啟動伺服器
sudo service apache2 restart


現在,我們已經將 apache、django和mysql都架起來並成功運行了!!