如何将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程序。

根据我的经验,有两种方法可以进行部署。

  1. 您需要创建Azure WebApps for Linux的实例,该实例是基于Ubuntu的Docker容器。然后,您可以安装任何想要部署PHP应用程序的服务,并通过PHP方法shell_exec直接调用类UNIX程序,而无需任何Azure Linux VM实例来运行类UNIX程序。

  2. 您可以使用基于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应用程序调用。

希望它有帮助。