2017-09-28 3 views
0

Comme on le sait, après avoir émis une requête avec un seul nom d'IP ou de serveur via l'explorateur web, apache retournera sa page d'accueil statique par défaut à l'explorateur. J'utilise django et apache avec mod_wsgi pour déployer mon site (c'est-à-dire l'application django sur le serveur web Apache). Comment router le traitement vers les règles de mappage django définies dans views.py pour générer dynamiquement une page d'accueil (page d'index) pour ce site lorsque j'émets une requête à ce serveur exécutant apache? Merci d'avance!comment rendre django rendre la page d'accueil par défaut au lieu d'apache

I a ajouté la configuration suivante dans la principale httpd.conf Apache:

<VirtualHost 127.0.0.1:80> 

    ServerName 127.0.0.1 
    ServerAlias example.com 
    ServerAdmin [email protected] 

    DocumentRoot /usr/local/www/documents 

    Alias /robots.txt /usr/local/www/documents/robots.txt 
    Alias /favicon.ico /usr/local/www/documents/favicon.ico 

    Alias /media/ /usr/local/www/documents/media/ 

    <Directory /usr/local/www/documents> 
    Require all granted 
    </Directory> 

    WSGIDaemonProcess 127.0.0.1 processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup 127.0.0.1 

    WSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgi 

    <Directory /usr/local/www/wsgi-scripts> 
    Order allow,deny 
    Allow from all 
    </Directory> 

</VirtualHost> 

code dans myapp.wsgi:

def application(environ, start_response): 
    status = '200 OK' 
    output = b'Hello World!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

J'émis 127.0.0.1, l'explorateur affiché ' Cela fonctionne! ', Qui est la page par défaut produite par Apache, au lieu de laquelle je voulais' Bonjour tout le monde! ' retourné dans ce cas. Je veux juste que quand vient de publier une adresse IP ou site, le travail de génération de la page d'accueil par défaut est directement délégué à django pour gérer dynamiquement plutôt que de retourner un index.html statique par Apache. Bien que j'ai configuré WSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgi, cela ne semble toujours pas fonctionner.

+0

Non, ce n'est pas * connu *. Il ne sert pas la "page d'accueil statique par défaut" à moins que vous le demandiez spécifiquement. Comment avez-vous configuré mod_wsgi en premier lieu? –

+0

Comme le demande @DanielRoseman, fournissez la configuration que vous utilisez. Si vous avez ajouté '' WSGIScriptAlias ​​//some/path/to/wsgi.py'' et une autre config appropriée pour permettre l'accès à cette ressource à l'endroit approprié, cela devrait entraîner la prise en charge par l'application WSGI des demandes de racine du site . Si ce n'est pas le cas, vous avez probablement masqué la configuration de l'hôte virtuel. –

+0

@GrahamDumpleton La configuration et les informations nécessaires ont été fournies. –

Répondre

0

Les hôtes virtuels ne fonctionnent pas de cette manière pour 127.0.0.1 car ils sont traités un peu de manière spéciale. Qu'est-ce qui va se passer, à moins que ce soit le seul VirtualHost dans votre configuration, est que Apache retombera à l'aide de la première définition VirtualHost trouvé, généralement le site par défaut.

vous avez donc normalement:

<VirtualHost *:80> 
    ServerName my.fqdn.host.name 
    ... 
</VirtualHost> 

C'est, pas d'adresse IP dans VirtualHost directive et ServerName est le nom d'hôte qui apparaît dans l'URL, pas une adresse IP.

Y avait-il un avant VirtualHost dans httpd.conf ou était-ce compris notamment extra/httpd-vhosts.conf, qui se traduirait par un VirtualHost annule et remplace celui-ci?

+0

remercie M. Dumpleton. –