利用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实现类继承实例
Jul 04 Python
python字符串连接方式汇总
Aug 21 Python
Python中使用pprint函数进行格式化输出的教程
Apr 07 Python
Python中自定义函数的教程
Apr 27 Python
python实现中文转换url编码的方法
Jun 14 Python
Python在图片中添加文字的两种方法
Apr 29 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
python中pickle模块浅析
Dec 29 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网上调查系统
2006/10/09 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
javascript的回调函数应用示例
2014/02/20 Javascript
jquery图片切换插件
2015/03/16 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
React组件的三种写法总结
2017/01/12 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
python3使用urllib模块制作网络爬虫
2016/04/08 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
python opencv实现图像边缘检测
2019/04/29 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
团队拓展活动总结
2014/08/27 职场文书
政府四风问题整改措施
2014/10/04 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
医院党建工作总结2015
2015/05/26 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL