如何结合 Prestashop (PHP) 和 DjangoCMS (Python)
Posted
技术标签:
【中文标题】如何结合 Prestashop (PHP) 和 DjangoCMS (Python)【英文标题】:How to combine Prestashop (PHP) and DjangoCMS (Python) 【发布时间】:2013-05-29 11:39:57 【问题描述】:我需要用相同的 url 使用 DjangoCMS 和 prestashop,例如:
localhost/shop = prestashop<br>
localhost/everythingElse = DjangoCMS<br>
我的 prestashop 安装在 /var/www/prestashop
,djangoCMS 安装在 /var/www/djangoCMS
。
Linux Mint 14 64 位、apache2、mod_python、wsgi...
我试过这个配置:
<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 在 localhost 上运行良好,但我无法访问 php.localhost:糟糕!谷歌浏览器找不到 php.localhost
【问题讨论】:
可能php.localhost
没有正确解析。您需要在 /etc/hotsts
文件中添加一个条目,或者如果您使用 dns 服务器配置它以正确解析它,并在您的 apache 配置中正确设置 NameVirtualHost
指令。
谢谢 ;) 我在端口 8000 (./manage runserver 8000) 上使用 django,并且在 /etc/hosts 上添加了 php.localhost。现在我必须从 url 中删除 :8000 。再次感谢你的帮助。祝你有美好的一天。
Runserver 只是开发服务器,不适合生产。如果您想从 URL 中删除 :8000,请不要使用 Runserver,而是使用 Apache。
我见过这样构建的网站,但它从来没有很好地体现出来。要么你用两种不同的语言复制大量相同的交互,要么你有两个功能和工作方式不同的网站。
【参考方案1】:
ServerName php.localhost 表示您告诉 Apache 回答对http://php.localhost 发出的任何请求为此,您需要添加 php.localhost 以指向服务器 IP 地址(如果是本地开发环境,则为 127.0.0.1)
这在生产环境中不起作用。我建议使用 ProxyPass,您可以在其中告诉 apache 将所有调用重定向到特定端口。例如:
<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 http://localhost:9090
ProxyPassReverse /shop http://localhost:9090
</virtualHost>
这样你将在端口 9090 中运行 prestashop,在端口 80 中运行 django 并告诉 Apache 将所有调用从 http://localhost/shop 重定向到 http://localhost:9090
【讨论】:
以上是关于如何结合 Prestashop (PHP) 和 DjangoCMS (Python)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 prestashop 1.7 中对自定义页面进行 ajax 请求