GirlsGoIT Wiki (ro)
RU
  • Introducere
  • Unelte
    • Slack
    • Visual Studio Code
    • CodeSandbox
      • Cum rezolvi un task la proiect
      • Cum rezolvi un exercițiu
    • GitHub
  • FRONTEND STATIC
    • Internet
    • HTML
    • CSS
    • Exerciții
      • Erontend Static Exercitii
  • FRONTEND DINAMIC
    • JavaScript
      • Introducere
      • Consola Browser'ului
      • Variabile
      • Tipuri de date
      • Operatori
      • JavaScript & HTML
      • Funcții
      • DOM & Window API
      • Math API
      • Condiționale (if)
      • Cicluri (for & while)
    • Vue.js
      • Componente Vue
      • Componente & Forme
      • Lifecycle hooks
      • Comunicare între componente
      • Vue Router
      • Axios
      • Instalare locală
    • Exercitii
    • Rest API
      • Rest api GET
      • Rest api GET one
      • Rest api POST
      • Rest api PUT
      • Rest api DELETE
  • PYTHON
    • Introducere
    • Variabile
    • Tipuri de Date
    • Operatori
    • Control Flow
    • Liste
    • Cicluri for
    • Funcții
    • Dictionare
    • Seturi
    • Fișiere
    • Try-except-finally. Lambda
    • Librării, module
    • Exercitii
      • Variabile
      • TIpuri de Date
      • Operatori
      • If...else
      • Liste
      • Cicluri for
      • Funcții
      • Dicționare
      • Seturi
      • Fișiere
      • Try-except, Lambda
      • Librării , module
      • ✨Mai multe exerciții ✨
    • Python Archiva
  • BACKEND
    • Instalare Python
    • Python OOP
    • Baze de date
    • Django
    • REST API's
    • Django REST Framework
    • Exerciții
      • Python OOP
      • Django
      • Django Rest Framework
  • Data Science
    • Introducere în Data Science
    • Vizualizarea datelor
      • Matplotlib
    • Numpy
    • Pandas
    • DecisionTrees
  • 3D Printing
    • Intro
    • Fusion 360 Intro
    • Sketch
    • Solid body
    • Arduino
    • Final Projects
  • ARHIVA
    • Milligram
    • Drone
      • Intro
    • Old Backend
      • Bootstrap
      • Hello Flask
      • DB Modeling
      • Ubuntu Quest
      • Baze de date
      • Heroku Deploy
    • Robotica NAO
      • Finalizarea proiectelor
      • Flow Control
      • Cum creez un Dialog box
      • Convenția GirlsGoIT Robotics Choregraphe
      • Tracker
      • Dialog - QiChat
    • Robotica
      • 1.1 mBlock
      • 1.2 Descărcarea, instalarea și conectarea
      • 1.3 Execută un program de pe mBlock IDE sau încarcă pe Board
      • 1.4 Conectarea prin USB, Bluetooth sau 2.4GHz
      • 2.1 Programe Simple
      • 2.2 Senzori
      • 2.3 Exerciții avansate - Scratch
      • 3.0.1 Instalare Arduino IDE
      • 3.0.2 Instalare Arduino IDE WEB
      • 3.1 Configurare Arduino IDE
      • 3.2 Introducere în limbajul C
      • 3.3 Exemple Arduino - mBot
      • 3.4 Line follow - Arduino
      • 3.5 Ultimate robot
      • 4.1 Planificarea și managementul proiectelor
      • Custom robot
      • Noțiuni și explicații
      • Delay fara sa opreasca programul
      • Alte resurse și exemple
Powered by GitBook
On this page
  • Cuvinte cheie:
  • Ce este deployment?
  • Hosting
  • Heroku Deployment
  • Procfile
  1. ARHIVA
  2. Old Backend

Heroku Deploy

PreviousBaze de dateNextRobotica NAO

Last updated 7 years ago

Cuvinte cheie:

  • mediu de rulare (environment)

  • rulare (running)

  • configurare

  • repository

Ce este deployment?

Deployment este procesul ce include instalarea, configurarea, rularea si testarea unui produs software, ce are ca scop rularea propriu-zisa a produsului nou in mediul lui de rulare.

Hosting

Serviciul de hosting este un serviciu care ruleaza servere in internet, ce ofera posibilitatea de a face serviciile lor accesibile in internet. Cel mai comun tip de hosting este web hosting care permite rularea website-urilor si accesul lor de catre utilizatori.

Sunt mai multe companii care ofera servicii de hosting, si mai multe tipuri de servicii de a face website-urile accesibile. De exemplu, sunt servicii care ofera doar spatiu de memorie pentru website, altele care ofera un server cu memorie, altele care ofera infrastructura care are ofera un mediu gata pentru deployment, direct, si cateva servicii de configurare.

Heroku Deployment

Heroku este un serviciu care ofera un mediu prestabilit, si este gratis pentru utilizatorii care au cel mult 5 aplicatii web. Pentru a folosi acest serviciu este nevoie de a te inregistra pe link-ul de

.

Deasemenea, este nevoie de instalat un program care sa ruleze la noi in calculator. Astfel, vom descarca Heroku Toolbelt de pe acest

Dupa ce am descarcat fisierul executabil de pe website, il rulam si instalam ca pe un program obisnuit pe windows. Un exemplu de cum ar trebui sa arate este in imaginea urmatoare:

Dupa ce am instalat Heroku Toolbelt, cautam cmd in comanda start de la windows si alegem pe cea care spune "Command Line with Ruby" Inainte de toate trebuie de instalat cateva pachete care ne vor ajuta sa facem deployment la aplicatie. In proiectul nostru scrim comenzile pe rand:

pip install gunicorn
pip install whitenoise

Dupa care scrim comanda:

heroku login

Trebuie sa ne apara urmatoarele afirmatii:

Enter your Heroku credentials.
Email:

Introducem email-ul cu care ne-am inregistrat pe website, mai intai. Apoi introducem parola cand apare cuvantul "password". E important de tras atentie la faptul ca nimic nu va fi afisat in linia de comanda in timp ce introduceti parola.

Iar acum vom lucra la procesul propriu-zis de deployment. Primul lucru inainte de a face deployment la proiect este de a crea un fisier requirements.txt, pe care serviciul heroku il va utiliza pentru a instala toate pachetele utilizate pentru rularea websiteului nostru cum ar fi Django, gunicorn si whitenoise in cazul nostru. Deci, fiind in directoria(mapa) proiectului nostru scrim comanda:

pip freeze > requirements.txt

Deasemenea, este nevoie de un fisier care va indica care versiune de python va fi folosita. La fel in directoria proiectului cream un fisier nou runtime.txt si introducem in felul urmator versiunea de python pe care e scris proiectul nostru.

python-3.5.1

Procfile

Procfile este un fisier de tip text care, ca si celelalte, se afla in directoria principala a proiectului, ce defineste tipurile de procese si declara explicit ce comenzi trebuie executate pentru a rula aplicatia noastra pe server. Asadar cream un fisier "Procfile", si scrim in felul urmator:

web: gunicorn schoolproject.wsgi:application --log-file -

Deasemenea, mai avem de facut cateva configurari, pentru a face deploymentul fara erori. Astfel in fisierul "schoolproject/schoolproject/settings.py" adaugam urmatoarele linii de cod:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Si in fisierul "schoolproject/schoolproject/wsgi.py" adaugam 2 linii de cod astfel incat fisierul sa arate astfel:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rtscheduler.settings")

from whitenoise.django import DjangoWhiteNoise

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

Si mai este nevoie de a crea o directorie pentru a asigura utilizarea fisierelor statice asa ca imaginile, fisierele .css si .javascript. Asadar, dupa exemplul de mai jos creati fisierele ca in imaginea urmatoare:

Pentru a face posibil deployment-ul a mai multe versiuni, iterativ a websiteului este nevoie de utilizat un sistem care sa aiba grija de versionarea codului in mod corect. Cel mai raspandit sistem de versiune in prezent este GIT. De aceea deployment-ul pe platforma heroku este utilizat GIT ca forma de actualizare a aplicatiei web.

Structura aplicatie voastre trebuie sa arate in felul urmator:

Astfel pentru a initia repositoria scrim in linia de comanda:

git init

Cream un fisier .gitignore in directoria principala a proiectului si in el scrim:

venv
*.pyc
staticfiles
.env

Dupa care scrim urmatoarele comenzi:

git add .
git commit -m "Initial commit"

Dupa care mai scrim inca o data comanda heroku login si ne logam.

Iar acum vom crea aplicatia noastra pe heroku cu urmatoarea comanda:

heroku create

Dupa care trimitem informatia websiteului pe serverul platformei Heroku:

git push heroku master

Dupa ce ati scris heroku create a aparut un text ce arata in felul urmator:

Creating intense-falls-9163... done, stack is cedar
http://intense-falls-9163.herokuapp.com/ | git@heroku.com:intense-falls-9163.git
Git remote heroku added

Dupa cum vedeti denumirea aplicatiei in heroku este creata automat si nu coincide cu denumirea care vrem sa o punem noi. Din aceasta cauza este nevoie de a o schimba. Noi o vom schimba cu urmatoarele comenzi, analogic scriind numele aplicatiei noastre in loc de "myschoolproject" si cu numele dat de heroku in linia de comanda proprie in loc de "intense-falls-9163":

heroku apps:rename girlsgoit --app intense-falls-9163

Dupa tot acest proces veti putea sa accesati websiteul vostru la adresa:

http://denumiresite.heroku.com

https://www.heroku.com/
https://toolbelt.heroku.com/windows
Install Heroku Toolbelt
Directoriu static in directoriu principal al proiectului
Structura aplicatiei