How do I run Django and PHP together on one Apache server?

前端 未结 4 484
别那么骄傲
别那么骄傲 2020-11-30 17:29

I can currently run either Django through mod_wsgi or PHP on my Apache server.

My Django projects run at: http://localhost and source is at C:/django_proj

My

相关标签:
4条回答
  • 2020-11-30 18:10

    I would like to add that if you are using Apache ProxyPass, it's possible to deny certain URL patterns so that it falls to mod_php.

    ProxyPass /wordpress !
    <Location /wordpress>
        Require all granted
    </Location>
    
    0 讨论(0)
  • 2020-11-30 18:11

    I run dozens of mod_wsgi/Django sites, PHP sites, and a Rails site with a single Apache.

    It's mostly done using virtual hosts but I have some that are running both on the same domain.

    You just need to put your WSGIScriptAlias /... after any other Location/Alias directives.

    Lets say, for example, I want to run phpMyAdmin on the same domain as a Django site. The config would look something like this:

    Alias /phpmyadmin /full/path/to/phpmyadmin/
    <Directory /full/path/to/phpmyadmin>
       Options -Indexes
       ...etc...
    </Directory>
    
    WSGIScriptAlias / /full/path/to/django/project/app.wsgi
    <Directory /full/path/to/django/project>
        Options +ExecCGI
        ...etc...
    </Directory>
    

    Edit:

    Your configuration should look something like this:

    <VirtualHost *:80>
        DocumentRoot "C:/django_proj"
        ServerName localhost
        WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi"
        <Directory "C:/django_proj/apache">
            Options +ExecCGI
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "C:/web"
        ServerName php.localhost
        Alias / C:/web
        <Directory C:/web>
            Options Indexes FollowSymLinks
            AllowOverride None
            Order Deny,Allow
            Allow from all
        </Directory>
    </VirtualHost>
    

    You don't need those <Directory> directives in http.conf... do all your configuration in the Virtual hosts.

    Also, completely get rid of the <Directory /> block.

    0 讨论(0)
  • 2020-11-30 18:17

    I had the same problem. Try removing this block <Directory /> in httpd-conf.

    Include httpd-vhost.conf and and try puting my WSGIScriptAlias / "/somewhere/file.wsgi" in virtual host section of httpd-vhosts which listens to port 80.

    0 讨论(0)
  • 2020-11-30 18:25

    Your WSGIScriptAlias / ... directive is telling Apache that everything request starting with "/" should get fed through Django's WSGI handler. If you changed that to read WSGIScriptAlias /django-proj/ ... instead, only requests starting with "/django-proj" would get passed into Django.

    An alternative would be to start setting up virtual hosts for each project. This way you could configure Apache to put each project at the / of it's own domain, and you wouldn't need to worry about the configuration for one project affecting one of your other projects.

    0 讨论(0)
提交回复
热议问题