Pyramid: Unterschied zwischen den Versionen
Pro01 (Diskussion | Beiträge) |
KKeine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 10: | Zeile 10: | ||
Falls virtualenv noch nicht installiert ist: | Falls virtualenv noch nicht installiert ist: | ||
<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. | ||
<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. | ||
<syntaxhighlight lang=shell> | |||
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": | ||
<syntaxhighlight lang=shell> | |||
pyramidenv/bin/pcreate -s starter MyProject | |||
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: | ||
<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. | ||
< | <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() | ||
</ | </syntaxhighlight> | ||
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. | Wichtig: Diese Datei muss nun ausführbar gemacht werden. | ||
<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. | ||
< | <syntaxhighlight lang=apache line> | ||
AddHandler fastcgi-script .fcgi | AddHandler fastcgi-script .fcgi | ||
RewriteEngine On | RewriteEngine On | ||
Zeile 77: | Zeile 92: | ||
AddCharset UTF-8 .html | AddCharset UTF-8 .html | ||
AddDefaultCharset UTF-8 | AddDefaultCharset UTF-8 | ||
</ | </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. | ||
Zeile 87: | Zeile 102: | ||
[[Kategorie:Software]] | [[Kategorie:Software]] | ||
[[Kategorie:Glossar]] | [[Kategorie:Glossar]] | ||
[[Kategorie:Python]] |
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.