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的值,直到正确显示为止。

你可能感兴趣的:(wiki,MoinMoin)