Narzędzia do wspomagania pracy zespołowej.
Poniższe wdrożenie testowano na maszynie z systemem Linux Debian 10 z dostępem przez SSH lub terminal.
Aplikacja będzie zainstalowana pod użytkownikiem teamkit
w katalogu
/home/teamkit/teamkit-server
. Jeśli planujesz instalować aplikację w innym miejscu, konieczne będzie zamienianie wszystkich ścieżek ręcznie.
Zacząć warto od upewnienia się, że system jest aktualny:
apt-get update
apt-get upgrade
TeamKit opiera się o następujące oprogramowanie:
Wymagane składniki można zainstalować poleceniem:
sudo apt-get install rsync vim postgresql libpq-dev\
git gcc python3-venv python3-dev redis-server\
supervisor nginx make
sudo systemctl enable nginx
sudo systemctl enable supervisor
sudo systemctl enable redis
sudo systemctl enable postgresql
Następnie należy stworzyć użytkownika TeamKit:
useradd -m -U teamkit
passwd teamkit
createuser -P teamkit
createdb -E utf8 teamkit -O teamkit
Zaloguj się jako użytkownik teamkit
.
Zakładając, że editor
jest symlinkiem do vima, emacsa or nano:
# jako użytkownik teamkit
mkdir teamkit-server
cd ~/teamkit-server
# pliki konfiguracyjne i katalogi
make config
make deployconfig
mkdir -p teamkit/logs
# python
python3 -m venv env
env/bin/pip install wheel
env/bin/pip install -r requirements/dist.txt
env/bin/python manage.dist.py migrate
Alternatywnie, skopiuj teamkit/settings/email.py.base
do
teamkit/settings/email.py
, oraz teamkit/settings/db.py.base
do
teamkit/settings/db.py
, zmodyfikuj je zgodnie ze stworzoną
przez Ciebie bazą danych, a następnie wykonaj dalsze polecenia.
Należy zedytować plik bin/daphne.base
do pliku bin/daphne
, ustawiając odpowiednie ścieżki.
Przykład:
#!/bin/bash
NAME="teamkit"
DJANGODIR="/home/teamkit/teamkit-server"
USER=teamkit
GROUP=teamkit
SOCKFILE=$DJANGODIR"/run/daphne.sock"
DJANGO_SETTINGS_MODULE="teamkit.settings.dist"
DJANGO_ASGI_MODULE="teamkit.asgi"
cd $DJANGODIR
source env/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
exec daphne -u $SOCKFILE ${DJANGO_ASGI_MODULE}:application \
--access-log - --proxy-headers
Następnie należy ustawić flagę wykonywalną na tym pliku.
chmod +x bin/daphne
Do /etc/nginx/sites-available
należy dodać nowy wpis, np. teamkit.mojadomena.pl
.
upstream gunicorn_teamkitdaphne {
server unix:/home/teamkit/teamkit-server/run/daphne.sock fail_timeout=0;
}
server {
listen 80;
listen [::]:80;
server_name teamkit.mojadomena.pl;
# logging
access_log /var/log/nginx/teamkit.tools-access.log;
error_log /var/log/nginx/teamkit.tools-error.log;
location /static/ {
alias /home/teamkit/teamkit-server/teamkit/static/dist/;
}
location /uploads/ {
alias /home/teamkit/teamkit-server/teamkit/uploads/;
}
location ~ /ws/$ {
proxy_pass http://gunicorn_teamkitdaphne;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect off;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
proxy_pass http://gunicorn_teamkitdaphne;
break;
}
}
Jeśli planujesz dodanie certyfikatu SSL np. przez LetsEncrypt, w powyższej konfiguracji trzeba zmienić X-Forwarded-Proto
na https
.
W przeciwnym wypadku, w teamkit/settings/dist.py
ustaw:
FORCE_HTTP_FOR_WEBSOCKETS = True
W katalogu /etc/supervisor/conf.d/teamkit.conf
umieść:
[program:teamkit]
command = /home/teamkit/teamkit-server/bin/daphne
user = teamkit
stdout_logfile = /home/teamkit/teamkit-server/teamkit/logs/daphne_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
autostart=true
autorestart=true
supervisorctl reread
supervisorctl update
Do /etc/cron.daily/
dodaj wykonywalny plik expired-toolstates
:
sudo -u teamkit /home/teamkit/teamkit-server/env/bin/python /home/teamkit/teamkit-server/manage.dist.py remove_expired_toolstates
Ten skrypt odpowiada za regularne usuwanie narzędzi z ustawionym terminem usunięcia.
Na sam koniec wykonaj następujące polecenia.
service supervisor restart
service nginx restart
Strona TeamKit powinna być już dostępna pod domeną teamkit.mojadomena.pl
TeamKit korzysta z webpack+SASS+Vue.js. Do zarządzania wersjami najlepiej używać nvm.
Po zainstalowaniu nvma, użyj poniższej komendy, aby zainstalować środowisko Node 10.x
nvm install 10
Następnie włącz je dla developmentu.
$ nvm use 10
Now using node v10.10.0 (npm v6.4.1)
python3 -m venv env
source env/bin/activate
pip install -r requirements/local.txt // lub requirements/dist.txt dla środowiska produkcyjnego
npm install
npm run watch // albo npm run build dla jednorazowej kompilacji
Aby zbudować produkcyjne assety, użyj polecenia:
npm run build-dist
Zakładając, że editor
jest symlinkiem do vima, emacsa or nano:
make config
./manage.py migrate
./manage.py createsuperuser
./manage.py runserver
Alternatywnie, skopiuj teamkit/settings/db.py.base
do
teamkit/settings/db.py
i zmodyfikuj je zgodnie ze stworzoną
przez Ciebie bazą danych, a następnie wykonaj dalsze polecenia.