Andrise programmeerimisalane WIKI
app.yaml kasutamine
Ülesehitus
Kõige olulisem fail mis määrab ära aplikatsiooni tegevuse, on app.yaml - selles failis on kirjas kõik tegevused, mida server mingile päringule vastab. Näiteks kui avatakse aadress domeen.appspot.com/abitekst, siis app.yaml teab, et /abitekst päringu peale tuleb käivitada fail abi.py, kui aga tuleb päring /tellimused, siis hoopis main.py.
Samuti on selles failis ära määratud aplikatsiooni versiooninumber (samast aplikatsioonist saab eksisteerida korraga mitu versiooni ning aplikatsiooni admin liidesest saab määrata, milline versioon on parasjagu aktiivne), käivituskeskkonna andmed (hetkel konstantsed) ning loomulikult aplikatsiooni ID.
app.yaml, nagu faililaiendki määrab, on vormistatud YAML formaadis. See kujutab endast inimloetavat konfiguratsiooniteksti, kus andmed on vastavalt kontekstile trepitud. Näiterakenduse app.yaml sisu on järgmine:
application: myapp version: 1 runtime: python api_version: 1 handlers: - url: .* script: main.py
Vaatame rida haaval üle, mis mida tähendab.
application: myapp
Antud deklaratsioon paneb paika aplikatsiooni ID. Nagu öeldud, peab see olema unikaalne, koosnema vaid ladina tähtedest, numbritest ning sidekriipsust. Kui aplikatsiooni üles laadida, siis serveris vaadatakse just antud muutuja järgi, et kuhu failid kopeeritakse.
version: 1
See rida tähistab aplikatsiooni versiooni. Väärtus saab sarnaselt ID väärtusele sisaldada vaid ladina tähti, numbreid ja sidekriipsu. Juhul kui seda väärtust muuta, luuakse serveris aplikatsioonist uus versioon. Uus versioon ei muutu automaatselt aktiivseks, vaid see tuleb ise admin liidese abil aktiivseks seada.
Aktiivset versiooni saab suvalisel hetkel ümber tõsta, valides selleks mõne varasema või uuema versiooni, mis serverisse laetud on. Kasulik on see juhul, kui uus versioon osutub näiteks liiga ebakindlaks. Sellisel juhul saab ajutiselt vanema versiooni taastada ning uue versiooni kallal veel veidi tööd teha.
Kõiki olemasolevaid versioone saab vaadata veebis aadressilt kujul versiooni_nr.latest.app_id.appspot.com
runtime: python
See rida märgib ära kasutatava programmeerimiskeele. Hetkel saab selleks määrata ainult väärtuse python, sest kuigi GAE võimaldab kasutada ka programmeermiskeelt Java, on sealne konfiguratsioonimeetod veidi teine ning app.yaml faili ei ole.
api_version: 1
See rida tähistab käivituskeskkonna versiooni, milleks momendil on „1“
handlers:
Antud rida määrab ära, et edasi on defineeritud päringute haldajad. URL'i päringu osa võrreldakse etteantud mustrile ja vastavuse korral tagastatakse määratud fail (kas siis staatiline fail või käivitatav programm).
- url: .*
Päringutingimuseks on, et päring peab vastama regulaaravaldisele .* - kuna .* tähistab suvalist stringi, siis lähevad selle tingimuse alla kõik päringud.
script: main.py
Eelnenud tingimusele vastanud päring edastatakse programmile main.py.
Päringutingimused käivad järjekorras ülevalt alla. Seega kui esimeseks tingimuseks on .* millele vastavad kõik päringud, siis sellest enam edasi ei vaadata. Kui aga on soov siiski täiendavaid kitsamaid tingimusi märkida, tuleks need teha enne .* tingimust näiteks nii:
handlers: - url: /abi script: abi.py - url: .* script: main.py
Sellisel juhul proovitakse kõigepealt tingimust /abi, millele vastabki ainult aadress /abi ning alles siis kui päring sellele siiski ei vasta, antakse järjekord üle kontrolltingimusele .*
Juhul kui päringule peaks vastama kindel staatiline fail, tuleks tingimus vormistada järgnevalt:
- url: /favicon.ico static_files: static/images/favicon.ico upload: static/images/favicon.ico
See tingimus määrab ära, et favicon.ico pärimisele peaks vastama staatiline fail kataloogist static/images/favicon.ico
Kui aga on soov defineerida terve kataloogitäis staatilisi faile, saab seda teha nii:
- url: /images static_dir: static/images
Peale seda suunatakse kõik päringud kujuga /images/*.* (näiteks /images/logo.jpg) edasi kataloogi static/images, kust otsitakse siis faili *.* (näite puhul siis logo.jpg) ning kui seda ei leita, tagastatakse veateade 404.
HTTP vs. HTTPS
Iga päringutingimuse juures on võimalik määrata ära, kas seda päringut teostatakse üle tavalise HTTP ühenduse või turvalise HTTPS ühenduse. Vaikimisi on mõlemad ühendused lubatud, kuid on võimalik määrata ühene valik. HTTPS ühendus on võimalik ainult app_id.appspot.com domeenide korral - juhul kui teenus on seotud oma domeeniga (vaatad aplikatsiooni aadressilt www.app_id.ee, mitte app_id.appspot.com), siis sellisel juhul on võimalik kasutada vaid HTTP protokolli.
HTTPS ühendus kasutab korrektset Google poolt allkirjastatud sertifikaati, mis kaasneb teenusega täiesti tasuta, seega ise vastavat sertifikaati kuskilt osta pole vaja.
- url: .* script: main.py secure: always
Antud näites määrab secure:always, et HTTPS protokoll on alati kasutusel - juhul kui üritatakse avada veebilehte üle HTTP protokolli, suunatakse see HTTPS ühenduse peale ümber. secure parameetril saab olla kolm võimalikku väärtust:
- always - alati kasutatakse HTTPS ühendust
- never - alati kasutatakse HTTP ühendust
- optional (vaikimisi) - lubatud on mõlemad ühendused
Kuna HTTPS on oma olemuselt ressursimahukam (lisandub täiendav CPU kulu krüpteerimise jaoks), siis tasub seda kasutada vaid selge vajaduse korral. Lihtsalt niisama - igaks juhuks - seda peale panna pole mõtet.
Kohustuslik sisselogimine
Täiendavalt on veel võimalik nõuda päringu teostamisel ka kasutaja sisselogimist. Kui sisselogimine on nõutav, siis päringu sooritamisel suunatakse kasutaja automaatselt sisselogimisvormi juurde (kasutades Google Konto süsteemi) juhul kui kasutaja pole juba sisse logitud. Nii on mugav panna mõningatele aadressidele, mida tavavaataja näha ei tohi, turvaline sisselogimise nõue.
Sisselogimise tasemeid on 3. Esiteks avalik tase - sellisel juhul pole vaja login tingimust päringule lisada. Teiseks on tavakasutaja sisselogimise tase - nõutav on sisselogimine, olenevalt siis aplikatsiooni seadetest kas suvaline Google Konto kasutaja või kindla domeeniga Google Apps kasutaja. Viimane, kõige rangem tase lubab sisse logida vaid aplikatsiooni administraatoritel.
- url: .* script: main.py login: required
Parameetri login väärtus võib seega olla
- required - sobib iga sisseloginud kasutaja (vastavalt aplikatsiooni seadetele)
- admin - sobivad ainult aplikatsiooni administraatorid
Juhul kui sisselogimine pole nõutav, siis tuleb login parameeter ära jätta. Aplikatsiooni administraatoreid saab määrata aplikatsiooni administreerimise lehel (selle avab SDK graafilise liidese nupp „Dashboard“) „Developers“ alamlehelt. Aplikatsiooni looja on automaatselt ka aplikatsiooni administraator.