Web services Google计算引擎-保持简单Web服务的启动和运行(Flask/Python+Firebase+Google计算)

Web services Google计算引擎-保持简单Web服务的启动和运行(Flask/Python+Firebase+Google计算),web-services,flask,google-cloud-platform,google-compute-engine,Web Services,Flask,Google Cloud Platform,Google Compute Engine,我创建了一个简单的web应用程序,如中所述,并使用Google的计算引擎将其托管在linux虚拟机上 不幸的是,当我在启动flask应用程序后关闭SSH连接时,外部IP地址和功能无法保持 我如何让它在我的虚拟机启动并运行时保持正常运行?应用程序在我的虚拟机中的位置是否存在问题,例如:www/folder vs/user/folder 您需要在后台进程、屏幕或tmux中运行应用程序。这是一个很好的例子 有关如何使用屏幕的更多详细信息,请查看文章 此外,您还可以查看关于类似问题的讨论。您需要在后台进

我创建了一个简单的web应用程序,如中所述,并使用Google的计算引擎将其托管在linux虚拟机上

不幸的是,当我在启动flask应用程序后关闭SSH连接时,外部IP地址和功能无法保持


我如何让它在我的虚拟机启动并运行时保持正常运行?应用程序在我的虚拟机中的位置是否存在问题,例如:www/folder vs/user/folder

您需要在后台进程、屏幕或tmux中运行应用程序。这是一个很好的例子

有关如何使用屏幕的更多详细信息,请查看文章


此外,您还可以查看关于类似问题的讨论。

您需要在后台进程或屏幕或tmux中运行应用程序。这是一个很好的例子

有关如何使用屏幕的更多详细信息,请查看文章


此外,您还可以查看关于类似问题的讨论。

这是因为您是以用户身份运行的。关闭ssh连接几分钟后,会话将关闭,进程将被终止。您可以使用启动脚本运行它,也可以以root用户身份运行启动cron作业。

这是因为您是以用户身份运行的。关闭ssh连接几分钟后,会话将关闭,进程将被终止。您可以使用启动脚本运行它,也可以以root用户身份运行启动cron作业。

以上答案都很好,而且都很有效。对于下一个对VM/Google Compute/Cloud相对陌生的人来说,这里正是我使用screen的方式。我认为这是一个最简单/最好的解决方案,可以让你快速地学习/获得一些东西

进入虚拟机后,首先创建一个屏幕

screen -S <screen name>
现在,当您在屏幕上时,您的终端很可能会被清除,这是同一虚拟机上的一个新进程窗口。这是我们可以运行flask代码的地方

现在实现您的flask/web服务器代码/任何东西

export FLASK_APP=main.py
flask run
现在我可以点击弹出的web服务器链接。现在您可以关闭此终端/终止我的ssh连接,web应用程序仍然处于活动状态

下次我使用ssh时,我可以简单地使用screen-ls来显示可用屏幕的列表。它还将显示屏幕的状态

googleUserName@one:~$ screen -ls
There is a screen on:
        761.one (02/01/2018 06:58:56 PM)        (Detached)
现在我可以重新连接到它了,我只需要使用-r来重新连接来指定屏幕

screen -r <screen name>
当我重新连接时,我的Web服务器仍在运行,并显示我预期的所有输出和流量,就好像我从未关闭它一样

现在,如果您想在屏幕和正常ssh连接之间来回跳转,可以从中分离,-d。在这里,在我的例子中,您不必指定屏幕名“one”,因为您当前在屏幕中,并且将从当前屏幕分离

screen -d
一些结束语

我不知道你是否可以在屏幕中创建屏幕

screen -S <screen name>
我不知道这个解决方案有多可持续/是否被推荐。但屏幕对于我的用例来说很好

下面是我在main.py flask应用程序中运行的代码

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"
你可以找到它


我使用的关于google计算引擎、设置和web服务器入门的教程是。

上面的答案都很好,而且都很有效。对于下一个对VM/Google Compute/Cloud相对陌生的人来说,这里正是我使用screen的方式。我认为这是一个最简单/最好的解决方案,可以让你快速地学习/获得一些东西

进入虚拟机后,首先创建一个屏幕

screen -S <screen name>
现在,当您在屏幕上时,您的终端很可能会被清除,这是同一虚拟机上的一个新进程窗口。这是我们可以运行flask代码的地方

现在实现您的flask/web服务器代码/任何东西

export FLASK_APP=main.py
flask run
现在我可以点击弹出的web服务器链接。现在您可以关闭此终端/终止我的ssh连接,web应用程序仍然处于活动状态

下次我使用ssh时,我可以简单地使用screen-ls来显示可用屏幕的列表。它还将显示屏幕的状态

googleUserName@one:~$ screen -ls
There is a screen on:
        761.one (02/01/2018 06:58:56 PM)        (Detached)
现在我可以重新连接到它了,我只需要使用-r来重新连接来指定屏幕

screen -r <screen name>
当我重新连接时,我的Web服务器仍在运行,并显示我预期的所有输出和流量,就好像我从未关闭它一样

现在,如果您想在屏幕和正常ssh连接之间来回跳转,可以从中分离,-d。在这里,在我的例子中,您不必指定屏幕名“one”,因为您当前在屏幕中,并且将从当前屏幕分离

screen -d
一些结束语

我不知道你是否可以在屏幕中创建屏幕

screen -S <screen name>
我不知道这个解决方案有多可持续/是否被推荐。但屏幕对于我的用例来说很好

下面是我在main.py flask应用程序中运行的代码

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"
你可以找到它


我使用的关于google compute engine入门、设置和web服务器的教程是。

您确定IP地址不会持久存在吗?@DanKowalczyk是的,它在我关闭ssh后立即关闭
一场我将尝试下面的两种方法,并标出一个例外的答案。谢谢你迄今为止的帮助。谢谢!另一个答案是,如果你计划经常关闭服务器,这样下次打开应用程序时,应用程序就会恢复在线。我的建议适用于您正在积极开发应用程序的情况。您确定IP地址不会持续存在吗?@DanKowalczyk是的,它在我关闭ssh会话后立即关闭。我将尝试下面的两种方法,并标出一个例外的答案。谢谢你迄今为止的帮助。谢谢!另一个答案是,如果你计划经常关闭服务器,这样下次打开应用程序时,应用程序就会恢复在线。当你在积极开发应用程序时,我的建议很好。我真的很高兴screen解决了你的问题,但是,我认为接受你自己的答案是不礼貌的。您为screen编写了一个很好的教程,但这已经超出了您最初问题的范围。请看这篇博文的最后几段:@DanKowalczyk你完全正确。切换它并发表评论。再次感谢你的帮助,谢谢!您还应该查看非常类似的tmux。谷歌似乎更喜欢tmux,因为它集成在云壳中。我真的很高兴screen解决了你的问题,但我确实认为接受你自己的答案是不礼貌的。您为screen编写了一个很好的教程,但这已经超出了您最初问题的范围。请看这篇博文的最后几段:@DanKowalczyk你完全正确。切换它并发表评论。再次感谢你的帮助,谢谢!您还应该查看非常类似的tmux。谷歌似乎更喜欢tmux,因为它集成到了云Shell中。Screen在这方面做得非常好。请看下面我是如何使用它的。屏幕在这方面工作得非常好。我是如何使用它的,请参见下文。