Pyramid
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.