繁体   English   中英

在Ubuntu中使用Flask,nginx和uWSGI运行Python文件

[英]Running a Python file with Flask, nginx and uWSGI in Ubuntu

对于学校项目,我需要在服务器上运行Python API。 我在Digital Ocean上创建了一个Droplet并安装了Ubuntu。 之后,我按照本教程创建了一个使用nginx,Flask和WSGI的环境。

一切正常,“你好!” 消息正在显示,我可以更改其文本并在屏幕上看到更改。 所以那里没有问题。

此时的文件结构为:

ProjectFolder
|
|── api.py (The file with "Hello There!")
|── api.ini 
|── api.sock
|── wsgi.py
|── projectenv

问题在于我们的API代码存储在BitBucket存储库中。 我已经克隆了存储库,以便文件结构变为:

ProjectFolder
|
|── api.py (The file with "Hello There!")
|── api.ini 
|── api.sock
|── wsgi.py
|── projectenv/
|── bitbucketrepo/
    |── api.py

当然,由于其他文件中的配置,服务器仍会使用“ Hello There!”加载api.py。 文本。 我更改了wsgi.py/etc/nginx/sites-enabled//etc/nginx/sites-available/目录中的文件,以便所有内容都直接指向bitbucketrepo文件夹中的api.py。没有用 我还尝试将根文件夹中的所有文件移动到bitbucketrepo文件夹中,并相应地更改了上述文件,但这也没有用。

我也不明白为什么带有“ Hello There!”的api.py。 当我在浏览器中转到服务器时,文本会自动运行,但是当我将我的API代码直接复制并粘贴到该文件中时,该文本将不起作用。

文件中的代码如下:

ProjectFolder / apy.py:

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
    application.run(host='0.0.0.0')

Projectfolder / api.ini:

[uwsgi]
module = wsgi

master = true
processes = 5

socket = api.sock
chmod-socket = 660
vacuum = true

die-on-term = true

ProjectFolder / wsgi.py:

from api import application

if __name__ == "__main__":
    application.run()

ProjectFolder / bitbucketrepo / api.py:

#imports

application = Flask(__name__)
api = Api(application)

#API code

if __name__ == '__main__':
    application.run(debug=True, host='0.0.0.0')

所以我的问题是,仅当我运行命令python api.py时,bitbucket文件夹中的API才运行。 当我这样做时,可以在端口5000上访问该API。因此,只有当我运行该终端命令时,某人才能访问我的API。

我想要的是bitbucket文件夹中的API始终运行,就像ProjectFolder中的api.py一样。

我感觉我非常接近实现这一目标,但是只是缺少过程中的某个步骤。 我没有服务器和服务器管理方面的经验,所以这对我来说是很新的。

有谁知道要采取哪些步骤来实现这一目标? 如果在StackOverflow上有类似问题,我深表歉意。 我无意发布重复的问题。

提前致谢!

您是否尝试过使用:

from bitbucketrepo.api import application

如果您使用的是python2,请确保bitbucketrepo文件夹中有一个__init__.py文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM