如何在Web服务器上运行Python脚本(例如localhost)

时间:2013-11-27 12:24:02

标签: python

在我开发Android和Java应用程序时,我一直使用PHP脚本与在线MySQL数据库进行交互,但现在我想迁移到Python。

如何在Web服务器上运行Python脚本?根据我使用PHP的经验,我一直在Linux环境中将我的文件保存在/var/www文件夹下。然后我稍后用路径的URL调用该文件。我在哪里保存我的Python脚本?

4 个答案:

答案 0 :(得分:3)

您可以使用Flask运行webapps。

下面简单的Flask应用程序将帮助您入门。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/sampleurl' methods = ['GET'])
def samplefunction():
    #access your DB get your results here
    data = {"data":"Processed Data"}
    return jsonify(data)

if __name__ == '__main__':
    port = 8000 #the custom port you want
    app.run(host='0.0.0.0', port=port)

现在,当您点击http://your.systems.ip:8000/sampleurl时,您将获得一个json响应,供您使用移动应用。

在函数中,您可以执行数据库读取或文件读取等。

您还可以添加如下参数:

@app.route('/sampleurl' methods = ['GET'])
def samplefunction():
    required_params = ['name', 'age']
    missing_params = [key for key in required_params if key not in request.args.keys()]

    if len(missing_params)==0:
        data = {
                "name": request.argv['name'],
                "age": request.argv['age']
               }

        return jsonify(data)
    else:
         resp = {
                 "status":"failure",
                 "error" : "missing parameters",
                 "message" : "Provide %s in request" %(missing_params)
                }
         return jsonify(resp)

要运行此操作,请将烧瓶应用保存在文件中,例如myapp.py

然后从终端运行python myapp.py

它将在端口8000上启动服务器(或由您指定。)

不建议将Flask的内置服务器用于生产级别。在您对应用程序感到满意后,您可能需要查看 Nginx + Gunicorn + Flask 系统。

有关烧瓶的详细说明,您可以查看此answer。它是关于在Raspberry pi上设置一个网络服务器,但它应该适用于任何Linux发行版。

希望有所帮助。

答案 1 :(得分:1)

使用像CherryPy,Django,Webapp2等网络应用程序框架或许多其他框架之一。对于生产设置,您需要配置Web服务器以使其正常工作。

或用Python编写CGI程序。

答案 2 :(得分:1)

在Apache上,最简单的方法是将Python编写为CGI,这里是一个例子:

首先为服务于你的python的web文件夹创建一个.htaccess:

AddHandler cgi-script .py
Options +ExecCGI

然后编写包含一些cgi库和输出头文件以及内容的python:

#!/usr/bin/python

import cgi
import cgitb
cgitb.enable()

# HEADERS
print "Content-Type:text/html; charset=UTF-8"
print  # blank line required at end of headers

# CONTENT
print "<html><body>"
print "Content"
print "</body></html>"

确保该文件归Apache chown apache. filename所有,并且执行位设置为chmod +x filename

实际使用Web框架(在其他答案中提到)相对于此方法有许多重要的好处,但是在为您想要运行一个或两个python脚本的其他目的设置的localhost Web服务器环境中,这可以工作好。

注意我并没有在这个脚本中实际使用导入的cgi库,但希望这会引导您找到合适的资源。

答案 3 :(得分:0)

python中的大多数Web开发都是使用Web框架进行的。这不仅仅是在服务器上安装脚本,因为框架具有更多功能,例如处理URL路由,HTML templatingORM,用户会话管理,CSRF保护,以及很多其他功能。这使得开发网站变得更加容易,特别是因为它以OOP方式促进了组件的重用。

最流行的python web框架是Django。它是一个功能齐全,结构紧凑的框架,提供大量文档。如果您更喜欢更模块化且更易于定制的内容,我个人推荐Flask。还有lots of other choices available

话虽如此,如果你真正想要的是在服务器上运行一个简单的python脚本,你可以使用apache + cgi检查this question一个简单的例子。