sterretje-cluster:appcluster-hosting_python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sterretje-cluster:appcluster-hosting_python [2016/10/10 16:29] – aangemaakt matthiassterretje-cluster:appcluster-hosting_python [2026/05/27 14:01] (current) – external edit 127.0.0.1
Line 3: Line 3:
 Applicaties kunt u zelf plaatsen door ze op de upload-server in de Applicaties kunt u zelf plaatsen door ze op de upload-server in de
 juiste web-app directory neer te zetten. Het is ook mogelijk dit door juiste web-app directory neer te zetten. Het is ook mogelijk dit door
-NPO ICT te laten doen. Wij gaan er dan vanuit dat er 1+NPO Hosting en Streaming te laten doen. Wij gaan er dan vanuit dat er 1
 complete tar file aangeleverd wordt (bv dmv een url waarvan wij de complete tar file aangeleverd wordt (bv dmv een url waarvan wij de
 tar file kunnen downloaden). Vervolgens zullen wij de tar file tar file kunnen downloaden). Vervolgens zullen wij de tar file
Line 10: Line 10:
  
 Het configureren van de passenger/nginx wordt altijd door Het configureren van de passenger/nginx wordt altijd door
-NPO ICT gedaan. Idem voor databases.+NPO Hosting en Streaming gedaan. Idem voor databases.
  
 Het configureren van de applicatie zal meestal in samenspraak tussen Het configureren van de applicatie zal meestal in samenspraak tussen
-NPO ICT en de sitebouwer gebeuren. Zaken waar NPO ICT zich+NPO Hosting en Streaming en de sitebouwer gebeuren. Zaken waar NPO Hosting en Streaming zich
 mee bemoeit zijn: mee bemoeit zijn:
  
-  * Database parameters ''config/settings.yml''; +  * Database parameters ''config/settings.yml''; de database wordt door NPO Hosting en Streaming aangemaakt. login namen en database passwords zijn daar eventueel op te vragen) 
-de database wordt door NPO ICT aangemaakt. login namen en database +  * Applicatie logfiles; Een python applicatie wordt geacht te loggen onder ''/e/ap/X/log'' houd er rekening mee dat er altijd meerdere python instanties hierin schrijven, maak een apart logfile voor elke instantie, neem bijvoorbeeld de uid op in de bestandnaam. 
-passwords zijn daar eventueel op te vragen)+  * tmpdir; De applicatie tmpdir van een applicatie X wordt geacht te zijn:· ''/e/ap/X/tmp'' 
 +  * packages (modules); Binaire (gecompileerde) packages willen wij graag compileren om makkelijk software en OS upgrades uit te kunnen voeren. Overige modules worden geacht in de applicatie geïnstalleerd te worden 
 +  * current; De applicatie wordt geacht te staan in /e/ap/X/pages/current/passenger_wsgi.py waarbij ''current'' meestal een symlink zal zijn naar de meest recente deployments.
  
-  * Applicatie logfiles; +Bij initiële oplevering plaatst NPO Hosting en Streaming een ''hello world'' applicatie
-Een python applicatie wordt geacht te loggen onder +
-''/e/ap/X/log'' houd er rekening mee dat er altijd meerdere python· +
-instanties hierin schrijven, maak een apart logfile voor elke instantie,· +
-neem bijvoorbeeld de uid op in de bestandnaam. +
- +
-  * tmpdir; +
-De applicatie tmpdir van een applicatie X wordt geacht te zijn· +
-''/e/ap/X/tmp'' +
- +
-  * modules; +
-Binaire (gecompileerde) modules willen wij graag compileren om makkelijk +
-software en OS upgrades uit te kunnen voeren. Overige modules worden geacht +
-in de applicatie geïnstalleerd te worden.· +
- +
-  * current +
- +
-De applicatie wordt geacht te staan in /e/ap/X/pages/current/passenger_wsgi.py +
-waarbij ''current'' meestal een symlink zal zijn naar de meest recente deployments. +
- +
-Bij initiële oplevering plaatst NPO ICT een ''hello world'' applicatie+
 om een werkende set-up te kunnen tonen. om een werkende set-up te kunnen tonen.
 Deze kunt u uiteraard naar believen overschrijven of verwijderen. Deze kunt u uiteraard naar believen overschrijven of verwijderen.
Line 58: Line 40:
 <code> <code>
 source /e/ap/X/bin/env source /e/ap/X/bin/env
-ptyhon --version+python --version
 </code> </code>
 Indien gewenst kunnen wij hier meer environment variabelen in opnemen zoals Indien gewenst kunnen wij hier meer environment variabelen in opnemen zoals
 PYTHONPATH of DJANGO_SETTINGS_MODULE. PYTHONPATH of DJANGO_SETTINGS_MODULE.
  
-LET OP: de python-wereld kent zoiets als een virtualenv welke kan worden opgebouwd met 'virtualenv' of met 'pyvenv'. Geen van beide passen in onze hosting omgeving omdat er ofwel binaries worden gecopieerd (!), en dus niet meer onderhouden worden, ofwel omdat er paden gedereferenced worden waardoor bij software updates of storage-onderhoud deze paden niet meer geldig zijn. +==== pip install ==== 
- +Zo maak je je eigen python packages repository:
-Zo maak je je eigen python modules repository:+
 <code> <code>
-source /e/ap/X/rails/bin/env +source /e/ap/X/bin/env 
-pip install --install-option="--prefix=/e/ap/X/pages/env" django+pip install --prefix=/e/ap/X/pages/env SomePackage
 </code> </code>
 +Zie
 +[[https://pip.pypa.io/en/stable/user_guide/#installing-packages|hier]]
 +voor meer details.
 +
 +Vervolgens kan via ''PYTHONPATH'' aangegeven worden waar deze packages
 +gevonden kunnen worden:
 +  export PYTHONPATH=/e/ap/X/pages/env/lib/python2.7/site-packages
 +of in geval van python3.6
 +  export PYTHONPATH=/e/ap/X/pages/env/lib/python3.6/site-packages
 +
 +LET OP: niet alle packages kunnen via "pip install" geïnstalleerd
 +worden, namelijk als er software gecompiled moet worden kan dat vaak
 +niet. In zo'n geval kan
 +NPO Hosting en Streaming een module samenstellen waar de gewenste packages in zitten.
 +Deze wordt dan beschikbaar gesteld via
 +''/local/python-poilib-<iets>/...''
 +en middels het zetten van ''PYTHONPATH'' gerefereerd via ''/e/ap/X/bin/env''.
 +
 +==== virtualenv / pyvenv ====
 +De python-wereld kent zoiets als een virtualenv welke kan
 +worden opgebouwd met 'virtualenv' of met 'pyvenv'.
 +Voor python-3 geldt dat dit probleemloos kan.
 +
 +Voor python-2[.7] is het zo dat virtualenv een kopie van de python
 +binary maakt. Dat is op zich geen probleem, totdat er een upgrade van
 +python langskomt. In zo'n geval kan het voorkomen dat de virtualenv na
 +de upgrade niet meer werkt. Voor python-2 omgevingen adviseren we om
 +als er vanuit NPO Hosting en Streaming python upgrades aangekondigd worden na de upgrade
 +de virtualenv opnieuw aan te maken, om er zeker van te zijn dat deze
 +goed blijft samenwerken met de ge-upgrade python versie.
 +
 +==== python versies op het systeem ====
 +Zoals hierboven uitgelegd koppelen we meestal een python binary 1-op-1
 +aan een website. Deze staat voor website X dan in
 + /e/ap/X/bin/python
 +Als je in beter kijkt zie je dat die niet een echte binary is, maar een
 +shellscript waar ''/e/ap/X/bin/env'' ingelezen wordt en vervolgens de
 +echte python binary geëxecuteerd wordt. In ''/e/ap/X/bin/env'' staat
 +de locatie van de eigenlijke python binary en eventueel de locatie van
 +extra packages die nodig zijn voor website X.
 +
 +De locatie van de eigenlijke python binary is voor python-2 installaties
 +is meestal
 + /local/Python27-minimal/bin/python
 +of
 + /local/Python36-minimal/bin/python
 +voor python-3.
 +
 +Waarbij /local/Python27-minimal (en /local/Python36-minimal) symlinks
 +zijn naar een zeer kale standaard python installatie, waar eigenlijk
 +alleen ''pip'' en ''virtualenv'' aan zijn toegevoegd.
 +
 +Op die manier kan men zelf middels ''pip install'' extra packages
 +installeren **en** kan NPO Hosting en Streaming onderhoud op python uitvoeren door
 +/local/Python27-minimal van tijd tot tijd naar een nieuwere python
 +versie te laten wijzen (b.v. van Python-2.7.13 naar Python-2.7.14)
 +zonder dat de bestaande ''pip install'' packages hiervoor aanpassingen
 +behoeven.
 +
 +Naast /local/Python[XY]-minimal is er ook een python binary in
 +/usr/bin/python. Dit is de python versie zoals die standaard met het OS
 +meekomt en door componenten in het OS gebruikt wordt. Deze is niet
 +geschikt om webhosting mee te doen en kan hier dus beter niet voor
 +gebruikt worden. Om te voorkomen dat deze versie per ongeluk toch
 +gebruikt wordt is het zaak om altijd
 + source /e/ap/X/bin/env
 +te doen zodat de juiste versie van python op het systeem gebruikt wordt.
  
 +==== Herstarten applicatie ====
 Het herstarten van de applicatie kunt u zelf veroorzaken door een ''touch'' van Het herstarten van de applicatie kunt u zelf veroorzaken door een ''touch'' van
 ''/e/ap/X/pages/restart.txt'' uit te voeren. ''/e/ap/X/pages/restart.txt'' uit te voeren.
  
  
  • sterretje-cluster/appcluster-hosting_python.1476109787.txt.gz
  • Last modified: 2026/05/27 14:01
  • (external edit)