2017-09-16 31 views
0

在我的項目中,我必須從用戶通過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,但他們正在實施額外費用)。

回答

0

根據你的描述,根據我的理解,我認爲你想在基於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應用程序調用。

希望它有幫助。

相關問題