Differences between revisions 4 and 5
Revision 4 as of 2020-03-03 20:35:11
Size: 3835
Comment:
Revision 5 as of 2021-11-18 08:40:11
Size: 3535
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
!MoinMoin is a wiki software. Version 1 (current release) runs on Python 2 with vendored dependencies, a complex plugin ecosystem, and no plan for security support. Version 2 (unstable) runs on Python 3 with the Flask ecosystem. !MoinMoin is a wiki software. Version 1 (current release) runs on Python 2 with vendored dependencies, a complex plugin ecosystem, and no plan for security support. Version 2 (unstable) runs on Python 3 with the [[Python/Flask|Flask]] ecosystem.
Line 11: Line 11:
== Server Setup == == Installation ==
Line 13: Line 13:
!MoinMoin requires a running web server running [[PythonSetup|Python]] and [[UWSGISetup|uWSGI]]. The below walkthrough skims over security and configuration details. !MoinMoin requires a running web server and uWSGI.
Line 19: Line 19:
'''NGINX''' can run a 'good-enough' web server with minimal configuration. Create a server location that passes into the !MoinMoin socket. then enable and start the NGINX service. See [[NGINX]] for installation and configure for an uWSGI server.
Line 36: Line 36:
Often, uWSGI apps recommend adding `uwsgi_modifier1 30` to rewrite PATH_INFO and SCRIPT_NAME. This is a deprecated measure, and is unstable for Python 3+. Instead, [[UWSGISetup|configure uWSGI]]. Often, uWSGI apps recommend adding `uwsgi_modifier1 30` to rewrite PATH_INFO and SCRIPT_NAME. This is a deprecated measure, and is unstable for Python 3+. Instead, [[UWSGI|configure uWSGI]].
Line 38: Line 38:
See [[NGINXSetup|here]] for more details on setting up NGINX.



=== Let's Encrypt ===

'''certbot''' can quickly and freely encrypt the wiki, using its NGINX plugin.

{{{
sudo certbot --nginx -d wiki.dominic-ricottone.com
}}}

See [[SSLSetup|here]] for more details on setting up SSL.
Optionally but '''''strongly recommended''''', install an SSL/TLS certificate. See [[Encryption/Certbot|here]] for details on that process.
Line 56: Line 44:
See [[Python|here]] for installation (if even necessary) of Python.
Line 57: Line 46:

S
ee [[UWSGISetup|here]] for more details on setting up uWSGI.

----
Then follow-up [[UWSGI|here]] for more details on setting up uWSGI.
Line 64: Line 50:
== MoinMoin == === MoinMoin ===
Line 68: Line 54:
=== Python Dependencies === ==== Python Dependencies ====
Line 94: Line 80:
=== Minimum Running Configuration === ==== Minimum Running Configuration ====
Line 134: Line 120:
=== Permissions === ==== Permissions ====
Line 145: Line 131:
=== Service File === ==== Service File ====

MoinMoin

!MoinMoin is a wiki software. Version 1 (current release) runs on Python 2 with vendored dependencies, a complex plugin ecosystem, and no plan for security support. Version 2 (unstable) runs on Python 3 with the Flask ecosystem.


Installation

!MoinMoin requires a running web server and uWSGI.

NGINX

See NGINX for installation and configure for an uWSGI server.

server {
        listen 80 default_server;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        location / {
                include /etc/nginx/uwsgi_params;
                uwsgi_pass unix:///var/www/moin/moin.sock;
                uwsgi_modifier1 30;
        }
}

Often, uWSGI apps recommend adding uwsgi_modifier1 30 to rewrite PATH_INFO and SCRIPT_NAME. This is a deprecated measure, and is unstable for Python 3+. Instead, configure uWSGI.

Optionally but strongly recommended, install an SSL/TLS certificate. See here for details on that process.

uWSGI

See here for installation (if even necessary) of Python.

Then follow-up here for more details on setting up uWSGI.

MoinMoin

Python Dependencies

To insulate the !MoinMoin instance from the wider web server, it should be installed inside a virtual environment.

sudo apt install python-pip
sudo pip install virtualenv
sudo virtualenv /var/www/moin/pythonenv

!MoinMoin and its dependencies can now be installed safely.

#download
cd /tmp
wget http://static.moinmo.in/files/moin-1.9.10.tar.gz
tar zxvf moin-1.9.10.tar.gz
cd ./moin-1.9.10

#install
source /var/www/moin/pythonenv/bin/activate
python ./setup.py install

Minimum Running Configuration

In order to run, !MoinMoin expects a specific directories and scripts. Unpack these from the downloaded package.

cp -r /tmp/wiki /var/www/moin
cp /tmp/config/wikiconfig.py /var/www/moin/wiki/
cp /tmp/server/moin.wsgi /var/www/moin/wiki/

Insert the below into wikiconfig.py, after import os but before from MoinMoin.config import multiconfig, url_prefix_static.

import sys
sys.path.insert(0, '/var/www/moin/pythonenv/lib/python2.7/site-packages/')
sys.path.insert(0, '/var/www/moin/wiki/')

Create a new file, uwsgi.ini.

[uwsgi]
uid = moin
gid = www-data
socket = /var/www/moin/moin.sock
chmod-socket = 660
plugin = python

chdir = /var/www/moin/wiki
wsgi-file = /var/www/moin/wiki/moin.wsgi

master
workers = 3
max-requests = 200
harakiri = 60
die-on-term

Permissions

You know you'll have permissions errors eventually. Preempt them.

chown www-data:www-data -R /var/www/moin
chmod g+w,o-rwx -R /var/www/moin

Service File

Create a service file at /etc/systemd/system/moinmoin.service. It should call uWSGI with the configuration we just setup.

[Unit]
Description=Start uwsgi for MoinMoin wiki
After=network.target

[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/uwsgi --ini /var/www/moin/wiki/uwsgi.ini

[Install]
WantedBy=multi-user.target

Enable and start the service.


Configuration

Follow the on-screen instructions to setup a superuser, install language packs and addons, and set the front page.


CategoryRicottone

Python/MoinMoin (last edited 2023-04-08 20:48:33 by DominicRicottone)