|
Size: 3243
Comment:
|
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 with uWSGI. The below walkthrough uses NGINX and skims over security and configuration details. | !MoinMoin requires a running web server and uWSGI. |
| Line 19: | Line 19: |
| 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]]. Optionally but '''''strongly recommended''''', install an SSL/TLS certificate. See [[Encryption/Certbot|here]] for details on that process. |
| Line 40: | Line 42: |
| === Let's Encrypt === |
|
| Line 44: | Line 44: |
| {{{ sudo apt install uwsgi uwsgi-plugin-python }}} |
See [[Python|here]] for installation (if even necessary) of Python. |
| Line 48: | Line 46: |
| ---- | Then follow-up [[UWSGI|here]] for more details on setting up uWSGI. |
| Line 52: | Line 50: |
| == MoinMoin Setup == | === MoinMoin === |
| Line 54: | Line 52: |
| === Python Dependencies === | |
| Line 56: | Line 53: |
| To insulate the MoinMoin instance from the wider web server, it should be installed inside a virtual environment. | ==== Python Dependencies ==== To insulate the !MoinMoin instance from the wider web server, it should be installed inside a virtual environment. |
| Line 64: | Line 64: |
| MoinMoin and its dependencies can now be installed safely. | !MoinMoin and its dependencies can now be installed safely. |
| Line 78: | Line 78: |
| === Configuration === | |
| Line 80: | Line 79: |
| Unpack key directories and files from the installed MoinMoin package. | ==== Minimum Running Configuration ==== In order to run, !MoinMoin expects a specific directories and scripts. Unpack these from the downloaded package. |
| Line 118: | Line 120: |
| === Permissions === | ==== Permissions ==== |
| Line 129: | Line 131: |
| === Service File === | ==== Service File ==== |
| Line 147: | Line 149: |
| Enable and start the service, and enjoy your wiki! | 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. |
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.
Contents
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.
