2016-11-17 47 views
0

我們有一個PHP應用程序,其中爲了加密與數據庫的連接,我們需要提供3個不應公開訪問的文件,但應在服務器上存在使數據庫連接(https://www.cleardb.com/developers/ssl_connections如何使用Git處理Azure App Services上的祕密文件

很明顯,我們不想用應用程序代碼將它們存儲在SCM中,所以我想到的唯一想法是使用post-deploy動作掛接並從存儲中獲取這些文件帳戶(在應用參數中提供密鑰和URI)。

有沒有更好的/更清潔的方式來實現這一目標? :)

謝謝

回答

0

你可以嘗試使用Custom Deployment Script部署任務時執行其他腳本或命令。因此,您可以創建一個php腳本,其功能是將證書文件從Blob存儲下載到服務器文件系統位置。然後在您的PHP應用程序中,數據庫連接可以使用這些文件。

以下是一般步驟:

  1. 啓用composer擴展在門戶網站: enter image description here
  2. 通過npm安裝azure-cli模塊,參考https://docs.microsoft.com/en-us/azure/xplat-cli-install獲取更多信息。
  3. 通過命令azure site deplotmentscript --php
  4. 執行命令composer require microsoft/windowsazure創建PHP部署腳本,請確保您有與存儲SDK依賴一個composer.json
  5. 在根目錄下創建的PHP腳本從Blob存儲下載蒼蠅(例如命名爲run.php):

    require_once 'vendor/autoload.php'; 
    
    use WindowsAzure\Common\ServicesBuilder; 
    use MicrosoftAzure\Storage\Common\ServiceException; 
    $connectionString = "<connection_string>"; 
    $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); 
    
    $container = 'certificate'; 
    $blobs = ['client-key.pem','client-cert.pem','cleardb-ca.pem']; 
    
    foreach($blobs as $k => $b){ 
        $blobresult = $blobRestProxy->getBlob($container, $b); 
        $source = stream_get_contents($blobresult->getContentStream()); 
        $result = file_put_contents($b, $source); 
    } 
    
  6. 修改deploy.cmd腳本,步驟KuduSync下添加santence php run.php
  7. 通過Git將應用程序部署到Azure Web App。

任何進一步的關注,請隨時讓我知道。

相關問題