sacovo / mportal

Django Applikation zur Mitgliederverwaltung. Mit SMS- und Mailversand, Mail-Tracking usw...

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

Diese Software dient der Mitgliederverwaltung der JUSO Schweiz.

What is this repository for?

In diesem Repository befindet sich der Sourcecode, der das Sektionsportal betreibt. Die Software darf gemäss der GPLv3 verbreitet, verwendet und verteilt werden.

Installation

Das Repository herunterladen und an einem beliebigen Ort entpacken.

Dann ein Virtualenvironment erzeugen und aktivieren, in dieses die benögiten PIP-Pakete installieren:

virtualenv env
source env/bin/activate
pip install -r requirements.txt

Dann im Unterordner mysite die Datei local_settings.py erstellen und notwendige Einstellungen vornehmen:

SECRET_KEY = ''

Ein geheimer Schlüssel.

STATIC_ROOT = '/var/www/static'
STATIC_URL = '/static/'

Der Ablageort für die Statischen Dateien, die von einem Webserver bereitgestellt werden und die URL, unter der die Dateien bereitgestellt werden.

MEDIA_ROOT = '/var/www/media'
MEDIA_URL = '/media/'

Der Ablageort für die Benutzer-Dateien, die von einem Webserver bereitgestellt werden und die URL, unter der die Dateien bereitgestellt werden.

ALLOWED_HOSTS = ['localhost', '172.0.0.1']

Die Addresse(n), unter der die Anwendung verfügbar sein soll.

Einstellungen für den Mail-Versand kommen ebenfalls in diese Datei.

Gewisse Aufgaben brauchen lange Zeit, diese werden vom Portal im Hintegrund ausgeführt, dafür müssen wir Redis und Celery installieren und einrichten. Redis kümmert sich um die Ausführung im Hintegrund, Celery ist die Verbindung zwischen Redis und dem Portal. Celery wurde bereits über pip installiert, wir benötigen nur noch Redis. Redis kann entweder über die Pakteveraltung oder direkt aus dem Source-Code installiert werden. Anleitungen dazu gibt es auf der Homepage von Redis. Redis kann entweder über einen TCP-Port kommunizieren oder über ein Socket-File, beides funktioniert mit dem Portal. Die Einstellungen dazu werden wiederum in der Datei local_settings.py getätigt und können z. B so aussehen:

CELERY_BROKER_URL = 'redis://localhost:6379'

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

CELERY_TASK_SERIALIZER = 'json'

CELERY_ACCEPT_CONTENT = ['json']

CELERY_RESULT_BACKEND = 'django-cache'

Fall Redis über ein Socket kommuniziert sieht der Anfang hingegen so aus:

CELERY_BROKER_URL = 'redis+socket://path/to/socket.sock'

Jetzt müssen Celery und Redis gestartet werden. Am besten funktioniert das mit Systemd oder ähnlich. Zu testzecken können celery und redis auch direkt im Terminal gestartet werden:

redis-server
celery worker -A mysite

Anleitungen zum einrichten von Celery finden sich auf der Projektseite.

Datenbank

Die Datenbankkonfiguration erfolgt gemäss dieser Anleitung wieder in der Datei local_settings.py. Als nächstes müssen die Datenbanktabellen eingerichet werden:

python manage.py migrate

Um auf die Anwendung zugreien zu können, müssen wir noch einen Admin-User einrichten:

python manage.py createsuperuser

Favicon

Das Favicon kann in der Datei mportal/templates/mportal/favicon.html geändert werden.

Server

Für die Verwendung in der Produktion brauchen wir einen Server, der die Applikation bereitstellt. Dazu eignet sich zum Beispiel Apache. Hinweise zur Einrichtung git es auf der Django-Website. Eine Konfiguration kann so aussehen:

WSGIProcessGroup portal
WSGIDaemonProcess portal python-home=PATH/mportal/env/ python-path=PATH/mportal/
WSGIScriptAlias / PATH/mportal/mysite/wsgi.py process-group=portal application-group=%{GLOBAL}

WSGIImportScript PATH/mportal/mysite/wsgi.py  process-group=portal application-group=%{GLOBAL}

<Directory PATH/mportal/mysite>
	<Files wsgi.py>
		Require all granted
	</Files>
</Directory>

Alias /media/ /var/www/media/
Alias /static/ /var/www/media/

Alias /.well-known/ /var/www/.well-known/
<Directory   /var/www/vhosts/.well-known>
	Require all granted
</Directory>

<Directory  /var/www/media>
	Require all granted
</Directory>

<Directory /var/www/static>
	Require all granted
</Directory>

Nachdem wir mit dem Befehl

python manage.py collectstatic

Alle statischen Dateien gesammelt haben, sollte die Anwendung unter dem eingerichteten Server verfügbar sein.

About

Django Applikation zur Mitgliederverwaltung. Mit SMS- und Mailversand, Mail-Tracking usw...

License:GNU General Public License v3.0


Languages

Language:Python 69.0%Language:HTML 23.0%Language:CSS 7.9%