利用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 相关文章推荐
在Docker上开始部署Python应用的教程
Apr 17 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
python批量制作雷达图的实现方法
Jul 26 Python
python3制作捧腹网段子页爬虫
Feb 12 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 Python
python读取mat文件生成h5文件的实现
Jul 15 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采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python查看列的唯一值方法
2018/07/17 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python可视化实现KNN算法
2019/10/16 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
python 实现生成均匀分布的点
2019/12/05 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
报名委托书
2015/01/29 职场文书
首席执行官观后感
2015/06/03 职场文书
python状态机transitions库详解
2021/06/02 Python