利用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之wxPython菜单使用详解
Sep 28 Python
Python实现的Google IP 可用性检测脚本
Apr 23 Python
Python 多线程抓取图片效率对比
Feb 27 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
python rsa 加密解密
Mar 20 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Python tkinter label 更新方法
Oct 11 Python
python图像处理入门(一)
Apr 04 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Django 路由控制的实现
Jul 17 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
Python代码中如何读取键盘录入的值
May 27 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
PHP5 安装方法
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python网络编程之文件下载实例分析
2015/05/20 Python
Python实现栈的方法
2015/05/26 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
python分割列表(list)的方法示例
2017/05/07 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python os.path模块常用方法实例详解
2018/09/16 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
大学生英语演讲稿
2014/04/24 职场文书
求职导师推荐信范文
2015/03/27 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
学生会招新宣传语
2015/07/13 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python