前言
網上有關的教程千篇一律,都是無腦抄,自己都不驗證一遍就直接復制,毫無意義,我通過官方文檔和自己摸索,總結了一套教程。
Django自帶Web服務功能,但那只是方便開發調試,生產環境中一般將Django搭配Apache使用,mod_wsgi是用來溝通Django和Apache的橋梁。
本教程需要下載的文件都是直接通過官網下載的,我已將本教程所用到的文件打包上傳到雲盤,有需要的童鞋可以直接下載:
http://pan.baidu.com/s/1pLD7vVP
環境說明
操作系統:CentOS 6.7 64-bit
安裝基礎環境
yum -y install gcc make wget
安裝Python
安裝Python
yum -y install zlib-devel openssl-devel
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar xzf Python-2.7.12.tgz
cd Python-2.7.12/
./configure --prefix=/usr/local/python CFLAGS=-fPIC
make && make install
cd ../
備注:不安裝zlib-devel的話,在安裝setuptools時會報錯。不安裝openssl-devel的話,在安裝django時會報錯。不加CFLAGS=-fPIC參數,安裝mod_wsgi時會報錯。
將Python加入環境變量
在/etc/profile文件末尾添加以下內容:
export PATH=/usr/local/python/bin:$PATH
然后使配置文件生效:
. /etc/profile
安裝setuptools
wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz
tar xzf setuptools-28.3.0.tar.gz
cd setuptools-28.3.0/
python setup.py install
cd ../
安裝pip
wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
tar xzf pip-8.1.2.tar.gz
cd pip-8.1.2/
python setup.py install
cd ../
安裝Apache
安裝apr
wget http://apache.fayea.com/apr/apr-1.5.2.tar.bz2
tar xjf apr-1.5.2.tar.bz2
cd apr-1.5.2/
./configure
make && make install
cd ../
安裝apr-util
wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.bz2
tar xjf apr-util-1.5.4.tar.bz2
cd apr-util-1.5.4/
./configure --with-apr=/usr/local/apr/
make && make install
cd ../
安裝pcre
yum -y install gcc-c++
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
tar xjf pcre-8.39.tar.bz2
cd pcre-8.39/
./configure --prefix=/usr/local/pcre
make && make install
cd ../
備注:不安裝gcc-c++的話會報錯。
安裝httpd
yum -y install perl
wget http://apache.fayea.com/httpd/httpd-2.4.23.tar.bz2
tar xjf httpd-2.4.23.tar.bz2
cd httpd-2.4.23/
./configure --prefix=/usr/local/httpd --with-pcre=/usr/local/pcre
make && make install
cd ../
備注:不安裝perl的話,安裝mod_wsgi時會報錯。
將Apache加入環境變量
在/etc/profile文件末尾添加以下內容:
export PATH=/usr/local/httpd/bin:$PATH
然后使配置文件生效:
. /etc/profile
安裝mod_wsgi
wget https://pypi.python.org/packages/28/a7/de0dd1f4fae5b2ace921042071ae8563ce47dac475b332e288bc1d773e8d/mod_wsgi-4.5.7.tar.gz
tar xzf mod_wsgi-4.5.7.tar.gz
cd mod_wsgi-4.5.7/
./configure --with-apxs=/usr/local/httpd/bin/apxs --with-python=/usr/local/python/bin/python
make && make install
chmod 755 /usr/local/httpd/modules/mod_wsgi.so
cd ../
安裝Django
wget https://pypi.python.org/packages/8a/09/46f790104abca7eb93786139d3adde9366b1afd59a77b583a1f310dc8cbd/Django-1.10.2-py2.py3-none-any.whl
pip install Django-1.10.2-py2.py3-none-any.whl
安裝MySQLdb(選做)
yum -y install mysql-devel
pip install MySQL-python
備注:因為我的Django程序用的是MySQL數據庫,所以我需要安裝這個包。
配置Django
將你開發好的Django程序上傳到服務器,我這里上傳到/wwwroot/目錄,下面這個樹形圖就是我的Django程序的結構:
這里面有個文件特別關鍵,能否正常運行就看它了,它就是wsgi.py,下面是我的文件的內容,供讀者參考:
import sys sys.path.append('/wwwroot/OMMS') import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OMMS.settings") application = get_wsgi_application()
注意:前兩句需要自己添加,如果沒有這兩句,你的程序就不能正常運行了,后面的是Django自動生成的。
配置Apache
啟用虛擬主機配置文件
編輯/usr/local/httpd/conf/httpd.conf文件,找到下面這句並取消注釋:
#Include conf/extra/httpd-vhosts.conf
在一堆以LoadModule開頭的段落下添加一行:
LoadModule wsgi_module modules/mod_wsgi.so
修改虛擬主機配置文件
編輯/usr/local/httpd/conf/extra/httpd-vhosts.conf文件,將原來的配置全部注釋掉(已經注釋過的就不用再注釋了),然后在末尾添加以下內容:
<VirtualHost *:80>
DocumentRoot "/wwwroot/OMMS/OMMS"
WSGIScriptAlias / "/wwwroot/OMMS/OMMS/wsgi.py"
<Directory "/wwwroot/OMMS/OMMS">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注意:讀者請根據自己的程序修改其中的路徑。
啟動Web服務並測試
通過以下命令啟動Apache服務:
apachectl start
最后,通過瀏覽器測試你的Django程序是否能夠正常訪問吧!如果你是按照我的教程一步一步做的話,應該沒有問題,因為我的教程是基於最小化安裝的CentOS做的。
