Pyramid: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
K (Kategorie Python ergänzt)
KKeine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 10: Zeile 10:
Falls virtualenv noch nicht installiert ist:
Falls virtualenv noch nicht installiert ist:


pip install virtualenv
<syntaxhighlight lang=shell>
pip install virtualenv
</syntaxhighlight>


Die nötige Isolation erreicht man durch Mitgabe des Parameters --no-site-packages.
Die nötige Isolation erreicht man durch Mitgabe des Parameters --no-site-packages.


virtualenv --no-site-packages pyramidenv
<syntaxhighlight lang=shell>
virtualenv --no-site-packages pyramidenv
</syntaxhighlight>


Um Pyramid unter einer Internetadresse erreichbar zu machen, sollte man bereits eine Domain über hsadmin angelegt haben.
Um Pyramid unter einer Internetadresse erreichbar zu machen, sollte man bereits eine Domain über hsadmin angelegt haben.
Zeile 24: Zeile 28:
Dann installiert man Pyramid mithilfe des isolierten Pythons.
Dann installiert man Pyramid mithilfe des isolierten Pythons.


source pyramidenv/bin/activate
<syntaxhighlight lang=shell>
pip install pyramid
source pyramidenv/bin/activate
pip install pyramid
</syntaxhighlight>


An dieser Stelle wird nun ein leeres Pyramid-Projekt als Platzhalter für ein reeles Pyramid-Projekt erzeugt, obwohl man beim Deployment auf Hostsharing nun wahrscheinlich ein konkretes Projekt installieren würde. Drei Arten von Projekten können initial erzeugt werden:
An dieser Stelle wird nun ein leeres Pyramid-Projekt als Platzhalter für ein reeles Pyramid-Projekt erzeugt, obwohl man beim Deployment auf Hostsharing nun wahrscheinlich ein konkretes Projekt installieren würde. Drei Arten von Projekten können initial erzeugt werden:
Zeile 35: Zeile 41:
Beispielhaft hier "starter":
Beispielhaft hier "starter":


pyramidenv/bin/pcreate -s starter MyProject
<syntaxhighlight lang=shell>
cd MyProject
pyramidenv/bin/pcreate -s starter MyProject
python setup.py install
cd MyProject
python setup.py install
</syntaxhighlight>


Das ist alles.  
Das ist alles.  
Zeile 45: Zeile 53:
Nun bringen wir die Pyramid-App per [[Flup]] und fastcgi ans Laufen. Es ist zu beachten, dass in einem eigenen Python Flup noch nicht installiert ist. In diesem Fall einfach installieren:
Nun bringen wir die Pyramid-App per [[Flup]] und fastcgi ans Laufen. Es ist zu beachten, dass in einem eigenen Python Flup noch nicht installiert ist. In diesem Fall einfach installieren:


pip install flup
<syntaxhighlight lang=shell>
pip install flup
</syntaxhighlight>


Nun erzeugt man im Verzeichnis ~/doms/example.de/fastcgi eine Datei z. B. namens myproject_pyramid.fcgi mit folgendem Inhalt.
Nun erzeugt man im Verzeichnis ~/doms/example.de/fastcgi eine Datei z. B. namens myproject_pyramid.fcgi mit folgendem Inhalt.


<nowiki>
<syntaxhighlight lang=python line>
#!/home/pacs/xyz00/users/doms/pyramidenv/bin/python
#!/home/pacs/xyz00/users/doms/pyramidenv/bin/python
import sys  
import sys  
Zeile 60: Zeile 70:
     from flup.server.fcgi import WSGIServer
     from flup.server.fcgi import WSGIServer
     WSGIServer(wsgi_app).run()
     WSGIServer(wsgi_app).run()
</nowiki>
</syntaxhighlight>


zur Erläuterung: In der ersten Zeile wird auf das zu verwendende Python gezeigt. In myapp ist der absolute Pfad zur Pyramid-App.
zur Erläuterung: In der ersten Zeile wird auf das zu verwendende Python gezeigt. In myapp ist der absolute Pfad zur Pyramid-App.
Zeile 67: Zeile 77:
Wichtig: Diese Datei muss nun ausführbar gemacht werden.
Wichtig: Diese Datei muss nun ausführbar gemacht werden.


chmod +x myproject_pyramid.fcgi
<syntaxhighlight lang=shell>
chmod +x myproject_pyramid.fcgi
</syntaxhighlight>


In dem "htdocs"-Verzeichnis der Domain (~/doms/example.de/subs/www) bearbeitet man nun die .htaccess.
In dem "htdocs"-Verzeichnis der Domain (~/doms/example.de/subs/www) bearbeitet man nun die .htaccess.


<nowiki>
<syntaxhighlight lang=apache line>
AddHandler fastcgi-script .fcgi
AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteEngine On
Zeile 80: Zeile 92:
AddCharset UTF-8 .html
AddCharset UTF-8 .html
AddDefaultCharset UTF-8
AddDefaultCharset UTF-8
</nowiki>
</syntaxhighlight>


Nun kann man die Standard-Pyramid-App im Browser unter http://www.example.de aufrufen.
Nun kann man die Standard-Pyramid-App im Browser unter http://www.example.de aufrufen.

Aktuelle Version vom 28. Juni 2024, 10:16 Uhr

Pyramid installieren

Vorbereitungen

Man sollte in betracht ziehen, eine vom System-Python unabhängige Python-Umgebung zu installieren. Dazu folgt man der Anleitung unter Python. Spätestens, wenn man mehrere Python-Applikationen unter einem User installieren will, sollte man eine isolierte Umgebung mittels virtualenv erzeugen.

Falls virtualenv noch nicht installiert ist:

pip install virtualenv

Die nötige Isolation erreicht man durch Mitgabe des Parameters --no-site-packages.

virtualenv --no-site-packages pyramidenv

Um Pyramid unter einer Internetadresse erreichbar zu machen, sollte man bereits eine Domain über hsadmin angelegt haben. In diesem Beispiel wird sich auf die Domain example.de bezogen.


Installation

Dann installiert man Pyramid mithilfe des isolierten Pythons.

source pyramidenv/bin/activate
pip install pyramid

An dieser Stelle wird nun ein leeres Pyramid-Projekt als Platzhalter für ein reeles Pyramid-Projekt erzeugt, obwohl man beim Deployment auf Hostsharing nun wahrscheinlich ein konkretes Projekt installieren würde. Drei Arten von Projekten können initial erzeugt werden:

  • starter: URL mapping via URL dispatch und keinen Persistenz-Mechanismus.
  • zodb: URL mapping via traversal und eine ZODB als Persistenz-Mechanismus.
  • alchemy: URL mapping via URL dispatch und Persistenz über SQLAlchemy.

Beispielhaft hier "starter":

pyramidenv/bin/pcreate -s starter MyProject
cd MyProject
python setup.py install

Das ist alles.

Konfiguration von Apache

Nun bringen wir die Pyramid-App per Flup und fastcgi ans Laufen. Es ist zu beachten, dass in einem eigenen Python Flup noch nicht installiert ist. In diesem Fall einfach installieren:

pip install flup

Nun erzeugt man im Verzeichnis ~/doms/example.de/fastcgi eine Datei z. B. namens myproject_pyramid.fcgi mit folgendem Inhalt.

#!/home/pacs/xyz00/users/doms/pyramidenv/bin/python
import sys 

myapp = '/home/pacs/xyz00/users/doms/MyProject/'
inifile = 'production.ini'
from paste.deploy import loadapp
wsgi_app = loadapp('config:' + myapp + '/' + inifile)
if __name__ == '__main__':
    from flup.server.fcgi import WSGIServer
    WSGIServer(wsgi_app).run()

zur Erläuterung: In der ersten Zeile wird auf das zu verwendende Python gezeigt. In myapp ist der absolute Pfad zur Pyramid-App. Die inifile ist im Deploymentfall wohl production.ini. In einer Entwicklungsumgebung nähme man an dieser Stelle die "development.ini".

Wichtig: Diese Datei muss nun ausführbar gemacht werden.

chmod +x myproject_pyramid.fcgi

In dem "htdocs"-Verzeichnis der Domain (~/doms/example.de/subs/www) bearbeitet man nun die .htaccess.

AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fastcgi-bin/myproject_pyramid.fcgi/$1 [QSA,L]
AddType "text/html; charset=UTF-8" html
AddType "text/plain; charset=UTF-8" txt 
AddCharset UTF-8 .html
AddDefaultCharset UTF-8

Nun kann man die Standard-Pyramid-App im Browser unter http://www.example.de aufrufen.