Apache,wsgi,django 程序部署配置方法詳解
本文實例講述了Apache,wsgi,django 程序部署配置方法。分享給大家供大家參考,具體如下:
前面寫過一篇文章,ngixn,uwsgi,django,python 環(huán)境配置,有興趣的朋友可以參考 nginx,django部署
后來有人在QQ上問我,用Apache 好部署嗎?我當(dāng)時只在windows下用 APACHE2.3,django1.4,wsgi 部署過,還沒有在 linux 下部署。前幾天有時間,我在 centos 上測試部署了一下。也不難。唯一的差別是,在windows 下有已經(jīng)編譯好的 wsgi.so 文件,放到 apache 的 modules下,然后在 httpd.conf 中增加
LoadModule wsgi_module modules/mod_wsgi.so
但是在 linux 下,wsgi的安裝,都要在源碼編譯下安裝,而且還有幾點(diǎn)要注意的。下面就詳細(xì)介紹我部署的過程。
安裝python 2.7 或者你需要的版本
這個就簡單帶過了,下載安裝包之后,windows 可以直接 運(yùn)行安裝包,linux 下 最好編譯安裝吧。這一步可以參考我上面提到的文章,我已經(jīng)說得比較清楚。 但我這個centos 環(huán)境,是別人已經(jīng)裝好了的,而且比較怪異,安裝在:/usr/local/activepython27 ,一般的python 安裝在:/usr/bin/python 。其實原因簡單,因為centos 自帶的python 是 2.4 的版本較低,所以重新裝了一個新版本的。
安裝wsgi
首先要在google 代碼托管處下載.https://code.google.com/p/modwsgi ,如果是windows 的,可以直接下載編譯好的文件。linux 的兄弟們,下載源碼編譯:
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz tar zxvf mod_wsgi-3.4.tar.gz cd mod_wsgi-3.4 ./configure
發(fā)現(xiàn)什么了,報錯了
./configure checking for apxs2... no checking for apxs... no checking Apache version... ./configure: line 1695: apxs: command not found ./configure: line 1695: apxs: command not found ./configure: line 1696: /: is a directory
報錯的原因,也很清楚。沒有 apxs.下面安裝它
yum install httpd-devel
如果是 ubuntu 可能命令為 sudo apt-get install apache2-dev 或 sudo apt-get install apache2-threaded-dev,具體的命令可以查一下.
再次編譯
[root@29 mod_wsgi-3.4]# ./configure (這里有可能要加上python路徑 --with-python=/usr/local/activepython27) checking for apxs2... no checking for apxs... /usr/sbin/apxs checking Apache version... 2.2.3 checking for python... /usr/local/activepython27/bin/python configure: creating ./config.status config.status: creating Makefile [root@29 mod_wsgi-3.4]# make make install
得到如下編譯結(jié)果:
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/httpd/modules/mod_wsgi.so
[root@29 mod_wsgi-3.4]#
配置 apache2 配置文件httpd.conf .
LoadModule wsgi_module modules/mod_wsgi.so
然后啟動 apache
service httpd start
發(fā)現(xiàn)什么鳥,這是只布谷鳥,亂叫,報錯了
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site
錯誤的原因,系統(tǒng)有多個python 版本,必須指明用哪一個python .
在apache 配置文件中,繼續(xù)加入
WSGIPythonHome /usr/local/activepython27 (這是你要采用的python的路徑,一般是/usr/bin/python,我這環(huán)境別人配成這樣了)
用什么方法可以得到這個路徑呢,直接執(zhí)行python 命令就可以得到,前提是,這個python 軟連接是你用要的python, 注意一點(diǎn)的是,WSGIPythonHome不要配置到<VirtualHost> </VirtualHost> 之間,否則報錯
import sys sys.prefix
就可以得到路徑/usr/local/activepython27 。
Django應(yīng)用程序相關(guān)配置
1.我的django程序部署在 /opt/www/html/djangocms/crm 這里

在工程的conf 目錄下加入如下兩個文件
apache_django_wsgi.conf 文件內(nèi)容如下
<VirtualHost *:80>
ServerName 192.168.1.111
ServerAlias 192.168.1.111
DocumentRoot /opt/www/html/djangocms/crm
WSGIScriptAlias / /opt/www/html/djangocms/crm/conf/django.wsgi
<Directory "/opt/www/html/djangocms/crm">
order allow,deny
Allow from all
</Directory>
Alias /static /opt/www/html/djangocms/crm/static
<Location "/static">
SetHandler None
</Location>
<Directory "/opt/www/html/djangocms/crm/static">
order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
django.wsgi 文件內(nèi)容
import os
import sys
sys.path.append("/opt/www/html/djangocms")
sys.path.append("/opt/www/html/djangocms/crm")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crm.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
最后在 apache 配置文件 httpd.conf 中加入:
Include "/opt/www/html/djangocms/crm/conf/apache_django_wsgi.conf"
重啟apache
service httpd restart
你就看到你熟悉的django應(yīng)用程序了。
希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
- 基于Linux搭建Apache網(wǎng)站服務(wù)配置詳解
- Windows下Apache+Tomcat7負(fù)載均衡配置方法詳解
- 詳解在Ubuntu上的Apache配置SSL(https證書)的正確姿勢
- 使用 Apache Web 服務(wù)器配置兩個或多個站點(diǎn)的方法
- Apache下ModSecurity的安裝啟用與配置
- CentOS 7中 Apache Web 服務(wù)器安裝配置教程
- 阿里云服務(wù)器apache配置SSL證書成功開啟Https(記錄趟過的各種坑)
- win10 apache配置虛擬主機(jī)后localhost無法使用的解決方法
- 如何通過Apache在本地配置多個虛擬主機(jī)
相關(guān)文章
Python在Console下顯示文本進(jìn)度條的方法
Python是一門與php有點(diǎn)像的編輯語言了,下文來給各位在利用Python實現(xiàn)進(jìn)度條了,對Python在Console下顯示文本進(jìn)度條的方法相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-02-02
Python基礎(chǔ)學(xué)習(xí)之函數(shù)方法實例詳解
這篇文章主要介紹了Python基礎(chǔ)學(xué)習(xí)之函數(shù)方法,結(jié)合實例形式分析了Python函數(shù)方法的定義、參數(shù)、復(fù)用和繼承相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
python中實現(xiàn)指定時間調(diào)用函數(shù)示例代碼
函數(shù)function是python編程核心內(nèi)容之一,也是比較重要的一塊。下面這篇文章主要給大家介紹了關(guān)于python中實現(xiàn)指定時間調(diào)用函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
Python函數(shù)中的不定長參數(shù)相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Python函數(shù)的相關(guān)知識,文章圍繞著Python不定長參數(shù)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python基礎(chǔ)教程之while循環(huán)用法講解
Python中除了for循環(huán)之外還有一個while循環(huán),下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之while循環(huán)用法講解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
python+selenium+Chrome options參數(shù)的使用
這篇文章主要介紹了python+selenium+Chrome options參數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享
本文給大家介紹PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享,程序?qū)崿F(xiàn)了一鍵抓取帖子全部郵箱和分頁抓取郵箱兩個功能,感興趣的朋友一起學(xué)習(xí)吧2016-04-04
python超詳細(xì)實現(xiàn)完整學(xué)生成績管理系統(tǒng)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個完整版學(xué)生成績管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2022-03-03

