- Shortify one userspace
- tify your way
- Shortify valid urls using sliced md5 hash
tify.one/hashshortified url to redirecttify.oneredirects toapp.tify.onebad hashshows404pageapp.tify.oneto access the home page and full functionalityblog.tify.oneto access the bloghelp.tify.oneuser.tify.onethe user space shotified profile and urls i.e.user.tify.one/biofor general profile oruser.tify.one/igfor specific custom links
- Development environment with Docker and Docker Compose
- Namecheap
- DigitalOcean
- ssl Certbot
- ssh
- datadog
- nginx
docker build -t sh-py:1.0 .
docker run -d -it --rm -p 8000:8000 --name sh-py-0 -v /home/ralex/code/shortener:/code sh-py:1.0docker exec -it sh-py-0 shpython manage.py runserver 0.0.0.0:8000
python manage.py makemigrationspython manage.py migratepython manage.py runserver 0.0.0.0:8000
python manage.py createsuperuseradmin.tify.one
- add to
settings.pythe Schema for for all objects types
GRAPHENE = {
'SCHEMA': 'shortener.schema.schema'
}- using
md5fromhashlib
mutation {
createUrl(urlFull:"https://ralex.me") {
url {
id
urlFull
urlHash
visits
dateCreated
}
}
}
query {
urls{
id
urlFull
urlHash
visits
dateCreated
__typename
}
}
docker compose up -d --build- if fails
docker compose down -vdocker compose exec web python manage.py migrate --noinputdocker compose exec web python manage.py migratedocker compose exec db psql --username=postgres --dbname=postgres_devdocker volume inspect tifyone_postgres_datachmod +x entrypoint.sh
-
docker compose -f docker-compose.prod.yaml up -d --build -
docker compose -f docker-compose.prod.yaml down -v -
docker compose -f docker-compose.prod.yaml up -d --build -
docker compose -f docker-compose.prod.yaml exec web python manage.py migrate --noinput -
docker compose logs -f -
docker compose exec web python manage.py flush --no-input -
docker compose exec web python manage.py migrate
-
docker compose -f docker-compose.prod.yaml up -d --build -
docker compose -f docker-compose.prod.yaml exec web python manage.py migrate --noinput -
docker compose -f docker-compose.prod.yaml down -v -
docker compose -f docker-compose.prod.yaml up -d --build -
docker compose -f docker-compose.prod.yaml exec web python manage.py migrate --noinput
manage.py migrate manage.py collectstatic --no-input
upstream web_server {
# docker will automatically resolve this to the correct address
# because we use the same name as the service: "web"
server web:8000;
}
# declare main server NGINX
server {
listen 80;
server_name localhost;
location / {
# everything is passed to Gunicorn
proxy_pass http://web_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
alias /usr/src/code/static/;
}
location /media/ {
alias /usr/src/code/media/;
}
}- Kubernetes cluster
- kubectl
- domain name
- ingres-nginx
- DNS record A
- storage object
- Django app
- Postgres database
- Docker hub
- Docker engine
- create ssh key pair
- `ssh-keygen -t rsa -b 4096"