如何将Web应用程序与Azure虚拟Linux macine连接到相同的Azure帐户?
在我的项目中,我必须从用户通过HTML表单获取两个文件(fastq是生物信息学文件),并通过一些UNIX操作系统(我在服务器端脚本中使用PHP)对其进行分析(仅在UNIX操作系统中支持)(我只是使用shell_exec()运行所有UNIX程序)。现在我已经在本地主机上实现了它,并且每件事情都很好。如何将Web应用程序与Azure虚拟Linux macine连接到相同的Azure帐户?
现在我必须在Azure中也这样做。我在Azure Web应用程序中创建了一个网页,并且在同一个帐户中有一个UNIX VM。我想知道我可以如何连接免费(我已经看到Integrate your app with an Azure Virtual Network,但他们正在实施额外费用)。
根据你的描述,根据我的理解,我认为你想在基于Linux的Azure WebApps &虚拟机上部署你的应用程序,并让它在你的本地主机上运行,这是一个PHP应用程序, shell中通过PHP方法shell_exec
的类UNIX程序。
根据我的经验,有两种方法可以进行部署。
您需要创建Azure WebApps for Linux的实例,该实例是基于Ubuntu的Docker容器。然后,您可以安装任何想要部署PHP应用程序的服务,并通过PHP方法
shell_exec
直接调用类UNIX程序,而无需任何Azure Linux VM实例来运行类UNIX程序。-
您可以使用基于Windows的Azure WebApps实例,但不可能通过
shell_exec
方法运行Azure Linux VM上托管的类UNIX程序。要在Azure Linux VM上调用远程类UNIX程序,有两种方法可以更改您的PHP应用程序,如下所示。2.1。通过PHP方法
ssh2_connect
/ssh2_auth_password
/ssh2_exec
创建一个ssh会话来连接远程Linux VM,并通过ssh2_exec
方法执行SSH认证以运行类UNIX程序,如果您已经在Windows上为Azure WebApp安装了PHP扩展包ssh2
。我的示例代码如下。<?php $host = '<your Azure linux vm host>'; $port = 22; // First enable the 22 port for Azure Linux VM $user='<ssh user>'; $passwd='<ssh password>'; $session=ssh2_connect($host, $port); if($session) echo "connect successfully.\n"; if(ssh2_auth_password($session, $user, $passwd)) { echo $user." login OK.\n"; $stream=ssh2_exec($session, "pwd"); stream_set_blocking($stream, true); if ($stream === FALSE) die("pwd failed"); echo 'pwd: '.stream_get_contents($stream).'<br/>'; } ?>
2.2。或者,您可以创建一个新的PHP应用程序来调用Azure Linux VM上的类UNIX程序,以发布WebService API或RESTful API,以便在Azure WebApp上由您的PHP应用程序调用。
希望它有帮助。