Сайт Coldbox через внутренний сервер CommandBox, возвращающий переменную, отличную от того же сайта serverd из IIS - PullRequest
2 голосов
/ 09 февраля 2020

Я только начинаю изучать ColdBox и только что прошел Быстрый старт (https://coldbox.ortusbooks.com/getting-started/getting-started-guide) и добавил #getSetting ("APPNAME") # в hello.index

Используя CommandBox «start server» на моем компьютере разработчика, он запускает свой внутренний сервер через порт 55700 (который не может выйти из брандмауэра), и я получаю ожидаемый вывод (см. Первое изображение), в котором он извлекает APPNAME из .env file

Используя мою обычную настройку, в которой все серверы IIS обслуживаются на порте 80 или 443), APPNAME исходит из config / Coldbox.cf c (см. 2-е изображение).

Несмотря на то, что все страницы отрисовываются через IIS (даже если я делаю «остановку сервера») в CommandBox, переменные кажутся неправильными.

Кто-нибудь сталкивался с этим или знает, что я делаю неправильно?

Код этой страницы на обоих скриншотах

<cfoutput>
<h1>hello.index</h1>
#now()#
<div class="alert alert-danger">#getSetting("APPNAME")#</div>
<div class="alert alert-success">#getSetting("ENVIRONMENT")#</div>
<cfdump var="#application#" expand="false">
</cfoutput>

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Используя CommandBox «start server» на моем компьютере разработчика, он запускает свой внутренний сервер через порт 55700 (который не может выйти из брандмауэра)

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

, и я получаю ожидаемый результат (см. Первый изображение), в котором он извлекает APPNAME из файла .env

ColdBox не имеет такой встроенной функции для извлечения имени приложения из файла .env. На самом деле Coldbox НИЧЕГО не вытаскивает из файла .env из коробки. Теперь есть различные модули Coldbox и CommandBox или ручные фрагменты кода, которые могут загружать настройки из файла .env, но вы не упомянули об их использовании и не показали свой код.

Используя мою типичную настройку на всех серверах IIS все обслуживается через порт 80 или 443)

Прошу прощения за наше невежество, но никто здесь не знает, какова ваша типичная установка. Используете ли вы IIS для прокси на веб-сервере CommandBox через порты HTTP или AJP? У вас есть другая установка Lucee, установленная другим способом?

APPNAME исходит из config / Coldbox.cf c (см. 2-е изображение).

Имя приложения всегда происходит из ColdBox.cf c, если только вы настроили что-то явно, чтобы заставить это делать иначе. Если у вас есть что-то, что, по вашему мнению, должно загружать имя приложения из другого места, поделитесь этой частью своего кода / настройки.

Несмотря на то, что все страницы отображаются через IIS (даже если я делаю «остановку сервера») в CommandBox,

Опять же, как настроен ваш сервер? Вы упомянули об остановке CommandBox. У вас работает более одного сервера CommandBox? Ты бьешь того, кого ожидаешь? Если это сайт, обслуживаемый через IIS, он даже не связан с CommandBox?

переменные, похоже, не верны.

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

Кто-нибудь сталкивался с этим или знает, что я делаю неправильно?

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

И чтобы ответить на пару ваших вопросов в комментариях ...

И в будущем мне нужно установить CommandBox на рабочем сервере?

Только если вы хотите использовать CommandBox для размещения сайта. Нет никакой корреляции или требования для сайта ColdBox для запуска на CommandBox. CommandBox - это просто CLI, который позволяет очень легко запускать и останавливать CF-серверы (среди прочего). Многие люди размещают производственные сайты на CommandBox, но это вовсе не является обязательным требованием.

Мне бы хотелось, чтобы этот сайт работал так же, как и все другие сайты CF на сервере, хотя этот быть единственным, кто является Coldbox.

В сайте ColdBox нет ничего особенного - он работает как любое другое приложение ColdFusion. Я подозреваю, что вы запутались, думая, что CommandBox является своего рода требованием. Многие люди используют CommandBox для локальной разработки, потому что это быстро и легко, а затем развертывают на «традиционной» установке ColdFusion или Lucee на производстве просто из привычного знакомства.

Отказ от ответственности: я ведущий разработчик CommandBox и сторонник ColdBox MVC.

0 голосов
/ 10 февраля 2020

Убедитесь, что вы используете тот же веб-контекст: на первом изображении вы получаете доступ к 127.0.0.1, на втором - полное доменное имя. Это будет работать в том же контексте, только если вы определите его как псевдоним на уровне конфигурации хоста сервлета. Перепроверьте AccessLogs, если возможно, веб-текст одинаково поражен вашим клиентом.

...