基本的架構以下:python
須要安裝的程序有:數據庫
目錄部署結構django
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/home
....+/yourWebName
........+yourWebName.pid
........+yourWebName.sock
........+/yourDjangoName
............+settingsYourWebName.py #適用於正式部署的網站的配置文件,通常狀況下是先 import settings.py 而後在根據網站實際部署狀況修改其中的配置。如數據庫環境等等
............+yourWebName.fcgi
........+/lighttpd
............+11-simple-vhost-yourWebName.conf
........+/scripts
............+StartFastCGI.sh
............+RestartFastCGI.sh
其中:
yourWebName 是給網站定義的名稱
yourDjangoName 是 Django 項目的名稱
/home/yourWebName 是將網站項目的根目錄,與之相關的都放在這個目錄下面
/home/yourWebName/yourDjangoName 是網站所用到的 Django 系統的項目根目錄
|
lighttpd 配置文件 /etc/lighttpd/conf-enabled/11-simple-vhost-yourWebName.confbash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$HTTP["host"] == "www.yourWebName.com" {
server.document-root = "/home/yourWebName/yourDjangoName/"
fastcgi.server = (
"/yourWebName.fcgi" => (
"main" => (
"socket" => "/home/yourWebName/yourWebName.sock",
"check-local" => "disable",
)
),
)
alias.url = (
"/media" => "/home/user/django/contrib/admin/media",
"/static" => "/home/yourWebName/yourDjangoName/static",
)
url.rewrite-once = (
"^(/media.*)$" => "$1",
"^(/static.*)$" => "$1",
"^/favicon\.ico$" => "/static/favicon.ico",
"^(/.*)$" => "/yourWebName.fcgi$1",
)
accesslog.filename = "/var/log/lighttpd/www.yourWebName.com.access.log"
}
|
Django FastCGI 配置文件 yourWebName.fcgi架構
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/python
import
sys, os
# Add a custom Python path.
#sys.path.insert(0, "/home/user/python")
# Switch to the directory of your project. (Optional.)
# os.chdir("/home/user/myproject")
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ[
'DJANGO_SETTINGS_MODULE'
]
=
"yourDjangoName.settingsYourWebName"
from
django.core.servers.fastcgi
import
runfastcgi
runfastcgi(method
=
"threaded"
, daemonize
=
"false"
)
|
啓動 Django 服務腳本 StartFastCGI.shsocket
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/bash
# Replace these four settings.
PROJDIR=
"/home/yourWebName"
DJANDIR=
"/yourWebName/yourDjangoName"
PIDFILE=
"$PROJDIR/yourWebName.pid"
SOCKET=
"$PROJDIR/yourWebName.sock"
# start program
cd
$DJANDIR
python manage.py runfcgi method=threaded socket=$SOCKET pidfile=$PIDFILE --settings=yourDjangoName.settingsYourWebName
chmod
777 $SOCKET
|
重啓 Django 服務的腳本 RestartFastCGI.sh網站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/bin/bash
# Replace these three settings.
PROJDIR=
"/yourWebName"
PIDFILE=
"$PROJDIR/yourWebName.pid"
SOCKET=
"$PROJDIR/yourWebName.sock"
# kill program and remove pidfile #殺死舊的進程
cd
$PROJDIR
if
[ -f $PIDFILE ];
then
kill
`
cat
-- $PIDFILE`
rm
-f -- $PIDFILE
fi
# upgrade program #更新代碼
cd
$PROJDIR
hg pull
hg update
# start program #重啓 Django 服務
$PROJDIR
/scripts/StartFastCGI
.sh
|
settingsYourWebName.pyurl
1
2
|
#避免在 lighttp-fastcgi 環境下 {% url %} 被加上 yourWebName.fcgi 的 url 前綴
FORCE_SCRIPT_NAME
=
''
|
注:spa