Göm menyn

TDP003 Projekt: Egna datormiljön

Openshift


Uppladdning på OpenShift utgår

I och med att skolans OpenShift för närvarande håller på att uppgraderas och därmed inte fungerar för närvarande utgår OpenShift-momentet i år. Vi återkommer till det i TDP005, när OpenShift förhoppningsvis fungerar som det ska igen.

Om ni vill testa att lägga upp portfolion "på riktigt" kan ni logga in via ThinLinc och köra portfolion där. När ni har loggat in, titta i terminalen vad datorn ni har hamnat på heter (exempelvis parlomba2). Ni kommer sedan åt er sida med addressen http://parlombaN.ida.liu.se:5000/ (byt ut N mot den parlomba-dator ni hamnade på). Eftersom många använder samma dator är det inte säkert att ni kan använda port 5000. För att ändra port kan ni lägga till flaggan --port NNNN till flask run eller lägga till parametern port=NNNN i anropet till app.run(). Notera att portar med nummer lägre än ungefär 1000 är reserverade av systemet, och kan bara användas av root, så välj ett högt portnummer!

Att få portfolion på webben.

För att få igång er portfolio så att den ligger igång "permanent" måste ni följa dessa enkla steg:

OBS: Ersätt liu-id med ert egna LiU-användarnamn i kommandona nedan!

  • Kör kommandot
    sudo apt install rhc
    om det inte fungerar så testa med
    sudo gem install rhc
    Om det inte heller fungerar så peta på en assistent eller maila!
  • Kör kommandot
    rhc setup -l liu-id --server openshift.ida.liu.se

    Välj 'yes' och använd lösenordet till ditt liu-id, samt använd ditt liu-id som namespace. Huruvida du vill lagra lösenordet i ett token eller ej är upp till dig, då slipper man skriva in sitt lösenord flera gånger senare. Dock kan det vara bra att komma ihåg att köra rhc logout om någon annan ska låna datorn senare. Svara 'yes' på frågan om ssh pubkey.

  • Kör kommandot:
    rhc create-app portfolio python-3.3
    det kan vara så att den frågar om du vill acceptera den nyckel som servern visar, svara 'yes'.
  • Kör kommandot
    cd portfolio
  • Lägg till följande i setup.py:
    install_requires=['Flask'],
    sist, innan sista slutparentesen.
  • Adda, commita, pusha:
    git add -u ./
    git commit -m "Add Flask as dependency"
    git push origin master
  • Kör kommandot
    rhc show-app portfolio

    Hitta URL:en till er portfolio i utskriften och öppna den i en webbläsare. Kommer ni in på något som ser ut som en testsida så är det bra!

  • Nu är det dags att flytta in er kod för portfolion. Kör följande kommando, där ni byter ut repo-path mot var på gitlab ert eget repository ligger:
    git remote add gitlab git@repo-path
    repo-path skulle kunna vara gitlab.ida.liu.se:antsu07/mitt-fina-portfolioprojekt.git
  • Nu har ni lagt till en extra remote som ni kan hämta hem kod ifrån också, vi gör det:
    git pull gitlab master
    Det kan vara så att ni får en merge konflikt nu, om ni är osäkra på hur ni ska lösa den så hugg tag i en assistent.
  • Ändra innehållet i wsgi.py så att det ser ut som det står nedan eller som i följande länk: wsgi.py. Du kan behöva ändra raderna längst ner så att scriptet importerar från rätt fil för just er portfolio. (Om du döpt server.py till hatt.py så behöver du skriva: from hatt import app as application) Se till så att server.py/hatt.py och wsgi.py ligger i rooten för ert repo.
    Har ni inte skrivit app = Flask(__name__) i er server.py utan kanske hest = Flask(__name__) så behöver ni istället ändra i wsgi.py så att det blir: from server import hest as application
  • Nu kan vi commita och pusha de ändringar vi gjort och hålla tummarna!
    git add .
    kan behöva ändras för att matcha era filer, det är bra att ha med en .gitignore här också.
    git add .
    git commit -m "Import portfolio and update wsgi"
    git push origin master
    Testa att ladda om sidan igen efter dessa kommandon.
  • Om det verkar fungera så grattis! Du har nu lagt upp din portfolio för världen att beskåda!
  • Om det gick bra är det dags att att få momentet godkänt, skicka ett mail till Filip Strömbäck med ämnesrad: TDP003: Openshiftinlämning och skicka med en länk till er portfolio. Inom någon/några dagar borde ni ha fått detta infört i Webreg, om inte så hör av er!
  • Om det inte fungerar och du får något intressant felmeddelande från servern så kan följande vara en bra början på felsökningen: Öppna en ny terminal och kör kommandot rhc tail portfolio. Detta kommer visa en log av det senaste som webservern har gjort/rapporterat om, där brukar även felmeddelanden dyka upp om något gått galet. När ni gör uppdateringar av hemsidan kan det vara bra att ha den här körandes i bakgrunden så att ni kan ha kontinuerlig koll på vad som händer.
  • Det kan vara så att ni behöver uppdatera er kod så att den använder sig av openshift-variablerna som anger var ni ska lagra er data och var er kod ligger. Oftast brukar detta inte behövas.

Vanliga problem/konstigheter och lite tips

  • I vanliga fall kanske er server.py har följande i slutet av sig:
    app.run()
    Se i så fall till att ändra detta till:
    if __name__ == "__main__":
        app.run()
    Då kan ni köra samma kod både lokalt när ni utvecklar och på openshift servern. När ni vill testa lokalt på er egen dator behöver ni bara köra programmet som vanligt, dvs:
    python server.py
    Openshift kommer också att lyckas starta det med hjälp av wsgi.py som ni skapade tidigare, supersmidigt!
  • Kom ihåg att ni nu har 2 repos som ni kan pusha till, det ena heter gitlab och det andra heter origin. Det kan vara bra att döpa om origin till openshift för att komma ihåg att kod ni pushar dit hamnar live för alla att se. Det kan man göra på följande sätt:
    git remote rename origin openshift
    git remote rename gitlab origin
    Vi passar även på att döpa om gitlab till origin så att vi inte behöver komma ihåg det "vanliga" namnet.
  • Ett potentiellt problem är att teckenkodningen på openshift-systemet kan skilja sig från det ni har lokalt. Ni kan behöva ange hur filerna är teckenkodade när ni öppnar dom, t.ex. med
    open(filename, encoding='utf-8')
    Det brukar behövas i data.py bland annat, när er JSON-data laddas in.

wsgi.py

#!/usr/bin/python3
import os

virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    with open(virtualenv) as f:
        code = compile(f.read(), virtualenv, 'exec')
        exec(code, global_vars, local_vars)
except IOError:
     pass
#
# IMPORTANT: Put any additional includes below this line.  If placed above this
# line, it's possible required libraries won't be in your searchable path
#

import os
os.chdir(os.environ['OPENSHIFT_REPO_DIR'])

from server import app as application


Sidansvarig: Emma Enocksson Svensson
Senast uppdaterad: 2022-08-25