安装以下工具:
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
如果出现网页没有图片和css样式的显示问题,请检查网页源码中引用CSS的路径是不是不存在(查看方法:网页中右击,选择"查看源码"),然后根据情况修改 location ^~ /wiki/moin_static/ 的alias路径和moinwiki模板跟目录wikiconfig.py配置文件中的url_prefix_static的值,直到正确显示为止。