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-devNow 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-migrateYou can launch the development server on http://localhost:8000 with:
make runYou 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 buildRun it with:
docker run --rm -it --env-file .env -p 8000:8000 woolly-api:devYou 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 --deployGenerate all static files with:
pipenv run python manage.py collectstaticRead 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 apache2In 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 apache2You 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:8444Here 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 notesDon'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