利用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内置函数的用法实例教程
Sep 08 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
Python argparse模块使用方法解析
Feb 20 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
基于keras中的回调函数用法说明
Jun 17 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
python解析照片拍摄时间进行图片整理
Jul 23 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生成xml时添加CDATA标签的方法
2014/10/17 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
php经典算法集锦
2015/11/14 PHP
PHP7 标准库修改
2021/03/09 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
基于python实现聊天室程序
2018/07/27 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
高级运动鞋:GREATS
2019/07/19 全球购物
Final类有什么特点
2012/04/25 面试题
laravel使用redis队列实例讲解
2021/03/23 PHP
暑期实习鉴定
2013/12/16 职场文书
男方父母证婚词
2014/01/12 职场文书