我们有一个PHP应用程序,用于加密与数据库的连接,我们需要提供3个不应公开访问的文件,但应该存在于服务器上以建立数据库连接({{3} })
显然,我们不希望使用应用程序代码将它们存储在SCM中,因此我想到的唯一想法是使用部署后操作挂钩并从存储帐户中获取这些文件(使用密钥和URI)在app参数中提供。)
有更好/更清洁的方法来实现这一目标吗? :)
谢谢,
答案 0 :(得分:0)
您可以尝试在部署任务期间使用Custom Deployment Script执行其他脚本或命令。因此,您可以创建一个php脚本,其功能是将证书文件从Blob存储下载到服务器文件系统位置。然后在您的PHP应用程序中,数据库连接可以使用这些文件。
以下是一般步骤:
composer
扩展名:
azure-cli
安装npm
模块,有关详细信息,请参阅https://docs.microsoft.com/en-us/azure/xplat-cli-install。azure site deplotmentscript --php
composer require microsoft/windowsazure
,确保您拥有与存储sdk相关的composer.json
。在根目录中创建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);
}
deploy.cmd
脚本,在步骤php run.php
下添加健全KuduSync
。如有任何疑问,请随时告诉我。