Pyramid

Aus Hostsharing Wiki
Wechseln zu: Navigation, Suche

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.