利用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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Django admin美化插件suit使用示例
Dec 12 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
python时间序列按频率生成日期的方法
May 14 Python
python绘制无向图度分布曲线示例
Nov 22 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
python3使用diagrams绘制架构图的步骤
Apr 08 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
php调用mysql存储过程实例分析
2014/12/29 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
JS的数组的扩展实例代码
2008/07/09 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Unicode和Python的中文处理
2017/03/19 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Python创建临时文件和文件夹
2020/08/05 Python
Django URL参数Template反向解析
2020/11/24 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
写求职信要注意什么问题
2014/04/12 职场文书
学校花圃的标语
2014/06/18 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
质量保证书格式
2015/02/27 职场文书
求职信格式范文
2015/03/19 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis