2020-11-16 18:41:23 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
# Stop if an error is encountered
|
|
|
|
set -e
|
|
|
|
|
|
|
|
PROJECTNAME=$(basename $1)
|
|
|
|
SETTINGS_MODULE="$PROJECTNAME.settings.vagrant"
|
|
|
|
|
|
|
|
# Configuration de la base de données. Le mot de passe est constant car c'est
|
|
|
|
# pour une installation de dév locale qui ne sera accessible que depuis la
|
|
|
|
# machine virtuelle.
|
|
|
|
DBUSER=$PROJECTNAME
|
|
|
|
DBNAME=$PROJECTNAME
|
|
|
|
DBPASSWD="O1LxCADDA6Px5SiKvifjvdp3DSjfbp"
|
|
|
|
|
|
|
|
# Installation de paquets utiles.
|
|
|
|
# Installe les paquets mentionnés dans `package.list`, en excluant les lignes
|
|
|
|
# commençant par #.
|
|
|
|
apt-get update && apt-get upgrade -y
|
|
|
|
apt-get install -y $(awk '! /^ *#/' /vagrant/provisioning/package.list)
|
|
|
|
|
|
|
|
# Postgresql
|
|
|
|
# On teste si la db existe déjà pour ne pas essayer de la recréer
|
|
|
|
DB_EXISTS=$(sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -cw $DBNAME || true)
|
|
|
|
if [ $DB_EXISTS -eq 0 ]
|
|
|
|
then
|
|
|
|
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 "GRANT ALL PRIVILEGES ON DATABASE $DBNAME TO $DBUSER;"
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Redis
|
|
|
|
REDIS_PASSWD="dummy"
|
|
|
|
redis-cli CONFIG SET requirepass $REDIS_PASSWD
|
|
|
|
redis-cli -a $REDIS_PASSWD CONFIG REWRITE
|
|
|
|
|
|
|
|
# Contenu statique
|
|
|
|
mkdir -p /srv/$PROJECTNAME/static
|
|
|
|
ln -sf /vagrant/media /srv/$PROJECTNAME/media
|
|
|
|
chown -R vagrant:www-data /srv/$PROJECTNAME
|
|
|
|
|
|
|
|
# Nginx
|
|
|
|
rm -f /etc/nginx/sites-enabled/default
|
|
|
|
sed "s/\_\_PROJECTNAME__/$PROJECTNAME/g" /vagrant/provisioning/nginx.conf > /etc/nginx/sites-enabled/$PROJECTNAME.conf
|
|
|
|
systemctl reload nginx
|
|
|
|
|
|
|
|
# Environnement virtuel python
|
|
|
|
sudo -H -u vagrant python3 -m venv ~vagrant/venv
|
|
|
|
sudo -H -u vagrant ~vagrant/venv/bin/pip install -U pip
|
|
|
|
sudo -H -u vagrant ~vagrant/venv/bin/pip install -r /vagrant/requirements-prod.txt -r /vagrant/requirements-dev.txt
|
|
|
|
|
|
|
|
# Préparation de Django
|
|
|
|
cd /vagrant
|
|
|
|
sudo -H -u vagrant \
|
|
|
|
DJANGO_SETTINGS_MODULE=$SETTINGS_MODULE \
|
|
|
|
bash -c ". ~/venv/bin/activate && bash provisioning/prepare_django.sh"
|
2020-11-16 18:50:45 +01:00
|
|
|
sudo -H -u vagrant /home/vagrant/venv/bin/python manage.py collectstatic --noinput --settings $SETTINGS_MODULE
|
2020-11-16 18:41:23 +01:00
|
|
|
|
|
|
|
# Mails
|
|
|
|
mkdir -p /var/mail/django
|
|
|
|
chown -R vagrant:www-data /var/mail/django
|
|
|
|
|
|
|
|
# Service files
|
|
|
|
for file in /vagrant/provisioning/*.service
|
|
|
|
do
|
|
|
|
# failsafe si aucun fichier .service n'existe
|
|
|
|
[ -f $file ] || break
|
|
|
|
SERVICE=$(basename $file)
|
|
|
|
|
|
|
|
# On copie en remplaçant si nécessaire le template
|
|
|
|
sed "s/\_\_PROJECTNAME__/$PROJECTNAME/g" $file > /etc/systemd/system/$SERVICE
|
|
|
|
systemctl enable $SERVICE
|
|
|
|
systemctl start $SERVICE
|
|
|
|
done
|
|
|
|
|
|
|
|
# Mise en place du .bash_profile pour tout configurer lors du `vagrant ssh`
|
|
|
|
cat >> ~vagrant/.bashrc <<EOF
|
|
|
|
export DJANGO_SETTINGS_MODULE=$SETTINGS_MODULE
|
|
|
|
|
|
|
|
# Charge le virtualenv
|
|
|
|
source ~/venv/bin/activate
|
|
|
|
|
|
|
|
cd /vagrant
|
|
|
|
EOF
|