python配合php
最近開始學著用Python+Tornado+MongoDB寫網站,興起寫了一個博客,覺得很有意思所以想掛在伺服器上發布出去找大家一起玩。這個時候就遇到了問題。
伺服器是windows系統,安裝的是Apache,所以需要配置Apache,使Apache同時支持PHP和Python。
廢話少說,提供有效方案一個,照做即可:
1. 修改 httpd.conf 文件
將下列幾個Mole前的注釋符 # 去掉
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
2. 配置 httpd-vhosts.conf 文件
<VirtualHost *:80>
ServerName http://b06.suosikeji.com #這是你要解析的網站地址
ServerAdmin [email protected]
ProxyRequests Off
< Proxy *>
Order deny,allow
Allow from all
< /Proxy>
proxypass / http://127.0.0.1:8002/ #這里是你的python站點的地址
proxypassreverse / http://127.0.0.1:8002/ #同上
</VirtualHost>
3. 重啟 Apache
以上就是我的成功案例。
網上還查到一個方法是通過nginx配置反向代理,我試了一個多小時然後放棄了。之前沒接觸過nginx,所以出了問題也不知道該怎麼解決。其中讓我氣得要吐血的一個問題是:
nginx文件夾始終為「只讀」,怎麼改也改不了……導致nginx.exe無法運行……
要是哪位朋友有解決方案,望不吝賜教。
關於反向代理的初步認識:
以我的網站為例,博客運行在伺服器本地8002埠,即 http://127.0.0.1:8002。我要解析的域名為 http://b06.suosikeji.com。
由於伺服器環境為Apache,所以外面無法直接訪問伺服器上未在Apache中配置的某個埠,所以需要進行反向代理的配置。
配置好反向代理之後,當用戶訪問 http://b06.suosikeji.com/add 頁面時,伺服器Apache收到請求,將其轉換為 http://127.0.0.1:8002/add 交給Python處理,並將Python處理出的結果返回,這樣用戶就看到了正確的頁面。
Ⅱ php調用python
py和php放在同一個目錄下面
some.py
------------------------------------------
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
def do_some(a):
return "dosome:%s" % a
if __name__ == '__main__':
a = sys.argv[1]
if a:
T = do_some(a)
print T
-------------------------------------------
t.php
<?php
$k = $_REQUEST['k'];
if (!empty($k))
{
$k = trim($k);
// $a = array();
// exec('python ./some.py '.$k, $a);
// echo $a[0];
passthru('python ./some.py '.$k);
}
然後瀏覽器裡面輸入
瀏覽器會返回dosome:test
被我注釋掉的代碼也可以用來替代passthru
裡面的$a 用來捕獲輸出 不過束腰注意的是 這里的arry 他是按照每一行'
'當作一個元素
但是passthru 則是你python里的print的原樣輸出
Ⅲ php+python的組合是否合理
python比較好
Python的設計哲學是「優雅」、「明確」、「簡單」。因此,Perl語言中「總是有多種方法來做同一件事」的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」。
Ⅳ 如何實現在PHP中調用Python並獲取運行結果
Python的import包含文件功能就跟PHP的include類似,但更確切的說應該更像是PHP中的require,因為Python里的import只要目標不存在就報錯程序無法往下執行。要包含目錄里的文件,PHP中只需要給對路徑就OK。Python中則不同,下面來看看這個例子。
Ⅳ apache 同時配置python 和php
配置apache+django+mod_wsgi環境
newliver 2011年03月18日 星期五 11:32 | 15102次瀏覽 | 4條評論
新公司還是用apache,有段時間沒看django官網,以為還是用mod_python,看了一下介紹,官方推薦使用mod_Wsgi,據說nginx本身就內置了此mole,說明它的性能還是不錯的~而且mod_python已不再更新,和apache使用時,經常出現錯誤信息~從而配置了一下此環境,以此記錄過程~個人覺得以後還是換成nginx+uwsgi才行,哈哈~
配置apache+django+mod_wsgi環境
作者:liuzemin
時間:2011-3-4
目錄
1 開發環境
2 前提
3 配置Apache
4 配置django項目wsgi文件
1 開發環境
lubuntu10.04
python2.6
django1.25
mod_wsgi3.x
apache2.x
2 前提
搭建好開發環境 python和django的安裝略過,相信大家都會的 以下是安裝apache及mod_wsgi模塊支持庫
sudo apt-get install apache2
sudo apt-get install libapache2-mod-python2.6
sudo apt-get install libapache2-mod-wsgi
3 配置Apache
進入apache安裝目錄
cd /etc/apache2/
sudo gvim httpd.conf
編輯apache目錄下面的httpd.conf文件,添加以下內容
#載入mod_wsgi模塊
LoadMole wsgi_mole moles/mod_wsgi.so
#配置wsgi腳本的本地項目位置
WSGIScriptAlias / /home/alex/work/app/wsgi_test/apache/django.wsgi
<VirtualHost *:9000>
ServerName 127.0.1.1
#ServerAlias www.xxx.com
#DocumentRoot /home/alex/work/app/wsgi_test
<Directory "/home/alex/work/app/wsgi_test">
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
4 配置django項目wsgi文件
#新建項目wsgi_test
django-admin.py startproject wsgi_test
#新建目錄存放wsgi文件
mkdir apache
#編輯wsgi文件 gvim django.conf #添加以下內容
# -*- coding: utf-8 -*-
import os
import sys
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'wsgi_test.settings'
app_apth = "/home/alex/work/app/"
sys.path.append(app_apth)
application = django.core.handlers.wsgi.WSGIHandler()
別忘記重啟一下apache
sudo /etc/init.d/apache2 restart
至此打開瀏覽器即可看到django熟悉的it worked界面
【如果出現配置相關錯誤,請查看對應的路徑是否配置正確;如果apache報內部錯誤,可以在系統日誌文件查看apache出錯日誌查找原因】