CentOS+Apache+mod_wsgi+Python+Django

前言

網上有關的教程千篇一概,都是無腦抄,本身都不驗證一遍就直接複製,毫無心義,我經過官方文檔和本身摸索,總結了一套教程。python

Django自帶Web服務功能,但那只是方便開發調試,生產環境中通常將Django搭配Apache使用,mod_wsgi是用來溝通Django和Apache的橋樑。mysql

本教程須要下載的文件都是直接經過官網下載的,我已將本教程所用到的文件打包上傳到雲盤,有須要的童鞋能夠直接下載:c++

http://pan.baidu.com/s/1pLD7vVPsql

環境說明

操做系統: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 ../apache

備註:不安裝zlib-devel的話,在安裝setuptools時會報錯。不安裝openssl-devel的話,在安裝django時會報錯。不加CFLAGS=-fPIC參數,安裝mod_wsgi時會報錯。django

將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++的話會報錯。app

安裝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作的。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息