轉:apache+python+mod_python+django 編譯安裝指南

來源:互聯網
上載者:User

apache+python+mod_python+django 編譯安裝指南

1、本文將知道你在 linux 下使用源碼包安裝

apache 2.2.16

python 2.7

mod_python 3.3.1

django svn trunk version

但是,因為無法得知編譯過程中得到的出錯資訊,故本文預設編譯過程全部順利通過,任何疑問請在文後討論區中進行。

2、本文中介紹的命令前面的“

”僅代表命令提示字元,請不要將其連同命令一起輸入。

一、安裝 apache 2.2.16

1、下載請到

http://httpd.apache.org

下載最新的 httpd 伺服器,只要版本跟 2.2.16 相差不大,就可以參考本文進行配置安裝。

2、解壓

 tar xvfz httpd-2.2.16.tar.gz

上面命令會在目前的目錄得到 httpd-2.2.16 目錄,這個目錄就是 apache 2.2.16 的源碼目錄。

對於解壓命令的詳細介紹,請看我的這篇文章:

3、Configure

編譯安裝原始碼的過程一般都是 configure/make/make install 三步曲,apache 也遵循這個規則。

進入 httpd-2.2.4 目錄:

 cd httpd-2.2.16

執行如下命令查看 configure 的協助資訊

 ./configure --help

安裝的全部細節都是由 configure 以及它的參數進行控制的。

如果你剛開始嘗試從原始碼包安裝軟體,請儘快習慣 configure 之後冗長複雜的參數!

下面是我推薦的 configure 參數,它會將 apache 安裝到 /opt/apache 下面,並且帶所有常用的 apache Modules:

 ./configure --prefix=/opt/apache --with-config-file-path=/opt/apache/conf  --enable-mods-shared=most --enable-track-vars --enable-cgi --enable-so --enable-file-cache --enable-disk-cache --enable-cache --enable-mem-cache --enable-dumpio --enable-logio --enable-mime-magic --enable-headers --enable-usertrack --enable-version --enable-ssl --enable-http --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ftp --enable-proxy-ajp --enable-proxy-balancer

當然,安裝所有擴充模組意味著將 apache 功能擴充到極限,但如果你不會配置這些模組,或者置之不理,他們很可能會給你帶來不必要的麻煩或者安全隱患。

(選型中“--enable-so”參數以允許Apache使用DSO,以便稍後mod_python的編譯)

4、make / make install

真正漫長的步驟開始了(我指時間上),下面命令開始編譯過程:

 make

等待編譯完成之後,執行:

 make install

會將 apache 安裝到第三步配置的 /opt/apache 目錄中。

5、配置 apache

配置 apache 的 httpd.conf 檔案是一項大工程,互連網上有很多高人的文章指導你進行正確必要的配置,我在這裡就不贅述了。

如何將 apache 加入到系統服務中,請看我的這篇文章:

將 apache 加入 linux 系統服務

6、已知問題及解決方案

如果你遇到類似下面的 .so 許可權錯誤:

httpd: Syntax error on line 63 of /opt/apache/conf/httpd.conf: Cannot load /opt/apache/modules/mod_python.so into server: /opt/apache/modules/mod_python.so: cannot restore segment prot after reloc: Permission denied

說明是你的 .so 檔案許可權不夠,很可能是你的 SELinux(如果你有裝)的許可權檢查沒有通過導致的。

使用下面命令可以將 .so 檔案定義為共用類庫檔案,就可以通過許可權檢查:

 chcon -t texrel_shlib_t /opt/apache/modules/*.so

注意:千萬別將 *.so 許可權改為 777,具體原因請看我的這篇文章:解決 SELinux 帶來的 PHP 許可權問題

上面安裝 apache 的過程講述很詳細,之後 python / mod_python 將只給出必要解釋和推薦的 configure 命令。

二、安裝 python 2.7

1、編譯安裝

到 www.python.org下載最新的 python 源碼包,解壓得到目錄,進入該目錄,執行:

 ./configure --prefix=/opt/python/2.7

 make

 make install

使用下面命令將 python 添加到 /usr/bin 中,並且區別其他版本的 python 執行檔案,使它們可以共存

 ln /opt/python/2.7/bin/python /usr/bin/python2.7

以後可以將新版本的 python 編譯到 /opt/python/[版本]中,使用上面命令產生對應版本的連結。

2、設定運行命令

這裡需要注意一下執行程式,現在的 python 2.7 的執行程式是 python2.7,如果想進入 python 2.7 的 shell,需要鍵入 python2.7,如果想系統使用 python 2.7 執行 .py 指令碼,需要在指令碼第一行將 python 運行命令修改為:

!/usr/bin/python2.7

如果你覺得以後預設使用 python 2.7 就好,那麼可以:

 rm -f /usr/bin/python

 ln /opt/python/2.7/bin/python /usr/bin/python

這樣執行 python 進入的就是 2.7 了。

三、安裝 mod_python

1、到 www.modpython.org

 下載源碼包,解壓得到目錄,進入該目錄,執行:

 ./configure --with-apxs=/opt/apache/bin/apxs --with-python=/usr/bin/python2.7

 make

 make install

------------------

注意這裡有一個bug

connobject.c: In function '_conn_read':

connobject.c:142: error: request for member 'next' in something not a structure

or union

apxs:Error: Command failed with rc=65536

.

make[1]: *** [mod_python.so] Error 1

make[1]: Leaving directory `/usr/src/rpm/BUILD/mod_python-3.3.1/src'

make: *** [do_dso] Error 2

需修改mod_python-3.3.1/src/connobject.c中

!(b == APR_BRIGADE_SENTINEL(b)

!(b == APR_BRIGADE_SENTINEL(bb)

--------------

完畢之後,mod_python 會在 /opt/apache/modules 中添加 mod_python.so 庫檔案,並且在 /opt/python/2.7/lib/python2.7/site-packages 中添加 mod_python 包。

如果編譯器沒有檢測到 apache 和 python,會報錯退出。

2、配置 httpd.conf

找到 /opt/apache/conf/httpd.conf 設定檔,在適當位置添加:

LoadModule python_module modules/mod_python.so

記住,modules/mod_python.so 必須有可以通過 SELinux 檢查的許可權,參看本文第一章第6節的內容!

四、安裝 django

這次我們採用 django 的 SVN Head Version(最新開發版本)。

採用這個版本的好處是,官方的任何更新,你只需要運行 svn 進行更新就會得到最新的版本,並且更新即可用。

1、如果系統沒有 Subversion,找到裝上(過程略)。

2、得到最新版本的 working copy

這裡有兩個版本可以選擇,擇其一運行命令:

一是 django 全部源碼(檔案相當多):

 svn co http://code.djangoproject.com/svn/django

 /source/svn/django

二是 django 的當前最新版本 trunk:

 svn co http://code.djangoproject.com/svn/django/trunk

 /source/svn/django_trunk

3、將 django 源碼連結到 python 的 site-packages 公用代碼目錄中

全部源碼版本:

 ln -s /source/svn/django/trunk/django /opt/python/2.5.1/lib/python2.5/site-packages/django

最新版本 trunk:

 ln -s /source/svn/django/django /opt/python/2.5.1/lib/python2.5/site-packages/django

注意一定要帶上參數 -s,否則後面調用會出錯!

上面的命令只是建立了當前源碼目錄的一個連結到 site-packages 中,這樣每次運行下面命令更新 django 之後,python 調用的都是更新之後的最新版本:

 cd /source/svn/django

 svn cleanup(如果提示locked,執行這一句)

 svn update

4、拷貝 django 管理檔案

運行下面命令將管理檔案拷貝到 /usr/bin 中,以便隨處可以執行該檔案:

cp /source/svn/django/trunk/django/bin/django-admin.py /usr/bin/

或者

cp /source/svn/django/django/bin/django-admin.py /usr/bin/

如果運行 django-admin.py 得到如下錯誤資訊:

ImportError: No module named django.core

說明 django-admin.py 運行在了另一個版本的 python 中!

記住,我們的 django 是安裝在 python 2.7 中的(/opt/python/2.7),如果你的 python 2.7 執行命令為 python2.7(參考第二章第2節),需要將 /usr/bin/django-admin.py 第一行修改為:

!/usr/bin/python2.7

或者是已經安裝 django 的 python 的執行命令。

4、參考文章

官方的安裝指南,請參考:

http://www.djangoproject.com/documentation/install/

如何使用 django,請參考官方指南這一部分:

http://www.djangoproject.com/documentation/modpython/

推薦使用 .htaccess 檔案,而不是直接修改 httpd.conf 設定檔,因為 .htaccess 更加靈活。

記得將 httpd.conf 設定檔中 AllowOverride 配置項作相應配置(比如 AllowOverride = All)

五、總結

如果完全按照上面的安裝步驟進行安裝,我們會得到如下內容:

apache 2.2.16 目錄:

/opt/apache

python 2.7 目錄:

/opt/python/2.7

mod_python.so 位置:

/opt/apache/modules/mod_python.so

django 源碼包目錄:

/source/svn/django

修改過的檔案:

/opt/apache/conf/httpd.conf

如果想更新 django:

 cd /source/svn/django

 svn update

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/bearjb2006/archive/2010/07/30/5776462.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.