Mwlib
this how-to is an help to install mediawiki libraries (mwlib) on SME 9
install
yum install smeserver-extrarepositories-epel -y
yum install pdftk gcc gcc-c++ cpp make python-devel libjpeg-devel zlib-devel freetype-devel lcms-devel libxslt-devel libxml2-devel git ocaml python-pip python-gevent python-py python-apipkg ImageMagick texlive-latex texlive-texvc blahtexml openssl-devel python-devel libffi-devel pyOpenSSL python2-pyasn1 python2-pyasn1-modules--enablerepo=epel -y
python pip
# apipkg provided in the repo is 1.4 and does not work with python 2.6
pip install apipkg==1.2
# Pillow is required, but the version 4.0 has a syntax error when running with python 2.6
pip install -i http://pypi.pediapress.com/simple/ Pillow==3.4.2 --trusted-host pypi.pediapress.com
# last version fails with python 2.6
pip install -i http://pypi.pediapress.com/simple/ --trusted-host pypi.pediapress.com pygments==1.6
easy_install -i http://pypi.pediapress.com/simple/ mwlib mwlib.rl pyfribidi
cd ~
git clone https://github.com/pediapress/texvc
cd texvc; make; make install
pip install ndg-httpsclient
configure services
mkdir /var/log/mediawiki/
chown www:www -R /var/log/mediawiki/
config set nserve service status enabled access localhost TCPPort 19737
config set mw-qserve service status enabled access localhost TCPPort 19252
config set nslave service status enabled access localhost
cat >/etc/systemd/system/nslave.service <<- EOM
[Unit]
Description=Mediawiki_collection_extension nslave
After=network-online.target mw-qserve.service nserve.service
[Service]
Type=simple
User=www
Group=www
Environment=PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
ExecStart=/bin/bash -c 'nslave --serve-files-port=20361 --host=localhost --port=19252 --numprocs=1 --cachedir /var/log/mediawiki/ '
[Install]
WantedBy=sme-server.target
EOM
cat >/etc/systemd/system/mw-qserve.service <<- EOM
[Unit]
Description=Mediawiki_collection_extension mw-qserve
After=network-online.target nserve.service
[Service]
Type=simple
User=www
Group=www
Environment=PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
ExecStart=/bin/bash -c 'mw-qserve -p 19252 -i localhost '
[Install]
WantedBy=sme-server.target
EOM
cat >/etc/systemd/system/nserve.service <<- EOM
[Unit]
Description=Mediawiki_collection_extension nserve
After=network-online.target
[Service]
Type=simple
User=www
Group=www
Environment=PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
ExecStart=/bin/bash -c 'nserve --port=19737 --qserve=localhost:19252 '
[Install]
WantedBy=sme-server.target
EOM
/etc/e-smith/events/actions/systemd-default
/usr/bin/systemctl start nserve.service mw-qserve.service nslave.service
you will need pdftk from dag (this repo does not exist anymore so here a way to get the files)
/sbin/e-smith/db yum_repositories set dag repository Name 'Dag - EL6' BaseURL 'http://www.mirrorservice.org/sites/apt.sw.be/redhat/el6/en/$basearch/dag' EnableGroups no GPGCheck yes GPGKey https://www.mirrorservice.org/sites/apt.sw.be/RPM-GPG-KEY.dag.txt Visible no Exclude freetype,htop,iptraf,rsync,syslinux status disabled signal-event yum-modify yum install pdftk --enablerepo=dag
add the repo epel
install compilation tools
yum install gcc gcc-c++ cpp make python-devel libjpeg-devel zlib-devel freetype-devel lcms-devel libxslt-devel libxml2-devel git ocaml
install needed dependencies
yum install python-pip python-gevent python-py python-apipkg ImageMagick texlive-latex texlive-texvc blahtexml --enablerepo=epelthis should install
======================================================================================================================
Installation:
python-apipkg noarch 1.0-1.el6 epel 10 k
python-gevent x86_64 0.13.8-3.el6 epel 189 k
python-pip noarch 7.1.0-1.el6 epel 1.5 M
python-py noarch 1.4.18-1.el6 epel 307 k
texlive-latex x86_64 2007-60.el6_7 base 83 k
Dependencies:
kpathsea x86_64 2007-60.el6_7 base 118 k
netpbm x86_64 10.47.05-11.el6 base 802 k
netpbm-progs x86_64 10.47.05-11.el6 base 1.7 M
openjpeg-libs x86_64 1.3-16.el6_8 updates 62 k
poppler x86_64 0.12.4-12.el6_9 updates 559 k
poppler-data noarch 0.4.0-1.el6 base 2.2 M
psutils x86_64 1.17-34.el6 base 46 k
python-greenlet x86_64 0.4.2-1.el6 epel 24 k
python-setuptools noarch 0.6.10-3.el6 base 336 k
tex-preview noarch 11.85-10.el6 base 50 k
texlive x86_64 2007-60.el6_7 base 1.8 M
texlive-dvips x86_64 2007-60.el6_7 base 193 k
texlive-texmf noarch 2007-39.el6_7 base 2.8 M
texlive-texmf-dvips noarch 2007-39.el6_7 base 237 k
texlive-texmf-errata noarch 2007-7.1.el6 base 5.3 k
texlive-texmf-errata-dvips noarch 2007-7.1.el6 base 5.3 k
texlive-texmf-errata-fonts noarch 2007-7.1.el6 base 5.5 k
texlive-texmf-errata-latex noarch 2007-7.1.el6 base 5.4 k
texlive-texmf-fonts noarch 2007-39.el6_7 base 48 M
texlive-texmf-latex noarch 2007-39.el6_7 base 5.3 M
texlive-utils x86_64 2007-60.el6_7 base 254 k
pip install :
# apipkg provided in the repo is 1.4 and does not work with python 2.6 pip install apipkg==1.2 # Pillow is required, but the version 4.0 has a syntax error when running with python 2.6 pip install -i http://pypi.pediapress.com/simple/ Pillow==3.4.2 --trusted-host pypi.pediapress.com # last version fails with python 2.6 pip install -i http://pypi.pediapress.com/simple/ --trusted-host pypi.pediapress.com pygments==1.6 pip install -i http://pypi.pediapress.com/simple/ mwlib mwlib.rl pyfribidi --trusted-host pypi.pediapress.com
if the previous fails:
easy_install -i http://pypi.pediapress.com/simple/ mwlib mwlib.rl pyfribidi
cd ~ git clone https://github.com/pediapress/texvc cd texvc; make; make install PREFIX=~/pp
ultimately, unless you upgrade to python 2.9 you will need a small hack on the PIL library :
vim /usr/lib64/python2.6/site-packages/PIL/Image.py
find
def tostring(self, *args, **kw): raise Exception("tostring() has been removed. " + "Please use tobytes() instead.")
and replace it with
def tostring(self): return self.tobytes()
startup script
mkdir /var/log/mediawiki/ chown www:www -R /var/log/mediawiki/ cat >/etc/init.d/mw-serve <<- EOM #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin case "\$1" in start) su - www -s /bin/bash -c 'nserve --port=19737 --qserve=localhost:19252 >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &' su - www -s /bin/bash -c 'mw-qserve -p 19252 -i localhost >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &' su - www -s /bin/bash -c 'nslave --serve-files-port=20361 --host=localhost --port=19252 --numprocs=1 --cachedir /var/log/mediawiki/ >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &' #su - www -s /bin/bash -c 'postman --cachedir /var/log/mediawiki/ >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &' ;; stop) #mv /var/log/mediawiki/mw-serve_log.txt /var/log/mediawiki/mw-serve_log.txt.old killall nserve killall mw-qserve killall nslave #killall postman ;; force-reload|restart) \$0 stop \$0 start ;; *) echo "Usage: /etc/init.d/mw-serve {start|stop}" exit 1 ;; esac exit 0 EOM chmod +x /etc/init.d/mw-serve pushd /etc/rc.d/rc7.d/ ln -s /etc/rc.d/init.d/mw-serve S80mw-serve popd
logrotate :
cat > /etc/logrotate.d/mwlib <<- EOM
/var/log/mediawiki/mw-serve_log.txt
{
compress
weekly
rotate 4
maxsize 5M
dateext
dateformat -%Y%m%d%H%M%S
missingok
postrotate
/etc/init.d/mw-serve restart
endscript
}
EOM
You might also need to do
if python complains too much of SSL and SNI
yum install openssl-devel python-devel libffi-devel -y pip install pyOpenSSL ndg-httpsclient pyasn1
see https://stackoverflow.com/questions/29099404/ssl-insecureplatform-error-when-using-requests-package
Sources
- http://mwlib.readthedocs.io/en/latest/installation.html
- https://stackoverflow.com/questions/36592618/reportlab-image-to-pdf-please-call-tobytes
- http://edutechwiki.unige.ch/en/Mediawiki_collection_extension_installation
ALternatives
use rpm for centos7 https://gitlab.com/harbottle/epypel
to test
mw-render --config http://en.wikipedia.org/w/ --output test.pdf --writer rl Physics
or
mw-zip -c https://mywiki.com/ -o test.zip "bunch of pages" "here also" mw-render -c test.zip -o test.pdf -w rl --language fr