2012-11-03 38 views
5

Korzystam z systemu PaaS przez kilka dni i bardzo mi się podoba, To prawdopodobnie najlepszy system PaaS, który przetestowałem (użyłem inne 3), ale nie znalazłem informacji o tym, jak wyświetlać zawartość statyczną za pomocą serwera WWW w interfejsie (Apache https lub nginx). Nie jestem pewien, który serwer jest używany.Jak wyświetlać zawartość statyczną za pomocą Apache w AppFog (aplikacja WSGI Python)

Moja aplikacja to Python WSGI z CherryPy i działa idealnie w AppFog, ale nie chcę, aby CherryPy służył statycznej treści, myślę, że Apache httpd lub nginx to lepsza opcja.

+0

myślę, że się mylę i AppFog używać nginx jako serwera proxy zamiast Apache httpd dla aplikacji w Pythonie, w każdym razie wciąż potrzebuję skonfigurować bezpośredni dostęp do statycznej zawartości. – Roberto

+0

Jeśli moja odpowiedź była pomocna, ustaw ją jako rozwiązanie. Dzięki! –

Odpowiedz

0

Edytuj plik nginx.conf. W sekcji serwera wpisz ...

# serve static files 
     location ~ ^/(images|javascript|css)/ { 
     root /var/www/html/appname; 
    } 

obrazów, javascript i css będą folderami w folderze głównym dokumentu. Zaktualizuj odpowiednio wszystkie swoje adresy URL.

+1

Dzięki Andrew, ale o ile wiem AppFog nie zezwala na dostęp do pliku apache http.conf :-( – Roberto

+0

Zaktualizowana odpowiedź dla serwera nginx. –

+0

Witam, Andrew, jak wspomniałem wcześniej, nie mam dostępu do pliku konfiguracyjnego serwera, moja aplikacja działa w AppFog i mogę tylko zmieniać pliki w mojej aplikacji dir. Otworzyłem bilet w Appfog, aby upewnić się, czy ta funkcja jest możliwa, czy nie (w innym systemie PaaS jak OpenShift jest to możliwe). W każdym razie, dzięki za twoja odpowiedź: – Roberto

2

Dzięki wsparciu Ryana, jestem w stanie załadować statyczne pliki! Oto kroki:

  1. stworzył „static” katalog w katalogu głównym projektu - tutaj wszystkie pliki statyczne zostaną zebrane działa komenda collectstatic.

  2. Edycja plik settings.py:

    STATIC_ROOT = os.path.join (os.path.abspath (Wywołanie os.path.dirname (plik)), '../static') # Może się zmieniać w zależności od tego, gdzie znajduje się plik settings.py!

    STATIC_URL = '/ static /'

  3. Dodaj następujący wiersz w urlpatterns zmienna w urls.py pliku:

    url (r '^ statyczne/(P * $?).' "django.views.static.serve", {'document_root': settings.STATIC_ROOT}),

  4. Na koniec uruchom polecenie collectstatic na komputerze lokalnym. Spowoduje to skopiowanie wszystkich plików statycznych od aplikacji używasz:

    python manage.py collectstatic

To wszystko. Wciśnij AF :)

Wada: trzeba uruchomić collectstatic za każdym razem mamy nowy plik statyczne ...

+1

Hi @giga, oryginalne pytanie dotyczy sposobu wyświetlania statycznej zawartości z interfejsu AppFog (apache httpd lub nginx), a nie z aplikacji Python. Właściwie to już obsługuję pliki statyczne z mojej aplikacji Pythona za pomocą CherryPy (powiedziałem to w moim oryginalnym wpisie), ale program Python (lub Java lub cokolwiek innego) nie są tak wydajne, obsługując pliki statyczne, jak dojrzałe serwery WWW. – Roberto

+0

Ups. Miałem problemy z serwowaniem statyki przez Pythona w pierwszej kolejności ...: P – giga

+0

Więc w AppFog nie mogłeś zmodyfikować ngix.conf? –