利用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中os.path用法分析
Jan 15 Python
python一键升级所有pip package的方法
Jan 16 Python
Python实现读取文件最后n行的方法
Feb 23 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python调用百度语音识别api
Aug 30 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
如何更优雅地写python代码
Jul 02 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
YUV转为jpg图像的实现
Dec 09 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通过文件头判断格式的方法
2016/05/28 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
jQuery each()小议
2010/03/18 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
js中getter和setter用法实例分析
2018/08/14 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python动态性强类型用法实例
2015/05/09 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Numpy之reshape()使用详解
2019/12/26 Python
python 实现字符串下标的输出功能
2020/02/13 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
党员承诺书范文
2014/05/19 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
《西门豹》教学反思
2016/02/23 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA