[英]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.