CentOS+Apache+mod_wsgi+Python+Django


前言

網上有關的教程千篇一律,都是無腦抄,自己都不驗證一遍就直接復制,毫無意義,我通過官方文檔和自己摸索,總結了一套教程。

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做的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM