· 7 years ago · Feb 23, 2018, 01:56 AM
1设置独立的生产环境
2===============
3
4# 1. 原ç†
5Django åœ¨åŠ è½½ `settings` çš„æ—¶å€™ä¼šæ ¹æ®çŽ¯å¢ƒå˜é‡é€‰æ‹©ä¸åŒçš„ `settings`。
6
7å‚考 `manage.py +6`,`os.environ.setdefault` 设置了一个å为 `DJANGO_SETTINGS_MODULE`ã€å€¼ä¸ºç›®æ ‡ `settings`
8的环境å˜é‡ã€‚
9
10在生产环境ä¸ï¼Œ**uWSGI** ä¼šæ ¹æ®æŒ‡å®šçš„ **WSGI Module** åŠ è½½ç¨‹åºã€‚**Django** çš„ `wsgi.py`
11ä¸åŒæ ·æ‰§è¡Œäº† `os.environ.setdefault`。
12
13
14# 2. 方案
151. 在 `settings.py` çš„åŒçº§ç›®å½•创建一个新的 Python 文件,例如 `prd.py`。
162. 按照如下示例编写 `prd.py` 的内容。
17
18```python
19# -*- coding:utf-8 -*-
20from .settings import *
21
22# Write your settings below.
23# For example:
24
25SECRET_KEY = 'your-secret-key'
26
27DATABASES = {
28 'default': {
29 'ENGINE': 'django.db.backends.mysql',
30 'HOST': 'your-db-host',
31 'PORT': '3306',
32 'NAME': 'your-db-name',
33 'USER': 'your-db-user',
34 'PASSWORD': 'your-db-password',
35 'OPTIONS': {
36 'charset': 'utf8mb4'
37 }
38 }
39}
40```
41ä½ å¯ä»¥æ ¹æ®éœ€è¦å†™å…¥å„ç±»é…置。未在æ¤å¤„写出的é…置会从 Django çš„**默认值**ä»¥åŠ `settings.py` 继承过æ¥ã€‚
42
433. 修改 `wsgi.py +14`,将 `settings` æ›¿æ¢æˆä½ çš„ `prd`。
44更好的建议是å¤åˆ¶ä¸€ä»½ `wsgi.py` 冿”¹ï¼ˆå½“然,uWSGI çš„é…置文件也è¦è¿›è¡Œç›¸åº”的修改)。
45
464. ä¸è¦å¿˜è®°å°†çº¿ä¸Šç›¸å…³çš„é…ç½®åŠ å…¥ä½ çš„ `.gitignore`。
47
48
49# 3. 对于本地的开å‘环境呢?
50åŽŸç†æ˜¯ä¸€æ ·çš„ï¼Œä½ å¯ä»¥åˆ›å»ºä¸€ä¸ª `local_settings.py` 嘛。
51`manage.py` 有一个 `--settings` çš„å‚æ•°ï¼Œå€¼æ˜¯ä½ çš„ `local_settings`,就åƒè¿™æ ·ï¼š
52
53```shell
54$ python manage.py runserver --settings=your_project.local_settings
55```
56
57å½“ç„¶ï¼Œä½ ä¹Ÿå¯ä»¥ç…§è‘«èŠ¦ç”»ç“¢æžä¸€ä¸ªæ–°çš„ `local_manage.py`。