利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程


Posted in Python onMay 05, 2015

在 CentOS 下使用 apache+mod_wsgi 部署了 MoinMoin,但是编辑和保存页面很慢,于是准备使用 nginx+uwsgi 重新部署

本文假定已经按照官方指引 Quick MoinMoin on CentOS 完成了 apache 和 mod_wsgi 之外的基础安装
安装 Nginx

默认情况下,CentOS 下没有 nginx 的源,需要自己手动添加,访问 http://nginx.org/en/linux_packages.html#stable 下载 CentOS 6 的 rpm 包,并安装

wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

然后执行下面的命令安装 nginx

yum install nginx

安装 uwsgi

安装 python 包管理工具 pip

yum install python-devel python-setuptools
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python

通过 pip 安装 uwsgi (使用豆瓣的境像)

pip install -v uwsgi -i http://pypi.douban.com/simple

使用 uwsgi 启动 moin

创建 uwsgi 配置 /etc/uwsgi/uwsgi.xml 内容如下

<uwsgi>
<socket>/var/run/moin.sock</socket>                                           
<chmod-socket>666</chmod-socket>
<limit-as>256</limit-as>
<processes>6</processes>
<memory-report/>
<vhost/>
<no-site/>
</uwsgi>

其中 <chmod-socket>666</chmod-socket> 这句是这了防止 nginx 访问 moin.sock 没有权限。

重命名 moin 的 wsgi 启动脚本,以被 uwsgi 识别

cd /usr/local/share/moin
mv moin.wsgi moin_wsgi.py

要启动 uwsgi 可以使用下面的命令

uwsgi -x /etc/uwsgi/uwsgi.xml

配置 nginx 访问 uwsgi

建立 /etc/nginx/conf.d/moin.conf 内容如下

# moinmoin 虚拟主机配置
server {
  listen YOUR_SERVER_IP:80;
  server_name localhost;

  access_log /var/log/nginx/moin.access_log main;
  error_log /var/log/nginx/moin.error_log info;

  location ^~ / {
    include uwsgi_params;
    uwsgi_pass unix:///var/run/moin.sock;
    # uwsgi_param UWSGI_PYHOME /usr/local/lib/python2.6/; #site-packages/;
    uwsgi_param UWSGI_CHDIR /usr/local/share/moin/;
    uwsgi_param UWSGI_SCRIPT moin_wsgi;
    uwsgi_param SCRIPT_NAME /;
    uwsgi_modifier1 30;
  }

  location ^~ /moin_static193/ {
    alias /usr/local/lib/python2.6/site-packages/MoinMoin/web/static/htdocs/;
    add_header Cache-Control public;
    expires 1M;
  }
}

运行 nginx

nginx

运行及故障排除

接下来你可以通过浏览器访问 Wiki 了,但是发现编辑和保存页面依旧很慢,然后稍微 Google 了下就发现了 一篇解决这个问题的文章,很快解决了慢的问题

编辑 wikiconfig.py 加入如下配置

log_reverse_dns_lookups = False

重启 uwsgi 后再访问 Wiki,发现慢的问题解决了(为什么我之前没有找到这篇文章!)

Python 相关文章推荐
用Python写的图片蜘蛛人代码
Aug 27 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
简单实现Python爬取网络图片
Apr 01 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
Python 变量类型详解
Oct 10 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
python实现快递价格查询系统
Mar 03 Python
通过实例简单了解python yield使用方法
Aug 06 Python
如何将json数据转换为python数据
Sep 04 Python
python3爬虫中多线程的优势总结
Nov 24 Python
Python实现的HTTP并发测试完整示例
Apr 23 #Python
安装dbus-python的简要教程
May 05 #Python
使用SAE部署Python运行环境的教程
May 05 #Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 #Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
浅谈MySQL中的触发器
May 05 #Python
You might like
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
总结Python编程中三条常用的技巧
2015/05/11 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
Anaconda入门使用总结
2018/04/05 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python opencv进行图像拼接
2020/03/27 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
专项法律服务方案
2014/06/11 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
2014年工会工作总结
2014/11/12 职场文书
万里长城导游词
2015/01/30 职场文书
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android