provision.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. PROJECT_NAME=$1
  3. : ${PROJECT_DIR:=/vagrant}
  4. : ${DEV_USER:=vagrant}
  5. VIRTUALENV_DIR=/home/$DEV_USER/.virtualenvs/$PROJECT_NAME
  6. PYTHON=$VIRTUALENV_DIR/bin/python
  7. PIP=$VIRTUALENV_DIR/bin/pip
  8. # Virtualenv setup for project
  9. su - $DEV_USER -c "virtualenv --python=python3 $VIRTUALENV_DIR"
  10. # Replace previous line with this if you are using Python 2
  11. # su - $DEV_USER -c "virtualenv --python=python2 $VIRTUALENV_DIR"
  12. su - $DEV_USER -c "echo $PROJECT_DIR > $VIRTUALENV_DIR/.project"
  13. # Upgrade PIP
  14. su - $DEV_USER -c "$PIP install --upgrade pip"
  15. # Install PIP requirements
  16. su - $DEV_USER -c "cd $PROJECT_DIR && $PIP install -r requirements/base.txt"
  17. # Set execute permissions on manage.py as they get lost if we build from a zip file
  18. chmod a+x $PROJECT_DIR/manage.py
  19. # copy local settings file
  20. cp $PROJECT_DIR/bakerydemo/settings/local.py.example $PROJECT_DIR/bakerydemo/settings/local.py
  21. # add .env file for django-dotenv environment variable definitions
  22. echo DJANGO_SETTINGS_MODULE=$PROJECT_NAME.settings.local > $PROJECT_DIR/.env
  23. if [ -n "$USE_POSTGRESQL" ]
  24. then
  25. su - $DEV_USER -c "createdb $PROJECT_NAME"
  26. su - $DEV_USER -c "$PIP install \"psycopg2-binary>=2.7,<3\""
  27. cat << EOF >> $PROJECT_DIR/bakerydemo/settings/local.py
  28. DATABASES = {
  29. 'default': {
  30. 'ENGINE': 'django.db.backends.postgresql',
  31. 'NAME': '$PROJECT_NAME',
  32. }
  33. }
  34. EOF
  35. fi
  36. # Run syncdb/migrate/load_initial_data/update_index
  37. su - $DEV_USER -c "$PYTHON $PROJECT_DIR/manage.py migrate --noinput && \
  38. $PYTHON $PROJECT_DIR/manage.py load_initial_data && \
  39. $PYTHON $PROJECT_DIR/manage.py update_index"
  40. # Add a couple of aliases to manage.py into .bashrc
  41. cat << EOF >> /home/$DEV_USER/.bashrc
  42. export PYTHONPATH=$PROJECT_DIR
  43. alias dj="./manage.py"
  44. alias djrun="dj runserver 0.0.0.0:8000"
  45. source $VIRTUALENV_DIR/bin/activate
  46. export PS1="[$PROJECT_NAME \W]\\$ "
  47. cd $PROJECT_DIR
  48. EOF