nginx 與 uwsgi 之上的 moinmoin

本文出自:http://www.huxun360.com/view_blog/33

準備

安裝以下工具:

nginx

uwsgi

virtualenv

nginx和uwsgi搭建另一篇文章:http://galean.blog.51cto.com/7702012/1302198

安裝virtualenv,需先安裝pip,pip可以很方便的安裝、卸載和管理Python的包。

virtualenv則可以建立多個獨立的虛擬環境,各個環境中擁有自己的python解釋器和各自的package包,互不影響。virtualenv 工具可將你係統所安裝的 python 程序抽離出來,放在一個特定的目錄下,供 python 應用程序(例如本文所講的 moinmoin)使用。這樣即便系統中更換了 python 版本,也不會對已部署的 python 應用產生負面影響。

pip和virtualenv可以很好的協同工作,同時使用這兩個工具非常方便。

一般先安裝pip,安裝好後,pip install virtualenv就可以自動從網上下載並安裝virtualenv了。然後virtualenv env1就可以創建一個名爲env1的虛擬環境了,進入這個虛擬環境後,再使用pip install安裝其它的package就只會安裝到這個虛擬環境裏,不會影響其它虛擬環境或系統環境。

安裝pip:

pip下載地址是:https://pypi.python.org/pypi/pip

下載後解壓,

tar zxvf pip-1.4.1.tar.gz

cd pip-1.4.1

python setup.py install

安裝:virtualenv

pip install virtualenv

如果出現:-bash: pip: command not found,找到pip可執行文件路徑:

[root@htuidc ~]# find /* -name pip

/usr/local/python27/bin/pip

然後:

[root@htuidc ~]# /usr/local/python27/bin/pip install virtualenv

就能成功安裝。

一、下載moinmoin 軟件包

cd /data/web

wget http://static.moinmo.in/files/moin-1.9.7.tar.gz

tar zxvf moin-1.9.7.tar.gz

cd moin-1.9.7


二、安裝 moinmoin:

######## 構建 python 的隔離環境

# mkdir -p /data/web/moinmoin

# virtualenv /data/web/moinmoin/python-env


######## 激活 python 隔離環境,並將 moinmoin 安裝至其中

# cd /data/web/moin-1.9.7

# source /data/web/moinmoin/python-env/bin/activate

# python setup.py install


######## 將 moinmoin 的實例安裝至 /data/web/moinmoin/wiki 目錄

# cp -r ./wiki /data/web/moinmoin

# cd /data/web/moinmoin/wiki

# cp config/wikiconfig.py ./

# cp server/moin.wsgi ./


######## 關閉 python 隔離環境

# deactivate


完成上述步驟之後,可以發現,拜 virtualenv 工具所賜,所有與 moinmoin 相關的文件均被安裝至 /var/www/moinmoin/python-env/share/moin 與 /var/www/moinmoin/python-env/lib/python2.7/site-packages/MoinMoin 目錄,而原本它們默認是被安裝至 /usr/share/moin 與 /usr/lib/python2.7/site-packages/MoinMoin 目錄。


三、配置 nginx:


server {

listen 80;

server_name localhost;


location ^~ /wiki {

include uwsgi_params;

uwsgi_pass 127.0.0.1:8630;

uwsgi_param UWSGI_PYHOME /data/web/moinmoin/python-env/;

uwsgi_param UWSGI_CHDIR /data/web/moinmoin/wiki/;

uwsgi_param UWSGI_SCRIPT moin_wsgi;

uwsgi_param SCRIPT_NAME /wiki;

uwsgi_modifier1 30;

}


location ^~ /wiki/moin_static/ {

alias /data/web/moinmoin/python-env/lib/python2.7/site-packages/MoinMoin/web/static/htdocs/;

add_header Cache-Control public;

expires 1M;

}

location = /favicon.ico {

log_not_found off;

}

}

下面,大致分析一下上述代碼的工作過程。

如果網頁瀏覽器傳入的請求是“192.168.0.2/wiki”,那麼 nginx 會根據 "location ^~ /wiki" 代碼段的設定主要進行以下處理:

加載 /etc/nginx 目錄中的“uwsgi_params.conf”文件;

通過 127.0.0.1:8630與 uwsgi 服務器通信,類似於進程管道;

設置 python 運行環境,這裏使用的是上文中 virtualenv 工具所構造的 python 目錄,其中包含着 python 程序本身以及上文中所安裝的 moinmoin 軟件包;

設置 uwsgi 服務器在相應 http 請求(http://192.168.0.7)之前,先進入 /data/web/moinmoin/wiki 目錄,這個目錄是前文中我們建立的 moinmoin 實例;

設置 uwsgi 服務器要運行的 python 程序,即 moin.wsgi;

設置 uwsgi 服務器所運行的 python 程序對應的 http 請求爲 http://192.168.0.7/wiki。


四、配置 uwsgi:


如果希望直接在命令行中啓動 uwsgi,那麼只需使用以下命令即可:

uwsgi -x /etc/uwsgi/uwsgi.xml

當然,這需要在 /etc/uwsgi 目錄中建立 uwsgi 的配置文件 uwsgi.xml,內容如下:

<uwsgi>

<socket>/tmp/wiki.sock</socket>

<limit-as>256</limit-as>

<processes>6</processes>

<memory-report/>

<vhost/>

<no-site/>

</uwsgi>


五、打開http://192.168.0.7/wiki

155502687.png


如果出現網頁沒有圖片和css樣式的顯示問題,請檢查網頁源碼中引用CSS的路徑是不是不存在(查看方法:網頁中右擊,選擇"查看源碼"),然後根據情況修改 location ^~ /wiki/moin_static/ 的alias路徑和moinwiki模板跟目錄wikiconfig.py配置文件中的url_prefix_static的值,直到正確顯示爲止。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章