利用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使用urllib2获取网络资源实例讲解
Dec 02 Python
Python中__init__和__new__的区别详解
Jul 09 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
python django事务transaction源码分析详解
Mar 17 Python
Python操作MySQL模拟银行转账
Mar 12 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
Python基于百度云文字识别API
Dec 13 Python
对Python+opencv将图片生成视频的实例详解
Jan 08 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
smarty的保留变量问题
2008/10/23 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
JS实现星星海特效
2019/12/24 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
励志演讲稿600字
2014/08/21 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
详解Python中__new__方法的作用
2022/03/31 Python