#!/bin/bash # The credentials of the database. Can be public since they will only be used in # the local development environment DBUSER="event_gestion" DBNAME="event_gestion" DBPASSWD="4KZt3nGPLVeWSvtBZPsd9jdssdJMds78" # Not critical either REDIS_PASSWD="dummy" # It is used in quite a few places SETTINGS="evenementiel.settings.dev" # Fills a "templated file" with the information specified in the variables above # e.g. every occurrence of {{DBUSER}} in the file will be replaced by the value # of the variable $DBUSER function fill_template { sed "s/{{DBUSER}}/$DBUSER/" -i $1 sed "s/{{DBNAME}}/$DBNAME/" -i $1 sed "s/{{DBPASSWD}}/$DBPASSWD/" -i $1 sed "s/{{REDIS_PASSWD}}/$REDIS_PASSWD/" -i $1 sed "s/{{SETTINGS}}/$SETTINGS/" -i $1 } # --- # Installs the dependencies # --- # System packages apt-get update && apt-get upgrade -y apt-get install -y python3-pip python3-dev python3-venv libpq-dev postgresql \ postgresql-contrib libjpeg-dev nginx redis-server # Python packages, in a virtual environment sudo -H -u vagrant python3 -m venv ~vagrant/venv sudo -H -u vagrant ~vagrant/venv/bin/pip install -U pip wheel sudo -H -u vagrant ~vagrant/venv/bin/pip install -U -r /vagrant/requirements-devel.txt # --- # Setup the production-like environment # --- # Database and User sudo -u postgres createdb $DBNAME sudo -u postgres createuser -SDR $DBUSER sudo -u postgres psql -c "ALTER USER $DBUSER WITH PASSWORD '$DBPASSWD';" sudo -u postgres psql -c "ALTER USER $DBUSER CREATEDB;" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DBNAME TO $DBUSER;" # The working directory for Daphne and cie mkdir -p /srv/GE/{media,static} chown -R vagrant:vagrant /srv/GE # Nginx cp /vagrant/provisioning/nginx.conf /etc/nginx/sites-available/ge.conf if [ ! -h /etc/nginx/sites-enabled/ge.conf ] then # If the configuration file is not activated yet, activates it ln -s /etc/nginx/sites-available/ge.conf /etc/nginx/sites-enabled/ge.conf fi rm -f /etc/nginx/sites-enabled/default # We do not need this service nginx restart # Daphne and the worker(s) for service in {daphne,worker}.service do cp /vagrant/provisioning/$service /etc/systemd/system/$service fill_template /etc/systemd/system/$service systemctl enable $service systemctl start $service done # Redis redis-cli CONFIG SET requirepass $REDIS_PASSWD if [ ! $? ] then # In case the requirepass command failed, checks that it was because the # password was already set *to the right value*. redis-cli AUTH $REDIS_PASSWD fi redis-cli -a $REDIS_PASSWD CONFIG REWRITE # --- # Prepare Django # --- cd /vagrant # Setup the secrets sudo -H -u vagrant cp evenementiel/settings/secret_example.py \ evenementiel/settings/secret.py fill_template evenementiel/settings/secret.py # Run the usual django admin commands function venv_python { sudo -H -u vagrant DJANGO_SETTINGS_MODULE=$SETTINGS \ ~vagrant/venv/bin/python \ $@ } venv_python manage.py collectstatic --noinput venv_python manage.py migrate # --- # Setup a friendly environment for the user # --- cat > ~vagrant/.bash_profile <