Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- # ====== CONFIG ======
- INSTALLATION_DIRECTORY=/usr/share/mayan-edms/
- DB_NAME=mayan_edms
- DB_USERNAME=mayan
- DB_PASSWORD=test123
- # ==== END CONFIG ====
- cat << EOF | sudo tee -a /etc/motd.tail
- **********************************
- Mayan EDMS Vagrant Production Box
- **********************************
- EOF
- echo -e "\n -> Running apt-get update & upgrade \n"
- sudo apt-get -qq update
- sudo apt-get -y upgrade
- echo -e "\n -> Installing core binaries \n"
- apt-get install nginx supervisor redis-server postgresql libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y
- echo -e "\n -> Setting up virtualenv \n"
- rm -f ${INSTALLATION_DIRECTORY}
- virtualenv ${INSTALLATION_DIRECTORY}
- source ${INSTALLATION_DIRECTORY}bin/activate
- echo -e "\n -> Installing Mayan EDMS from PyPI \n"
- pip install mayan-edms
- echo -e "\n -> Installing Python client for PostgreSQL, Redis, and uWSGI \n"
- pip install psycopg2 redis uwsgi
- echo -e "\n -> Creating the database for the installation \n"
- #sudo -u postgres createuser -P mayan $DB_PASSWORD
- #sudo -u postgres echo "CREATE USER mayan WITH password $DB_PASSWORD" | psql
- echo "CREATE USER mayan WITH PASSWORD '$DB_PASSWORD';" | sudo -u postgres psql
- sudo -u postgres createdb -O $DB_USERNAME $DB_NAME
- echo -e "\n -> Creating the directories for the logs \n"
- mkdir /var/log/mayan
- echo -e "\n -> Making a convenience symlink \n"
- cd ${INSTALLATION_DIRECTORY}
- ln -s lib/python2.7/site-packages/mayan .
- echo -e "\n -> Creating an initial settings file \n"
- mayan-edms.py createsettings
- echo -e "\n -> Updating the mayan/settings/local.py file \n"
- cat >> mayan/settings/local.py << EOF
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'NAME': '$DB_NAME',
- 'USER': '$DB_USERNAME',
- 'PASSWORD': '$DB_PASSWORD',
- 'HOST': 'localhost',
- 'PORT': '5432',
- }
- }
- BROKER_URL = 'redis://127.0.0.1:6379/0'
- CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
- EOF
- echo -e "\n -> Migrating the database or initialize the project \n"
- mayan-edms.py initialsetup
- echo -e "\n -> Disabling the default NGINX site \n"
- rm -f /etc/nginx/sites-enabled/default
- echo -e "\n -> Creating a uwsgi.ini file \n"
- cat > uwsgi.ini << EOF
- [uwsgi]
- chdir = ${INSTALLATION_DIRECTORY}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 = ${INSTALLATION_DIRECTORY}lib/python2.7/site-packages
- master = True
- max-requests = 5000
- socket = ${INSTALLATION_DIRECTORY}uwsgi.sock
- uid = www-data
- vacuum = True
- wsgi-file = ${INSTALLATION_DIRECTORY}lib/python2.7/site-packages/mayan/wsgi.py
- EOF
- echo -e "\n -> Creating the directory for the uWSGI log files \n"
- mkdir -p /var/log/uwsgi
- echo -e "\n -> Creating the NGINX site file for Mayan EDMS, /etc/nginx/sites-available/mayan \n"
- cat > /etc/nginx/sites-available/mayan << EOF
- server {
- listen 80;
- server_name localhost;
- location / {
- include uwsgi_params;
- uwsgi_pass unix:${INSTALLATION_DIRECTORY}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
- }
- location /static {
- alias ${INSTALLATION_DIRECTORY}mayan/media/static;
- expires 1h;
- }
- location /favicon.ico {
- alias ${INSTALLATION_DIRECTORY}mayan/media/static/appearance/images/favicon.ico;
- expires 1h;
- }
- }
- EOF
- echo -e "\n -> Enabling the NGINX site for Mayan EDMS \n"
- ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/
- echo -e "\n -> Creating the supervisor file for the uWSGI process, /etc/supervisor/conf.d/mayan-uwsgi.conf \n"
- cat > /etc/supervisor/conf.d/mayan-uwsgi.conf << EOF
- [program:mayan-uwsgi]
- command = ${INSTALLATION_DIRECTORY}bin/uwsgi --ini ${INSTALLATION_DIRECTORY}uwsgi.ini
- user = root
- autostart = true
- autorestart = true
- redirect_stderr = true
- EOF
- echo -e "\n -> Creating the supervisor file for the Celery worker, /etc/supervisor/conf.d/mayan-celery.conf \n"
- cat > /etc/supervisor/conf.d/mayan-celery.conf << EOF
- [program:mayan-worker]
- command = ${INSTALLATION_DIRECTORY}bin/python ${INSTALLATION_DIRECTORY}bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
- directory = ${INSTALLATION_DIRECTORY}
- 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 = ${INSTALLATION_DIRECTORY}bin/python ${INSTALLATION_DIRECTORY}bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
- directory = ${INSTALLATION_DIRECTORY}
- 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
- EOF
- echo -e "\n -> Collecting the static files \n"
- mayan-edms.py collectstatic --noinput
- echo -e "\n -> Making the installation directory readable and writable by the webserver user \n"
- chown www-data:www-data ${INSTALLATION_DIRECTORY} -R
- echo -e "\n -> Restarting the services \n"
- /etc/init.d/nginx restart
- /etc/init.d/supervisor restart
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement