diff --git a/.art/about.png b/.art/about.png new file mode 100644 index 0000000..75f6af0 Binary files /dev/null and b/.art/about.png differ diff --git a/.art/dashboard.png b/.art/dashboard.png new file mode 100644 index 0000000..1a8a1e0 Binary files /dev/null and b/.art/dashboard.png differ diff --git a/.art/login_form.png b/.art/login_form.png new file mode 100644 index 0000000..66759c0 Binary files /dev/null and b/.art/login_form.png differ diff --git a/.art/logo.png b/.art/logo.png new file mode 100644 index 0000000..86da2ee Binary files /dev/null and b/.art/logo.png differ diff --git a/.art/setup.png b/.art/setup.png new file mode 100644 index 0000000..6df10ed Binary files /dev/null and b/.art/setup.png differ diff --git a/.art/tools.png b/.art/tools.png new file mode 100644 index 0000000..51b18d1 Binary files /dev/null and b/.art/tools.png differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e6800a8 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +WEBMIN_FW_TCP_INCOMING = 22 80 443 12320 12321 12322 + +CREDIT_ANCHORTEXT = Turnkey Mayan EDMS Appliance + +COMMON_OVERLAYS += adminer nginx +COMMON_CONF += adminer-pgsql + + +# Include the PostgreSQL/PHP make file +include $(FAB_PATH)/common/mk/turnkey/pgsql.mk +include $(FAB_PATH)/common/mk/turnkey.mk + + diff --git a/README.rst b/README.rst index ddd509b..6f1dae8 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ or repository for electronic documents. This appliance includes all the standard features in `TurnKey Core`_: -- Mayan EDMS 2.1 installed via PIP from `PyPI`_ +- Mayan EDMS 2.2 installed via PIP from `PyPI`_ - Includes all pre-reqs: Virtualenv/Django/uWSGI/Celery/Redis/Supervisor - SSL support out of the box. - PostgreSQL is is installed as Mayan's backend database @@ -29,8 +29,7 @@ Credentials *(passwords set at first boot)* - Mayan EDMS Admin Account: **admin** .. _Mayan EDMS: http://www.mayan-edms.com -.. _PyPI: https://pypi.python.org/pypi/mayan-edms/2.1.3 -.. _GitHub: https://github.com/odoo/odoo +.. _PyPI: https://pypi.python.org/pypi/mayan-edms .. _TurnKey Core: https://www.turnkeylinux.org/core .. _Adminer: http://www.adminer.org/ .. _upstream: https://github.com/DocCyblade/tkl-mayan-edms diff --git a/changelog b/changelog new file mode 100644 index 0000000..319b8bb --- /dev/null +++ b/changelog @@ -0,0 +1,16 @@ +turnkey-mayan-edms-14.2 (1) turnkey; urgency=low + + * Initial release of appliance: + - Mayan EDMS v2.2 + - includes PostgreSQL for database backend + - includes Nginx for web front end + - upstream source install (PyPI) + + * Based on the work of community member Ken Robinson (@DocCyblade) + Build source: https://github.com/DocCyblade/tkl-mayan-edms + + * Note: Please refer to turnkey-core's changelog for changes common to all + appliances. + + -- Ken Robinson Mon, 08 May 2017 23:54:00 -0400 + diff --git a/conf.d/main b/conf.d/main new file mode 100755 index 0000000..54bca23 --- /dev/null +++ b/conf.d/main @@ -0,0 +1,143 @@ +#!/bin/bash -ex + +# Demo files download function +# dl [URL] [TARGET DIR] [TARGET FILE NAME] +# +dl() { + [ "$FAB_HTTP_PROXY" ] && PROXY="--proxy $FAB_HTTP_PROXY" + cd $2; curl -L -f $PROXY $1 -o $3; cd - +} + +# Use FAB proxy with PIP +# fab-pip-install [package] +fab-pip-install() { + [ "$FAB_HTTP_PROXY" ] && PROXY="--proxy $FAB_HTTP_PROXY" + pip $PROXY install $1 +} + +# Use FAB proxy with PIP Upgrade +# fab-pip-upgrade [package] +fab-pip-upgrade() { + [ "$FAB_HTTP_PROXY" ] && PROXY="--proxy $FAB_HTTP_PROXY" + pip $PROXY install -U $1 +} + +# Set variables +# +DB_NAME=mayan +DB_USER=mayan +DB_PASS=$(mcookie) + + +APP_SETTINGS=/usr/share/mayan-edms/mayan/settings/local.py +APP_SETTINGS_TEMPLATE=/usr/share/mayan-edms/mayan/settings/settings.template +APP_SETTINGS_DATA_DIR=/usr/share/mayan-edms/mayan/media/document_storage + +# Create application directory (virtualenv) +cd /usr/share +virtualenv mayan-edms + +# Activate the environment +source /usr/share/mayan-edms/bin/activate + +# Upgrade PIP within the virtualenv +fab-pip-upgrade pip + +# Install Mayan EDMS from PyPI +fab-pip-install mayan-edms + +# Install Python client for PostgreSQL +fab-pip-install psycopg2 + +# Install Python client for Redis key-value store +fab-pip-install redis + +# Install Python uWSGI server +fab-pip-install uwsgi + + +# Start postgresql server +/etc/init.d/postgresql start + +# Create the database user and database for the installation +su postgres -c "createuser $DB_USER" +su postgres -c "createdb -O $DB_USER $DB_NAME" +su postgres -c "psql postgres" << EOF +alter user $DB_USER with encrypted password '$DB_PASS'; +EOF + + +# Create log file directory for mayan and uwsgi +mkdir /var/log/mayan +mkdir /var/log/uwsgi + +# Make a convenience symbolic link +cd /usr/share/mayan-edms +ln -s lib/python2.7/site-packages/mayan . + +# Make doc store +mkdir -p $APP_SETTINGS_DATA_DIR + +# Create an initial settings file and db.template +# We will recreate this on first boot, but create it +# here for testing builds. +mayan-edms.py createsettings -v 3 + +cat << EOF > $APP_SETTINGS_TEMPLATE + +DEBUG = False + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': '$DB_NAME', + 'USER': '$DB_USER', + 'PASSWORD': '$DB_PASS', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +BROKER_URL = 'redis://127.0.0.1:6379/0' +CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' + +EMAIL_HOST = 'localhost' +EMAIL_PORT = 25 + +EOF + + + +# Create initial settings +mayan-edms.py createsettings + +# Apply the settings template +cat $APP_SETTINGS_TEMPLATE >> $APP_SETTINGS + + +# Init Mayan Database +mayan-edms.py initialsetup + + +# Disable the default NGINX site +rm /etc/nginx/sites-enabled/default + +# Enable the NGINX site for Mayan EDMS +ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/ + +# Collect static files +mayan-edms.py collectstatic --noinput + + +# Make the installation and directory readable and writable by the webserver user +chown www-data:www-data /usr/share/mayan-edms -R + +# Stop postgresql server +/etc/init.d/postgresql stop + + +# Link Nginx Adminer conifg +ln -s /etc/nginx/sites-available/adminer /etc/nginx/sites-enabled/adminer + +# Configure fastcgi for Adminer via Nginx (php-fastcgi) +update-rc.d php-fastcgi defaults diff --git a/overlay/etc/confconsole/services.txt b/overlay/etc/confconsole/services.txt new file mode 100644 index 0000000..a18f0c2 --- /dev/null +++ b/overlay/etc/confconsole/services.txt @@ -0,0 +1,5 @@ +Mayan EDMS: https://$ipaddr +Web shell: https://$ipaddr:12320 +Webmin: https://$ipaddr:12321 +Adminer: https://$ipaddr:12322 +SSH/SFTP: root@$ipaddr (port 22) diff --git a/overlay/etc/default/php-fastcgi b/overlay/etc/default/php-fastcgi new file mode 100644 index 0000000..9b4c386 --- /dev/null +++ b/overlay/etc/default/php-fastcgi @@ -0,0 +1,10 @@ +SOCKETDIR=/var/run/nginx +mkdir -p $SOCKETDIR +chown root:www-data $SOCKETDIR +chmod 770 $SOCKETDIR + +START=yes +EXEC_AS_USER=www-data:www-data +PHP_FCGI_SOCKET=$SOCKETDIR/$NAME.sock +PHP_FCGI_CHILDREN=2 +PHP_FCGI_MAX_REQUESTS=1000 diff --git a/overlay/etc/init.d/php-fastcgi b/overlay/etc/init.d/php-fastcgi new file mode 100755 index 0000000..8a0dc71 --- /dev/null +++ b/overlay/etc/init.d/php-fastcgi @@ -0,0 +1,131 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: php-fastcgi +# Required-Start: $all +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start and stop php-cgi in external FASTCGI mode +# Description: Start and stop php-cgi in external FASTCGI mode +### END INIT INFO + +# Author: Kurt Zankl + +# Do NOT "set -e" + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +NAME=php-fastcgi +DESC="php-cgi in external FASTCGI mode" +DAEMON=/usr/bin/php-cgi +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# If the daemon is not enabled, give the user a warning and then exit, +# unless we are stopping the daemon +if [ "$START" != "yes" -a "$1" != "stop" ]; then + log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes" + exit 0 +fi + +# Process configuration +export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS +DAEMON_ARGS="-q -b $PHP_FCGI_SOCKET" + + + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ + --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; +esac + +# The colon at the end makes sure that the script returns the correct return value of log_end_msg +# using systemd with this script, it will fail without this colon! Keep it there! + +: + diff --git a/overlay/etc/nginx/fastcgi_params b/overlay/etc/nginx/fastcgi_params new file mode 100644 index 0000000..37ca7b4 --- /dev/null +++ b/overlay/etc/nginx/fastcgi_params @@ -0,0 +1,26 @@ +fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; + +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +fastcgi_param HTTP_PROXY ""; + +# PHP only, required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; diff --git a/overlay/etc/nginx/include/php b/overlay/etc/nginx/include/php new file mode 100644 index 0000000..b3eb7f7 --- /dev/null +++ b/overlay/etc/nginx/include/php @@ -0,0 +1,9 @@ +include /etc/nginx/fastcgi_params; + +location ~ \.php$ { + # http://forum.nginx.org/read.php?2,88845,page=3 + try_files $uri =404; + + fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock; + fastcgi_index index.php; +} diff --git a/overlay/etc/nginx/sites-available/adminer b/overlay/etc/nginx/sites-available/adminer new file mode 100644 index 0000000..24ba2f7 --- /dev/null +++ b/overlay/etc/nginx/sites-available/adminer @@ -0,0 +1,31 @@ +server { + + listen 12322 ssl; + include /etc/nginx/include/ssl; + root /usr/share/adminer/adminer/; + + error_log /var/log/nginx/adminer-error.log; + location / { + index index.php; + try_files $uri $uri/ /index.php?$args; + } + + location ~ .php$ { + fastcgi_param HTTPS on; + include /etc/nginx/include/php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + location /adminer { + alias /usr/share/adminer/adminer/; + } + + location /adminer-editor { + alias /usr/share/adminer/editor/; + } + + location /externals { + alias /usr/share/adminer/externals/; + } + +} diff --git a/overlay/etc/nginx/sites-available/mayan b/overlay/etc/nginx/sites-available/mayan new file mode 100644 index 0000000..da8e2ca --- /dev/null +++ b/overlay/etc/nginx/sites-available/mayan @@ -0,0 +1,36 @@ +server { + + listen 443 ssl; + include /etc/nginx/include/ssl; + + server_name localhost; + + # Serve Mayan via uwsgi + location / { + include uwsgi_params; + uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock; + + client_max_body_size 30M; # Increse if your plan to upload bigger documents + proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds + } + + # Serve Mayan static files + location /static { + alias /usr/share/mayan-edms/mayan/media/static; + expires 1h; + } + + # Fav icon + location /favicon.ico { + alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico; + expires 1h; + } +} + +# Redirect all http to https +server { + listen 80; + server_name localhost; + return 301 https://$host$request_uri; +} + diff --git a/overlay/etc/supervisor/conf.d/mayan-celery.conf b/overlay/etc/supervisor/conf.d/mayan-celery.conf new file mode 100644 index 0000000..ab7f24b --- /dev/null +++ b/overlay/etc/supervisor/conf.d/mayan-celery.conf @@ -0,0 +1,26 @@ +[program:mayan-worker] +command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR +directory = /usr/share/mayan-edms +user = www-data +stdout_logfile = /var/log/mayan/worker-stdout.log +stderr_logfile = /var/log/mayan/worker-stderr.log +autostart = true +autorestart = true +startsecs = 10 +stopwaitsecs = 10 +killasgroup = true +priority = 998 + +[program:mayan-beat] +command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR +directory = /usr/share/mayan-edms +user = www-data +numprocs = 1 +stdout_logfile = /var/log/mayan/beat-stdout.log +stderr_logfile = /var/log/mayan/beat-stderr.log +autostart = true +autorestart = true +startsecs = 10 +stopwaitsecs = 1 +killasgroup = true +priority = 998 diff --git a/overlay/etc/supervisor/conf.d/mayan-uwsgi.conf b/overlay/etc/supervisor/conf.d/mayan-uwsgi.conf new file mode 100644 index 0000000..89f0e77 --- /dev/null +++ b/overlay/etc/supervisor/conf.d/mayan-uwsgi.conf @@ -0,0 +1,6 @@ +[program:mayan-uwsgi] +command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini +user = root +autostart = true +autorestart = true +redirect_stderr = true diff --git a/overlay/usr/lib/inithooks/bin/mayan.py b/overlay/usr/lib/inithooks/bin/mayan.py new file mode 100755 index 0000000..11eabc7 --- /dev/null +++ b/overlay/usr/lib/inithooks/bin/mayan.py @@ -0,0 +1,70 @@ +#!/usr/bin/python +"""Set Mayan EDMS admin password and email + +Option: + --pass= unless provided, will ask interactively + --email= unless provided, will ask interactively + +""" + +import sys +import getopt +import inithooks_cache + +from dialog_wrapper import Dialog +from pgsqlconf import PostgreSQL +from passlib.hash import django_pbkdf2_sha256 as djpass + + +def usage(s=None): + if s: + print >> sys.stderr, "Error:", s + print >> sys.stderr, "Syntax: %s [options]" % sys.argv[0] + print >> sys.stderr, __doc__ + sys.exit(1) + +def main(): + try: + opts, args = getopt.gnu_getopt(sys.argv[1:], "h", + ['help', 'pass=', 'email=']) + except getopt.GetoptError, e: + usage(e) + + password = "" + email = "" + for opt, val in opts: + if opt in ('-h', '--help'): + usage() + elif opt == '--pass': + password = val + elif opt == '--email': + email = val + + if not password: + d = Dialog('TurnKey Linux - First boot configuration') + password = d.get_password( + "Mayan EDMS Admin Password", + "Enter new password for the Mayan EDMS 'admin' account.") + + if not email: + if 'd' not in locals(): + d = Dialog('TurnKey Linux - First boot configuration') + + email = d.get_email( + "Mayan EDMS Email", + "Please enter email address for the Mayan EDMS 'admin' account.", + "admin@example.com") + + inithooks_cache.write('APP_EMAIL', email) + + hashpass = djpass.encrypt(password) + + p = PostgreSQL(database='mayan') + + p.execute('UPDATE autoadmin_autoadminsingleton SET password = NULL, password_hash = NULL, account_id = NULL WHERE (id = 1);') + p.execute('UPDATE auth_user SET email = \'%s\' WHERE username = \'admin\';' % email) + p.execute('UPDATE auth_user SET password = \'%s\' WHERE username = \'admin\';' % hashpass) + +if __name__ == "__main__": + main() + diff --git a/overlay/usr/lib/inithooks/firstboot.d/20mayan-django-secrets b/overlay/usr/lib/inithooks/firstboot.d/20mayan-django-secrets new file mode 100755 index 0000000..2959295 --- /dev/null +++ b/overlay/usr/lib/inithooks/firstboot.d/20mayan-django-secrets @@ -0,0 +1,26 @@ +#!/bin/bash -e +# regenerate mayan django secert password + +. /etc/default/inithooks + +CONF=/usr/share/mayan-edms/mayan/settings/local.py +CONF_TEMPLATE=/usr/share/mayan-edms/mayan/settings/settings.template + +# Stop services will be restarted when database password has been changed +supervisorctl stop all + +# Remove settings file +rm $CONF + +# Enter virtualenv +cd /usr/share/mayan-edms +source bin/activate + +# Re-run createsettings +mayan-edms.py createsettings + +# Append template +cat $CONF_TEMPLATE >> $CONF + +# Exit out of virtualenv +deactivate diff --git a/overlay/usr/lib/inithooks/firstboot.d/21mayan-db-secrets b/overlay/usr/lib/inithooks/firstboot.d/21mayan-db-secrets new file mode 100755 index 0000000..8d86c1a --- /dev/null +++ b/overlay/usr/lib/inithooks/firstboot.d/21mayan-db-secrets @@ -0,0 +1,20 @@ +#!/bin/bash -e +# regenerate mayan pgsql password + +. /etc/default/inithooks + +CONF=/usr/share/mayan-edms/mayan/settings/local.py +DB_USER=mayan + +# Create new password +DB_PASS=$(mcookie) + +# Set new password in config file +sed -i "s|'PASSWORD':.*|'PASSWORD': '$DB_PASS',|" $CONF + + +# Update the pastgres user password +$INITHOOKS_PATH/bin/pgsqlconf.py --user=$DB_USER --pass="$DB_PASS" + +# Since we reset the password, reload Mayan +supervisorctl restart all diff --git a/overlay/usr/lib/inithooks/firstboot.d/40mayan b/overlay/usr/lib/inithooks/firstboot.d/40mayan new file mode 100755 index 0000000..bdc8283 --- /dev/null +++ b/overlay/usr/lib/inithooks/firstboot.d/40mayan @@ -0,0 +1,9 @@ +#!/bin/bash -e +# Set the super admin password/email for Mayan + +. /etc/default/inithooks + +[ -e $INITHOOKS_CONF ] && . $INITHOOKS_CONF +$INITHOOKS_PATH/bin/mayan.py --pass="$APP_PASS" --email="$APP_EMAIL" + + diff --git a/overlay/usr/share/mayan-edms/uwsgi.ini b/overlay/usr/share/mayan-edms/uwsgi.ini new file mode 100644 index 0000000..b0aa590 --- /dev/null +++ b/overlay/usr/share/mayan-edms/uwsgi.ini @@ -0,0 +1,14 @@ +[uwsgi] +chdir = /usr/share/mayan-edms/lib/python2.7/site-packages/mayan +chmod-socket = 664 +chown-socket = www-data:www-data +env = DJANGO_SETTINGS_MODULE=mayan.settings.production +gid = www-data +logto = /var/log/uwsgi/%n.log +pythonpath = /usr/share/mayan-edms/lib/python2.7/site-packages +master = True +max-requests = 5000 +socket = /usr/share/mayan-edms/uwsgi.sock +uid = www-data +vacuum = True +wsgi-file = /usr/share/mayan-edms/lib/python2.7/site-packages/mayan/wsgi.py diff --git a/plan/main b/plan/main new file mode 100644 index 0000000..10b40c6 --- /dev/null +++ b/plan/main @@ -0,0 +1,40 @@ +#include + +/* Databse and DB Admin Tools */ +postgresql /* PostgresSQL Server */ + +adminer /* Adminer PHP DB Admin */ +php5-cgi /* adminer depend */ +php5-pgsql /* needed for adminer pg support */ + +webmin-postgresql /* PostgreSQL Admin for Webmin */ + + +/* Needed for Mayan EDMS */ +nginx /* Frontend Web Server - small, powerful, scalable web/proxy server */ + +supervisor /* Process Monitor - A system for controlling process state */ +redis-server /* Backend for Celery - Persistent key-value database with network interface */ + +python-pip /* alternative Python package installer */ +python-virtualenv /* Python virtual environment creator for Python 2.x */ +virtualenv /* Python virtual environment creator for Python 3.x needed for above package to work */ + +gcc /* GNU C compiler */ +python-dev /* header files and a static library for Python */ +libpq-dev /* header files for libpq5 */ +libjpeg-dev /* Development files for the JPEG library */ +libpng-dev /* PNG library - development */ +libtiff-dev /* Tag Image File Format library (TIFF) */ +python-passlib /* Comprehensive password hashing framework */ + +libreoffice /* office productivity suite */ +libmagic1 /* File type determination library using "magic" numbers */ +ghostscript /* interpreter for the PostScript language and for PDF */ +gpgv /* GNU privacy guard - signature verification tool */ + +tesseract-ocr /* Command line OCR tool */ +unpaper /* post-processing tool for scanned pages */ +poppler-utils /* PDF utilities (based on Poppler) */ + +