Установка / получение системных переменных в веб-ролях Azure

Я не могу поверить, что я единственный, кто сталкивался с этой проблемой, но я нигде не могу найти об этом ничего.

В настоящее время у нас есть несколько веб-ролей Azure, на которых работает наше приложение, и в целях безопасности я решил добавить учетные данные, такие как имена пользователей, пароли и ключи API, в переменные системной среды и получить их в своих сценариях PHP с помощью getenv(),

Мы запускаем веб-роли Windows Server с установленными IIS и PHP. Я использую задачу запуска в моем ServiceDefinition.csdef вот так:

<Startup>
<Task commandLine="setEnvironmentVariables.cmd" executionContext="elevated" />
</Startup>

Содержание cmd file просто устанавливает переменные окружения, когда веб-роль вращается.

Все идет нормально. Однако я знаю по опыту на нашем сервере windows dev, что для того, чтобы PHP-скрипты могли видеть только что добавленные переменные окружения, вы должны запустить IISReset, вы можете увидеть их с помощью getenv(),

Однако вы не можете бежать IISReset на веб-ролях Azure, в соответствии с этим документом здесь https://azure.microsoft.com/en-us/blog/iis-reset-on-windows-azure-web-role/

Так что мои скрипты не могут видеть переменные !! Я что-то упустил или есть более простой способ установить системные переменные среды при запуске веб-роли, чтобы PHP мог их видеть?

1

Решение

ConfigurationSettings Элемент в вашей облачной конфигурации для WebRole позволит вам определить настройки. И, кстати, измените эти настройки без перекомпиляции и повторного развертывания вашей роли.

Вторым наиболее важным элементом для вашего случая является Среда, который позволяет вам определять переменные окружения.

И вы можете инициализировать переменную среды со значением параметра конфигурации, используя RoleInstanceValue элемент, который должен быть дочерним по значению.

О том, как создать XPATH для RoleInstanceValue, вы можете обратиться к Шпаргалка XPath.

Но в конце я спрошу вас, почему вы все еще разрабатываете WebRole вместо использования веб-приложений и планов обслуживания приложений, где вы можете управлять AppSettings и ConnectionStrings непосредственно в WebApp в Azure и полностью удалять их из web.config? Единственная очевидная причина для меня — использование сторонних API / Компонентов, которые не совместимы с веб-приложениями (например, требования к запуску установщика или использование COM-компонентов).

0

Другие решения

Других решений пока нет …