Linux+Python+Apahce+wsgi

來源:互聯網
上載者:User

兩周前完成的一個項目,是用Python寫了一個網站。在部署到正式伺服器時遇到了點問題,反覆多次,浪費了些時間。今天,終於有時間把過程好好整理一下。

伺服器作業系統是CentOS。

一、準備工作

1、安裝gcc。

如果沒有gcc,後面編譯安裝其它東西時,會提示:no acceptable compiler in $path。

在終端執行yum install gcc即可。

yum 是一個Python下面的命令,一般Linux都內建了python 2.4.3,所以一登入系統,就可以使用yum命令了。

2、安裝zlib-devel。

如果沒有zlib-devel,後面執行Python時會報錯:Compression requires the (missing) zlib module,若到了那時再安裝zlib-devel,就需要重新編譯python,會麻煩一點。

在終端執行yum install zlib-devel即可。

二、編譯安裝Python

1、到python官網下載源碼包,如Python-2.7.3.tgz

2、解壓 tar -xf Python-2.7.3.tgz 

3、進入解壓後的Python-2.7.3目錄,執行 ./configure --prefix=/usr/local/python27 --enable-shared --with-zlib=/usr/include

prefix參數是指定要將python安裝到哪個目錄

enable-shared是必須要寫的,否則後面會遇到錯誤提示:Command failed with rc=65536

with-zlib就是指定編譯python過程中要用到的zlib的路徑,我們在準備工作中安裝zlib後,zlib就會在/usr/include目錄下。

4、執行make

5、執行make install

現在檢驗一下,在終端輸入python,可以看到python的版本號碼,還是2.4.3。這是因為系統預設指向了原本就在機器上的python,現在需要設定環境變數,讓它指向我們新裝的python2.7。

先exit()退出python環境,回到終端。再執行

export PYTHONPATH=/usr/local/python27

此時再執行 python,就可以看到版本號碼已經變成2.7了。

如果此時遇到錯誤:error: command 'gcc' failed with exit status 1

可以執行 yum install gcc python-devel來解決

如果遇到錯誤:python: error while loading shared  libraries: libpython2.7.so.1.0:
  cannot open shared object file: No such file 

按如下方式解決:

vim /etc/ld.so.conf.d/python2.7.conf

加入以下內容:/usr/local/python27/lib (實際的python安裝路徑下的lib目錄)

儲存退出後運行:

ldconfig

即可

三、安裝setuptools

setuptools可以協助我們方便的安裝項目中使用到的python外掛程式,另外,如果項目中有使用到mysqldb外掛程式,那麼setuptools就是必須要安裝的,因為mysqldb對它有依賴。

到官網下載setup tools的源碼包,解壓後,進入解壓目錄中,在終端運行python setup.py install即可。

四、安裝Mysql

到官網下載Mysql for redhat 的壓縮包,解壓后里面有好幾個檔案,除去test,其它的都需要安裝。

tar -xf MysqlXXX.tar

rpm -ivh Mysql-server-XXX.rpm

rpm -ivh Mysql-devel-XXX.rpm

rpm -ivh Mysql-client-XXX.rpm

rpm -ivh Mysql-embedded-XXX.rpm

五、安裝項目所需要的python外掛程式

我們之前安裝了setuptools,所以現在可以很方便的使用如下命令安裝了。

easy_install web.py

easy_install mysql-python

easy_install jinja2

等等外掛程式

六、安裝Apache

到官網下載源碼,然後依次執行./configure --prefix=/usr/local/apache, make, make install三條命令即可

七、安裝wsgi

同樣的,到官網下載源碼再編譯安裝。

安裝完成後,apache的modules目錄下,就會多一個mod_wsgi.so檔案。

如果安裝不成功,可能需要看一下wsgi目錄裡面的readme檔案,那裡會有指引,說明在編譯時間需要指定什麼參數。

八、配置Apache

把項目放到機器上的任意一個位置,比如項目test,放到/usr/local/www/test

開啟設定檔,

vi /usr/local/apache/conf/httpd.conf檔案

搜尋LoadModule的位置,在末端加上

LoadModule wsgi_module modules/mod_wsgi.so

搜尋DocumentRoot,把它的值修改為真正的項目路徑,如/usr/local/www/test

並添加以下內容

Alias /robots.txt '/usr/local/www/test/static/robots.txt'

Alias /favicon.ico '/usr/local/www/test/static/favicon.ico'

Alias /static/ '/usr/local/www/test/static/'

WSGIProcessGroup test

WSGIDaemonProcess inspect processes=20 threads=1 inactivity-timeout=30 maximum-requests=2000 python-eggs=/tmp display-name=%{GROUP}

WSGIApplicationGroup test

WSGIScriptAlias / '/usr/local/www/test/application.py'  #改成實際的項目開機檔案

<Directory '/usr/local/www/test">

Order deny,allow

Allow from all

</Directory>

九、啟動mysql、apache

service mysql start

/usr/local/apache/httpd -k start

之前我用下面這種方法啟動Apache,結果啟動的是系統內建的Apache

service httpd start 或者 (/usr/local/apache/bin/apachectl start)  

即可

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.