MODX + Windows Server. Есть ли жизнь?

Привет! Я человек который любит все странное и необычное. Иногда это сильно мешает мне в жизни, а иногда набираешься прикольного опыта в жизни.
Выбор не самых популярных вариантов обычно сулит тем, что ты начинаешь углублятся в какую-то дичь и главное не словить приход так таких вещей.

У меня есть пару северов на Linux которые держат какие-то проекты, vpn ну и всякую другую мелочь. Но если всех этих серверов у меня есть один сервер на Windows Server 2019 который используется для тестов, компиляции приложений на старом .NET Framework и прочее (у меня MacBook с 128гб памяти и мне очень больно держать локально Windows).
Впервые с проблемой инсталляции MODX на Windows я испытал тогда, когда у клиента сайт на Windows-shared хостинге и в целом там было все слишком плохо. Клиента я перевел на Linux-based хостинг, но с тех пор мне стало интересно завести связку MODX+IIS.

Как оказалось, в интернете вообще отсутствует какая-либо информация по сетапу modx+windows. Поэтому расскажу об этом я вам !:)

Рассказывать как поставить IIS вместе с PHP и MySQL я рассказывать не буду. Большое кол-во мануалов можно найти в сети по этому поводу, при том на разные версии ОС начиная от 2008, заканчивая 2019 и Server Core изданиями.Я перейду сразу к сути и сразу к подводным камням.

Итак, у нас есть Windows Server 2019, установленный IIS в роли веб-сервера и MODX.
Первое что я делаю — скачиваю актуальный MODX с GitHub.
Но перед тем как это сделать необходимо добавить PHP в PATH. Для этого в меню Пуск в поиске вбиваем «Система». Переходим в «Дополнительные параметры» -> «Переменные среды». Нажимаем «Создать». В окне необходимо указать путь до PHP. Приведите среду примерно вот к этому виду:



Далее необходимо скачать MODX в директорию с вашим сайтом. Для этого я открываю консоль в папке и делаю вызов:
git clone http://github.com/modxcms/revolution.git

В папке  _build переименую файлы build.config.sample и build.properties.sample на аналогичные без слова sample.
Т.к мы уже добавили PHP в наш PATH то можем вызвать в консоли следующую команду:
php transport.core.php




Далее происходит обычная и привычная нам установка MODX.

После установки мы видим вот такую картину:



Дело в том, что IIS не умеет в .htaccess и вместо этого у него немного другие правила, а именно web.config. Для того чтобы назначить новые правила необходимо попасть в оснастку настройки IIS сайтов. Нажмем «Пуск» и введем в поиске «iis». Открываем «Диспетчер служб IIS». Выглядит это примерно вот так:



В дереве в этой части нажимаем на «Сайты» и ищем наш домен.



Нажимаем на «Переопределения URL-адресов» и в открывшемся окне в правой части выбираем «Импортировать правила». Откроется вот такое окно.



Вставляем наш файл с правилами htaccess и видим следующее:



Для того чтобы исправить эту ошибку нам необходимо убрать RewriteBase /. По умолчанию web.config делает операцию которая равна RewriteBase /, следовательно мы ничего не потеряем :)

Ошибку «Файл конфигурации открыт для записи» исправляется очень легко:



Ставим галочку «Только чтение» для файла и вуаля :)
Еще было бы неплохо закрыть папку Core. Для этого вернемся к оснастке IIS и нажмем на папку Core, далее выберем «Переопределение URL-адресов» -> «Блокирование запроса». Выглядит форма вот так:



Сохраняем и радуемся!
Теперь у нас установлен MODX с работающими SEO-Friendly URL на IIS

Ну ок, а что по скорости?
Создадим файл speed.php в корне сайта с следующим содержимым: (тест предлогал как-то @Василий Наумкин)
<code class='code-multiline'><?php
define('MODX_API_MODE', true);
require 'index.php';

$pdo = $modx->getService('pdoTools');
$tpl = '@INLINE <p>[[+val1]] - [[+val2]] - [[+val3]]</p>';

$output = '';
for ($i = 0; $i <= 10000; $i ++) {
	$array = array('val1' => rand(), 'val2' => rand(), 'val3' => rand());
	$output .= $pdo->getChunk($tpl, $array);
}

echo '<pre>'; print_r($pdo->getTime()); echo '</pre>';
echo $output;</code>

После — вызовем данный сниппет и получим следующие результаты:
<code>0.0082650: Created inline "modChunk" with name "d9ad1bcdc5a530ed83598e35a1357e51"
0.1250980: Total time
2 097 152: Memory usage
</code>

Очень недурно как по мне.
Я буду продолжать тестировать связку MODX + Windows Server и держать вас в курсе новостей.

Будете пробовать делать такой сэтап?)

Всем хорошего настроения :)
Павел Бигель
25 сентября 2019, 17:38
modx.pro
1 834
+11
Поблагодарить автора Отправить деньги

Комментарии: 11

Василий Наумкин
25 сентября 2019, 17:50
+1
у меня MacBook с 128гб памяти и мне очень больно держать локально Windows
Полагаю, речь идёт про SSD и ноут у тебя MacBook Air около 2012+ года?

Если так, то на AliExpress можно купить за 200 рублей переходник с проприетарного Apple на нормальный M.2 и заменить SSD (только PCI-E). Я так недавно поставил жене 512 диск от Intel, очень хорошо работает.

Будете пробовать делать такой сэтап?)
Windows придумывался не для серверов, в отличие от Unix (Gnu/Linux). Там нет огромного количества нужных вещей, начиная хотя-бы с bash и пакетных менеджеров, и заканчивая правами доступа.

В игрушках и корпоративном сегменте ему равных нет, а вот интернет же совсем не его. И это при том, что на Windows Server требуется покупка лицензии.

Но за заметку «а в MODX еще и так можно», конечно, плюс.
    Павел Бигель
    25 сентября 2019, 17:58
    0
    Полагаю, речь идёт про SSD и ноут у тебя MacBook Air около 2012+ года?
    Не, у меня 2018. Думаю брать прошку 2019 уже с 512 на борту.

    Там нет огромного количества нужных вещей, начиная хотя-бы с bash
    Уже завезли :)
    заканчивая правами доступа
    Есть все это. Правда с без стакана не разберешься. Active Directory тот же решает эту проблему.

    Да и серверная Windows перестала быть чем-то ужасным. Server core издание прям такое же легкое как и unix-based системы, а еще и вместо NTFS завезли ReFs как файловую систему.
      Василий Наумкин
      25 сентября 2019, 18:08
      0
      Не, у меня 2018.
      Тогда да, не видать апгрейда, только продавать и новый покупать. С 2016 года там всё распаяно наглухо.

      Уже завезли :)
      Как у них там принято — сбоку приделали.

      Я попробовал, мне всё равно не зашло. Потому что в PhpStorm этого терминала нет, в своих каких-то локальных скриптах тоже непонятно как использовать.

      Это же, по сути, что-то вроде виртуалки, к которой примонтирован HDD Windows.

      Active Directory тот же решает эту проблему.
      Ага, поднимать свой домен, чтобы настроить права на локальном компе — умно.

      Да и серверная Windows перестала быть чем-то ужасным.
      А-ха-ха, её уже можно без рабочего стола использовать на компе с 256 ОЗУ и админить через SSH из коробки?

      Паш, ну не смеши мои тапочки, пожалуйста.
        Павел Бигель
        25 сентября 2019, 18:14
        0
        Потому что в PhpStorm этого терминала нет,
        Есть :)

        Это же, по сути, что-то вроде виртуалки, к которой примонтирован HDD Windows.
        Не-а. В Windows завезли POSTFIX. Все команды эмулируются, но не виртуализируются. Поэтому это не аля «виртуалка» и не «аля „докер“. Нативненько

        Ага, поднимать свой домен, чтобы настроить права на локальном компе — умно.
        А, ты про хоум решения. Тут да. Стандартные средства очень кастрированы.

        А-ха-ха, её уже можно без рабочего стола использовать на компе с 256 ОЗУ и одним SSH?
        Windows Server Core (как и IoT редакция) запускается на 256 мегабайтах и даже как и линукс умеет в ARM.

        Все реально не так плохо как ты думаешь :)
          Василий Наумкин
          25 сентября 2019, 18:29
          0
          Есть :)
          А, плагином, я и не догадался.

          POSTFIX
          Ты имеешь в виду POSIX? Но оно же всё равно не работает без установки Ubuntu?

          запускается на 256 мегабайтах
          Но рабочий стол-то на месте? Что про администрирование через SSH?

          Все реально не так плохо как ты думаешь :)
          Вполне возможно.

          Но зачем мне покупать что-то «не так плохо», когда у меня уже давно всё есть и бесплатно? Где мега-плюсы Windows для хостинга веб-сайтов?

          P.S.
          Я не хейтер Windows и честно пару раз в месяц пытаюсь перейти обратно для работы, просто потому, что я там могу насобирать мощнейший комп — но не получается слезть с MacOS.
            Павел Бигель
            25 сентября 2019, 18:38
            +1
            равно не работает без установки Ubuntu?
            Пока нет. Обещают сделать из коробки в следующем году.

            Но рабочий стол-то на месте? Что про администрирование через SSH?
            В Core издании нет рабочего стола и она ещё бесплатная. Про SSH не скажу, не знаю
            Но кросспeлатформенный PowerShell завезли.

            но не получается слезть с MacOS.
            Плюсую.
            Хотя для обывателя, не программиста грани потиру стираются между системами.
      Павел Бигель
      25 сентября 2019, 17:59
      0
      Да и как видишь, по тесту решение не самое плохое как оказалось.
      Правда неизвестно вылезут ли еще какие-то косяки.
        Alexey T
        26 сентября 2019, 10:19
        +2
        Windows придумывался не для серверов, в отличие от Unix (Gnu/Linux). Там нет огромного количества нужных вещей, начиная хотя-бы с bash и пакетных менеджеров, и заканчивая правами доступа
        Windows, конечно, это — боль, но в десятке есть возможность ее смягчить при помощи WSL, ставишь wsl ubuntu или другую систему, накатываешь в нее все, что нужно от php до node.js, причем можно сделать в конфигурации аналогичной продакшену и работаешь. В директории проекта, в строке проводника пишешь wsl и открывается bash.
        А в настройках терминала PhpStorm вместо командной строки виндоус можно прописать: C:\Windows\System32\wsl.exe и будет совсем неплохо.
          Алексей Соин
          26 сентября 2019, 14:05
          0
          еще можно в командной строке windows написать команду
          bash
          и запустится баш консоль от wsl
            Алексей Соин
            26 сентября 2019, 14:07
            0
            кстати, вдруг кому будет нужно, чтобы в wsl открыть папку расположенную на локальном диске нужно перейти в /mnt/ и там будут примонтированы соответствующие локальные диски C D и т.д.
        Павел Бигель
        25 сентября 2019, 19:35
        0
        А вот кстати MODX + Windows Server + SQL Server сетап гораздо сложнее.
        Сложнее в основном в том плане, что некоторые компоненты используют raw запросы которые в SQL Server и MySQL несколько разные (имхо в SQL Server они проще).
        Да и SQL Server бесплатная только до 1 ГБ. Хотя и увеличение производительности есть.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          11