Woolly is the online shop of all the clubs of the Université de Technologie de Compiègne: https://assos.utc.fr/woolly/.
You will need to install:
Simply run the following commands to install all dependencies for deployment and development:
make init
make init-dev
Now copy example.env
to .env
and fill the secrets within.
Make sure the database you are using is set to UTF-8 with:
ALTER DATABASE woolly CHARACTER SET utf8;
Finally you need to migrate models into the database:
make db-migrate
You can launch the development server on http://localhost:8000 with:
make run
You can find the documentation of the API here.
If you are using Docker you can skip Installation and Development, but you will still need to copy and fill your .env
file.
Build the docker image with:
make build
Run it with:
docker run --rm -it --env-file .env -p 8000:8000 woolly-api:dev
You can run other commands with:
docker run --rm -it --env-file .env -p 8000:8000 woolly-api:dev <command>
If you have trouble accessing your database from the container, replace localhost
by host.docker.internal
in DATABASE_URL
.
For deployment it is easier to install the virtual environment in the same folder:
export PIPENV_VENV_IN_PROJECT="enabled"
pipenv install --deploy
Generate all static files with:
pipenv run python manage.py collectstatic
Read Django instructions here: https://docs.djangoproject.com/en/3.1/howto/deployment/
In the following configuration, /path_to_woolly
corresponds to the absolute file path to where you installed the Woolly API git repository and /url_to_woolly
to the base url where you want to deploy the API.
Add this to a Apache config file (like /etc/apache2/apache2.conf
):
Alias /url_to_woolly/static /path_to_woolly/static
<Directory /path_to_woolly/static>
Require all granted
</Directory>
Documentation: https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/modwsgi/
First, install mod_wsgi and restart apache:
sudo apt-get install libapache2-mod-wsgi-py3
sudo systemctl restart apache2
In the Apache config:
ServerName YOUR_SERVER_NAME
WSGIScriptAlias /url_to_woolly /path_to_woolly/woolly_api/wsgi.py
WSGIDaemonProcess woolly-api python-home=/path_to_woolly/.venv python-path=/path_to_woolly
WSGIProcessGroup woolly-api
WSGIPassAuthorization On
<Directory /path_to_woolly>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
And reload Apache configuration:
sudo systemctl reload apache2
You have to reload Apache each time you modify your application for the changes to be applied.
If you are running Djanog behind a reverse proxy you might need to add the following lines to your .env
:
RUN_THROUGH_PROXY=True
BASE_URL=/url_to_woolly
Then in the Apache config:
ProxyPreserveHost On
ProxyPassMatch ^/url_to_woolly/static !
ProxyPass /url_to_woolly http://localhost:8444
ProxyPassReverse /url_to_woolly http://localhost:8444
Here are some useful commands:
# Activate the pipenv environment
pipenv shell
# Run a interactive shell to interact with Woolly
python manage.py shell_plus
# Check the defined models
python manage.py inspectdb
# Check all TODOs, FIXME, ...
python manage.py notes
Don't forget to check the ./documentation/ folder for more documentation on Woolly.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details