From 97ade1f2e303b7119331e40620e1735c92c695b8 Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Tue, 6 Dec 2022 15:23:58 -0500 Subject: [PATCH] README --- README.md | 31 +++++++++++++++++++++++++++++++ contrib/goathacks.ini | 15 +++++++++++++++ contrib/goathacks.service | 15 +++++++++++++++ contrib/goathacks.socket | 11 +++++++++++ 4 files changed, 72 insertions(+) create mode 100644 README.md create mode 100644 contrib/goathacks.ini create mode 100644 contrib/goathacks.service create mode 100644 contrib/goathacks.socket diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2538f2 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# GoatHacks Registration Management + +This is a rewrite of the original (commit 198f56f2c47831c2f8c192fbb45a47f7b1fb4e5b) +management system for Flask 2.1 and Postgres. The focus was on maintainability +in the future and easy modifications for future years. + +## Setting up a development environment +The `Makefile` should have a bunch of useful recipes for you. Once you clone the +repo for the first time, run `make init_env`, which will set up the virtual +environment for development. If the dependencies ever change, you can run `make +upgrade_env` to install the new packages. + +To test your code, run `make daemon`, which will start a development server. It +will automatically reload after your changes. + +## Setting up for production + +You can use your choice of WSGI server. Instructions are provided below for +uWSGI. Please ensure a current (3.x) version of Python and Pip. + +1. pip install uwsgi # or the equivalent for your distribution's package manager +2. mkdir -p /etc/uwsgi/apps-available +3. mkdir -p /var/log/uwsgi +4. sudo chown -R nginx:nginx /var/log/uwsgi +5. mkdir -p /var/app +6. git clone https://github.com/WPI-ACM/Hack-WPI-Python /var/app/goathacks +7. cd /var/app/goathacks && make init_env +8. cp /var/app/goathacks/contrib/goathacks.ini /etc/uwsgi/apps-available/goathacks.ini +9. cp /var/app/goathacks/contrib/goathacks.service /etc/systemd/system/goathacks.service +10. cp /var/app/goathacks/goathacks/config.py.example /var/app/goathacks/goathacks/config.py +11. $EDITOR /var/app/goathacks/goathacks/config.py diff --git a/contrib/goathacks.ini b/contrib/goathacks.ini new file mode 100644 index 0000000..a651e93 --- /dev/null +++ b/contrib/goathacks.ini @@ -0,0 +1,15 @@ +[uwsgi] +base = /var/app/goathacks +wsgi-file = %(base)/goathacks.py +home = %(base)/.venv +pythonpath = %(base) + +socket = %(base)/%n.sock +chmod-socket=666 + +callable=app + +logto = /var/log/uwsgi/%n.log +touch-reload = %(base/.uwsgi-touch + +max-requests=1000 diff --git a/contrib/goathacks.service b/contrib/goathacks.service new file mode 100644 index 0000000..2535df3 --- /dev/null +++ b/contrib/goathacks.service @@ -0,0 +1,15 @@ +[Unit] +Description=%i uWSGI app +After=syslog.target + +[Service] +ExecStart=/usr/bin/uwsgi \ + --ini /etc/uwsgi/apps-available/%i.ini \ + --socket /var/run/uwsgi/%i.socket +User=www-data +Group=www-data +Restart=on-failure +KillSignal=SIGQUIT +Type=notify +StandardError=syslog +NotifyAccess=all diff --git a/contrib/goathacks.socket b/contrib/goathacks.socket new file mode 100644 index 0000000..65aff27 --- /dev/null +++ b/contrib/goathacks.socket @@ -0,0 +1,11 @@ +[Unit] +Description=Socket for uWSGI app %i + +[Socket] +ListenStream=/var/run/uwsgi/%i.socket +SocketUser=www-data +SocketGroup=www-data +SocketMode=0660 + +[Install] +WantedBy=sockets.target