利用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实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python中functools模块的常用函数解析
Jun 30 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
django进阶之cookie和session的使用示例
Aug 17 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
python 列表推导式使用详解
Aug 29 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
Python基于requests库爬取网站信息
Mar 02 Python
python deque模块简单使用代码实例
Mar 12 Python
Python过滤掉numpy.array中非nan数据实例
Jun 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
PHP中的日期处理方法集锦
2007/01/02 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
php绘制一个扇形的方法
2015/01/24 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
xml和web特殊字符
2009/04/28 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
使用python模拟命令行终端的示例
2019/08/13 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
用python实现学生管理系统
2020/07/24 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
什么是数组名
2012/05/10 面试题
生产经理的自我评价分享
2013/11/07 职场文书
学校献爱心活动总结
2014/07/08 职场文书
环境日宣传活动总结
2014/07/09 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
OpenCV实现常见的四种图像几何变换
2022/04/01 Python
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python