2017-09-21 3 views
0

Ich verwende Webfaction zum Hosten einer meiner Django-Webanwendungen. Ich verwende eine symbolische Link-App, um meine Medien zu bedienen. Kürzlich habe ich versucht, eine .htaccess-Datei einzurichten, um Verfalls-Header für alle meine Bilder festzulegen, aber die .htaccess-Datei hat nicht funktioniert. Ich kontaktierte Webfaction Unterstützung, und sie reagierten mit diesem:Fehler beim Hinzufügen von Alias ​​zur Apache2-Konfigurationsdatei

„Sie sehen nicht die Tags in Ihren Dateien ablaufen, weil Sie keine Dateien wie feature_homemobile_fieldagent.jpg von Ihrem Apache-Stack dienen Alles unter/home/doc4design./webapps/django_2016/doc4_2016/media/Verzeichnis wird von unserem Frontend Nginx Server nach Ihrer Symlink App unter https://my.webfaction.com/applications/971721/edit-application bedient. Da unser nginx Server Ihre Einstellungen nicht kennt, sind solche Tags nicht gesetzt. Wenn Sie das tun wollen, Sie müssen die Symlink-Apps entfernen und Ihre httpd.conf mit den richtigen Alias- und Standortzeilenfolgen aktualisieren. Oder erstellen und konfigurieren Sie Ihren eigenen nginx-Server, auf dem Sie die vollständige Kontrolle über seine Konfiguration haben. "

Ich habe versucht, einen neuen Alias ​​zu meiner Apache2-Konfigurationsdatei hinzufügen, aber ich erhalte diesen Fehler

Invalid command 'Allow', perhaps misspelled or defined by a module not included in the server configuration 

UPDATE

ich auf Apache2.4 bedeutet, dass es sein herausgefunden ist nicht länger "Erlaube von allen" und ist jetzt "Erfordert alle". Ich habe meinen Server zurückgesetzt, und alles lief reibungslos, und ich entfernte meine Symlink-App vorübergehend von meiner Website über Webfaction. Alle Bilder wurden nicht mehr bedient und auf meiner Website nicht mehr angezeigt. Ich wartete 10 Minuten, aber nichts änderte sich. Gibt es einen zusätzlichen Schritt, den ich vermisse?

Apache2 httpd.conf

ServerRoot "/home/doc4design/webapps/django_2016/apache2" 

LoadModule authz_core_module modules/mod_authz_core.so 
LoadModule dir_module  modules/mod_dir.so 
LoadModule env_module  modules/mod_env.so 
LoadModule log_config_module modules/mod_log_config.so 
LoadModule mime_module  modules/mod_mime.so 
LoadModule rewrite_module modules/mod_rewrite.so 
LoadModule setenvif_module modules/mod_setenvif.so 
LoadModule wsgi_module  modules/mod_wsgi.so 
LoadModule unixd_module  modules/mod_unixd.so 
LoadModule headers_module modules/mod_headers.so 
LoadModule expires_module modules/mod_expires.so 
LoadModule filter_module  modules/mod_filter.so 
LoadModule deflate_module modules/mod_deflate.so 
#LoadModule pagespeed_module modules/mod_pagespeed_ap24.so 

<Directory /home/doc4design/webapps/django_2016/doc4_2016> 
    AllowOverride All 
</Directory> 

Alias /media/ /home/doc4design/webapps/django_2016/doc4_2016/media 

<Directory /home/doc4design/webapps/django_2016/doc4_2016/media> 
Allow from all 
</Directory> 

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
CustomLog /home/doc4design/logs/user/access_django_2016.log combined 
ErrorLog /home/doc4design/logs/user/error_django_2016.log 

Listen 30651 
KeepAlive Off 
SetEnvIf X-Forwarded-SSL on HTTPS=1 
ServerLimit 1 
StartServers 1 
MaxRequestWorkers 5 
MinSpareThreads 1 
MaxSpareThreads 3 
ThreadsPerChild 5 

WSGIDaemonProcess django_2016 processes=2 threads=12 maximum-requests=100 python-path=/home/doc4design/webapps/django_2016:/home/doc4design/webapps/django_2016/doc4_2016:/home/doc4design/webapps/django_2$ 
WSGIProcessGroup django_2016 
WSGIRestrictEmbedded On 
WSGILazyInitialization On 
WSGIScriptAlias//home/doc4design/webapps/django_2016/doc4_2016/webapp/wsgi.py 

Antwort

1

ich sehe, Sie kämpfen immer noch.

Hinweis:Für HTTP-Cache-Header können Sie expires max, when you create a Webfaction Static app [oficial Webfaction docs] angeben. Aber max abläuft ist knifflig, da es in der Zukunft ein Ablaufdatum festlegen wird, können Sie dem Client-Browser nicht mitteilen, dass die Datei geändert wurde. Sie müssten die Datei (imageV1.jpg) ...

enter image description here

Webfaction support should be able to set it for you umbenennen, wenn Sie bereits die statische App erstellt (kein Symlink app).

Sie sollten statisch mit Ihrer eigenen Apache-Instanz dienen können. Sie haben korrekt erwähnt, dass für Apache 2.4 müssen Sie setzen Erfordern alle gewährt, aber in Ihrer httpd.conf kann ich sehen, dass Sie immer noch erlauben von allen.

Eine vereinfachte Darstellung der Abschnitte benötigen eine Django App mit Apache 2.4 zum Servieren ist:

Alias /media/ /path/to/mysite.com/media/ 
Alias /static/ /path/to/mysite.com/static/ 

<Directory /path/to/mysite.com/static> 
Require all granted 
</Directory> 

<Directory /path/to/mysite.com/media> 
Require all granted 
</Directory> 

WSGIScriptAlias//path/to/mysite.com/mysite/wsgi.py 

<Directory /path/to/mysite.com/mysite> 
<Files wsgi.py> 
Require all granted 
</Files> 
</Directory> 

Sie auch Django Apache Serving Files überprüfen, von der oficial Django Docs.

Ein Problem bestimmte Webfaction Problem, das ich beim Servieren von statischen Assets begegnet war mit Berechtigungen.

Zum www.yoursite.com/media/file.jpg
Welche HTTP-Fehler-Code erhalten Sie, wenn Sie versuchen, ein Bild zugreifen?
Wenn Sie 403 erhalten, versuchen Sie dies:

chmod 710 $HOME/webapps/django_2016/doc4_2016/media/file.jpg 
setfacl -m u:apache:r-x $HOME/webapps/django_2016/doc4_2016/media/file.jpg 

Viel Glück!

+0

Ha ja immer noch kämpfen. Die Anzahl der Fragen, die ich gestellt habe, ist um einen großen Prozentsatz gestiegen, und da alle Apache oder Apache Module basieren. Die Plus-Seite davon ist, dass ich viel lerne. Ich werde es versuchen. Danke ionescu77 – JBT

+0

Muss ich auch eine 'Nur Static'-App in der Webfaction erstellen, um Dateien über meinen Apache-Server bereitstellen zu können, oder brauche ich überhaupt keine App? – JBT

+0

Wenn Sie nur eine statische Datei erstellen, benötigen Sie keinen Apache für statische Medien und Medien. Mein Webfaction django-Setup (für ein Projekt/Webiste): - Ich erstelle eine Django-App im WF-Panel (das wird tatsächlich eine Apache-Instanz mit mod_wsgi und vorkonfigurierten Django-Projekt in $ HOME/webapps/yourApp installieren) - dies wird standardmäßig Serve you Django dynamische Seiten - Ich erstelle eine statische App für Medien (ich legte Bilder hier, aber django verwendet MEDIA nur für Dateien über Ihre Website/Projekt hochgeladen) - Ich erstelle eine statische App für statische (jpg, css , js alles django speichert in STATIC) Hoffe, das hilft! Viel Glück – ionescu77

Verwandte Themen