2013-06-03 14 views
6

tôi cần phải sử dụng DjangoCMS và PrestaShop với url cùng, ví dụ:Làm thế nào để kết hợp Prestashop (PHP) và DjangoCMS (Python)

localhost/shop = prestashop<br> localhost/everythingElse = DjangoCMS<br>

prestashop của tôi được cài đặt trong /var/www/prestashop và djangoCMS được cài đặt trong /var/www/djangoCMS.

Linux Mint 14 64 bit, apache2, mod_python, wsgi ...

Tôi đã thử conf này:

<VirtualHost *:80> 
DocumentRoot "/var/www/djangoCMS" 
ServerName localhost 
WSGIScriptAlias/"/var/www/djangoCMS/djangoCMS/apache/django.wsgi" 
<Directory "/var/www/djangoCMS/djangoCMS/apache"> 
    Options +ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 

<VirtualHost *:80> 
DocumentRoot "/var/www/prestashop" 
ServerName php.localhost 
<Directory "/var/www/prestashop"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order Deny,Allow 
    Allow from all 
</Directory> 

Django hoạt động tốt trên localhost nhưng tôi không thể truy cập vào php.localhost: Rất tiếc! Google Chrome không thể tìm thấy php.localhost

+0

thử cổng khác – krampstudio

+0

lẽ 'php.localhost' isn Không được giải quyết đúng cách. Bạn cần phải thêm một mục trong tệp '/ etc/hotsts' của bạn hoặc nếu bạn đang sử dụng máy chủ dns configuer để giải quyết nó đúng cách và thiết lập đúng chỉ thị' NameVirtualHost' trong cấu hình apache của bạn. – mata

+0

Cảm ơn bạn;) Tôi sử dụng django trên cổng 8000 (./manage runserver 8000) và tôi đã thêm php.localhost trên/etc/hosts. Bây giờ tôi phải loại bỏ: 8000 từ url. Cảm ơn một lần nữa vì sự giúp đỡ của bạn. Chúc một ngày tốt lành. – 21S

Trả lời

0

Tên máy chủ php.localhost có nghĩa là bạn đang yêu cầu Apache trả lời mọi yêu cầu được gửi tới http://php.localhost Để làm điều đó, bạn cần phải thêm php.localhost để trỏ đến địa chỉ IP của máy chủ (127.0.0.1 nếu đó là môi trường phát triển cục bộ của bạn)

Điều này sẽ không hoạt động trong môi trường sản xuất. Những gì tôi đề nghị là sử dụng ProxyPass, nơi bạn có thể nói apache để chuyển hướng tất cả các cuộc gọi đến một cổng cụ thể. Ví dụ:

<VirtualHost *:9090> 
    ServerName localhost 
    DocumentRoot /var/www/prestashop 
    <Directory "/var/www/prestashop"> 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "/var/www/djangoCMS" 
    ServerName localhost 
    WSGIScriptAlias/"/var/www/djangoCMS/djangoCMS/apache/django.wsgi" 
    <Directory "/var/www/djangoCMS/djangoCMS/apache"> 
     Options +ExecCGI 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ProxyPass /shop https://localhost:9090 
    ProxyPassReverse /shop https://localhost:9090 
</virtualHost> 

Bằng cách đó bạn sẽ có prestashop chạy trong cổng 9090, django trong cổng 80 và nói cho Apache để chuyển hướng tất cả các cuộc gọi http://localhost/shop-http://localhost:9090