【问题标题】:Unable to start python app using a startup script on GCP VM无法使用 GCP VM 上的启动脚本启动 python 应用程序
【发布时间】:2021-07-29 19:41:42
【问题描述】:

我正在 GCP 实例组上部署一个 python 应用程序。

python版本为3.7

我在实例的模板中有一个启动脚本,它使用启动应用程序

python manage.py runserver 0.0.0.0:8000

这不适用于初创公司。我需要启动应用程序,它应该继续运行。 我也试过了

nohup python manage.py runserver 0.0.0.0:8000 </dev/null &>/dev/null &

我也试过了

 nohup python manage.py runserver 0.0.0.0:8000 &

如果,我通过 SSH 连接到实例,上述所有命令都有效。 我尝试使用这个名为 revamp.sh 的 bash 脚本:

#! /bin/bash  
python manage.py runserver 0.0.0.0:8000

元数据中的启动脚本:

chmod +x revamp.sh
./revamp.sh

ma​​nage.py 文件和 bash 脚本在同一目录下。

我检查了串行日志,它显示了这个错误:

但是,我需要应用程序从实例模板中定义的启动脚本开始。这样,如果实例扩展,应用程序将自动启动。 该实例有 Ubuntu 16

我怎样才能做到这一点?

【问题讨论】:

  • 1) 您必须指定 manage.py 的完整路径 2) 使用串行端口查看有关您的脚本的消息。 cloud.google.com/compute/docs/instances/…
  • 脚本和manage.py在同一个目录
  • 它们一起位于同一个目录中并不意味着进程当前的工作目录是相同的。查看串行端口输出并使用详细信息更新您的问题。
  • 上次编辑后更新。您不能指定 ./revamp.sh 并期望系统知道 ./ 在文件系统中的位置。当启动脚本运行时,没有 user 上下文。您正在作为特权系统进程运行。
  • 是的,我检查了串口,它显示错误。我在帖子中添加了错误。当我 ssh 进入机器并运行相同的脚本时,它是如何工作的?

标签: ubuntu google-cloud-platform virtual-machine google-compute-engine ubuntu-16.04


【解决方案1】:

你从哪里提取manage.py?在启动脚本元数据中将 python 作为 shell 脚本传递,然后重试:

#! /bin/bash
python /path/to/file/manage.py runserver 0.0.0.0:8000

【讨论】:

  • 我试过用那个。实例启动时,应用程序未在机器的外部 IP 上运行。如果我 ssh 进入机器并运行相同的 bash 脚本。它可以工作
  • 我已在帖子的元数据中附加了 bash 脚本和启动脚本,
  • 好的,所以应用程序根本没有被执行?正如约翰所说,如果使用串口查看消息有任何错误,请尝试调试
  • 是的,我检查了串口,它显示错误。我在帖子中添加了错误。当我 ssh 进入机器并运行相同的脚本时,它是如何工作的?
  • 串口显示的语法错误是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多