原使用 Apache + mod_wsgi 部署 MoinMoin 發現編輯儲存頁面極慢,改用 Nginx + uWSGI 架構顯著提升效能。本文基於 CentOS 系統,詳細記錄從安裝到調優的完整流程。
假設已完成官方 Quick MoinMoin on CentOS 指引中 Apache/Mod_wsgi 以外的基礎安裝(Python、MoinMoin 核心程式等)。
CentOS 預設無 Nginx 源,手動添加官方倉庫:
wget https://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
yum install nginx
# 安裝 Python 開發工具與 pip
yum install python-devel python-setuptools
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python
# 使用豆瓣鏡像安裝 uWSGI
pip install -v uwsgi -i https://pypi.douban.com/simple
建立 /etc/uwsgi/uwsgi.xml:
/var/run/moin.sock
666
256
6
chmod-socket 666 確保 Nginx 有權存取 socket 檔案。
cd /usr/local/share/moin
mv moin.wsgi moin_wsgi.py
重命名為 .py 讓 uWSGI 辨識為 Python 模組。
uwsgi -x /etc/uwsgi/uwsgi.xml
建立 /etc/nginx/conf.d/moin.conf:
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_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
發現編輯儲存仍慢,經查為 uWSGI 執行反向 DNS 導致。編輯 wikiconfig.py 加入:
log_reverse_dns_lookups = False
重啟 uWSGI 後問題解決,回應速度大幅提升。