Can';“得不到”;“远程执行”;启动tomcat
在配置实例时,我使用“RemoteExec”执行一些命令,然后通过terraform启动tomcat实例。它看起来像这样:Can';“得不到”;“远程执行”;启动tomcat,tomcat,terraform,apache-tomee,oracle-call-interface,oracle-cloud-infrastructure,Tomcat,Terraform,Apache Tomee,Oracle Call Interface,Oracle Cloud Infrastructure,在配置实例时,我使用“RemoteExec”执行一些命令,然后通过terraform启动tomcat实例。它看起来像这样: resource "null_resource" "mount_fss_on_DFSrvr" { depends_on = ["oci_core_instance.DFSrvr", "oci_file_storage_export.export_FileListener_FileListenerMount", ] count = "${var.proddfsrvr_c
resource "null_resource" "mount_fss_on_DFSrvr" {
depends_on = ["oci_core_instance.DFSrvr",
"oci_file_storage_export.export_FileListener_FileListenerMount",
]
count = "${var.proddfsrvr_count}"
provisioner "remote-exec" {
connection {
agent = false
timeout = "15m"
host = "${oci_core_instance.DFSrvr.*.public_ip[count.index % var.proddfsrvr_count]}"
user = "opc"
private_key = "${file(var.ssh_private_key)}"
}
inline = [
"some commands",
"./catalina.sh start",
"exit"
]
}
}
输出显示tomcat已启动,但当我查看实例时,日志显示它尚未启动(没有日志记录)。我可以ssh到实例中并运行“/catalina.shstart”,它工作正常。我还尝试过创建一个服务,并在remoteexecinline命令中运行“sudo-service-tomee-start”而不是“/catalina.sh-start”,但这也不起作用。我做错了什么
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_BASE: /apache-tomee-plus-7.0.4
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_HOME: /apache-tomee-plus-7.0.4
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_TMPDIR: /apache-tomee-plus-7.0.4/temp
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using JRE_HOME: /usr
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CLASSPATH: /apache-tomee-plus-7.0.4/bin/bootstrap.jar:/apache-tomee-plus-7.0.4/bin/tomcat-juli.jar
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Tomcat started.
尝试为它提供绝对路径,而不是像
source~/tmp/catalina.sh
那样的路径。它可能不会从你想的地方开始
第二步删除退出
行。它可能在安装完成之前退出。有些事情在写入磁盘之前完成。您也可以尝试source~/path/catalina;同步
此外,这是否需要sudo权限?尝试为其提供绝对路径,而不是
/
类似于source~/tmp/catalina.sh
。它可能不会从你想的地方开始
第二步删除退出
行。它可能在安装完成之前退出。有些事情在写入磁盘之前完成。您也可以尝试source~/path/catalina;同步
另外,这需要sudo权限吗?我在运行python web应用程序时遇到了同样的问题。我想这里的问题是,当您通过RemoteExec运行命令时,一旦完成,它就会退出shell。因此,当您ssh进入机器时,它会通过一个新的shell打开,您应该在您的命令前面加上nohup前缀,我相信这应该可以实现。但这对我来说是成功的。如果您希望它在后台运行并从remote exec出来,请使用&命令。 另外,您可能希望在内联命令中添加一个“sleep 20”,这将给tomcat在provisioner退出之前的启动时间 内联=[ “一些命令”, “nohup./catalina.sh start&”, “睡眠20”,
]我在运行python web应用程序时遇到了同样的问题。我想这里的问题是,当您通过RemoteExec运行命令时,一旦完成,它就会退出shell。因此,当您ssh进入机器时,它会通过一个新的shell打开,您应该在您的命令前面加上nohup前缀,我相信这应该可以实现。但这对我来说是成功的。如果您希望它在后台运行并从remote exec出来,请使用&命令。 另外,您可能希望在内联命令中添加一个“sleep 20”,这将给tomcat在provisioner退出之前的启动时间 内联=[ “一些命令”, “nohup./catalina.sh start&”, “睡眠20”,
]catalina.sh是否有可执行位?也许你可以试试“sh catalina.sh start”。看来你应该给“远程执行”[link]()@Aleksei Kurepin添加参数是的,它是可执行的。之后,我可以ssh到实例中并运行它。我发布的输出显示它成功运行,Tomcat启动。“sh catalina.sh start”也不起作用。谢谢您的回复。“catalina.sh”有可执行位吗?也许你可以试试“sh catalina.sh start”。看来你应该给“远程执行”[link]()@Aleksei Kurepin添加参数是的,它是可执行的。之后,我可以ssh到实例中并运行它。我发布的输出显示它成功运行,Tomcat启动。“sh catalina.sh start”也不起作用。谢谢您的回复。我已经尝试了这两种方法(绝对路径和无出口)。另外,在调用脚本之前,我对路径进行了cd,只是没有显示该部分。我可以在同一个用户下配置实例后将其ssh到实例中,并执行确切的命令,然后它就可以工作了,因此没有权限问题。令人费解的是,我得到了Tomcat启动的输出,但它没有。您可能需要明确说明您使用的连接类型。那将是我唯一的猜测<代码>连接{type=“ssh”user=“vm user”host=“${var.puppet\u master\u hostname}”private\u key=“${file(var.vm\u user\u private\u key)}”}我已经尝试了这两种方法(绝对路径和无出口)。另外,在调用脚本之前,我对路径进行了cd,只是没有显示该部分。我可以在同一个用户下配置实例后将其ssh到实例中,并执行确切的命令,然后它就可以工作了,因此没有权限问题。令人费解的是,我得到了Tomcat启动的输出,但它没有。您可能需要明确说明您使用的连接类型。那将是我唯一的猜测<代码>连接{type=“ssh”user=“vm user”host=“${var.puppet\u master\u hostname}”private\u key=“${file(var.vm\u user\u private\u key)}”}