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 в директорию с вашим сайтом. Для этого я открываю консоль в папке и делаю вызов:
В папке _build переименую файлы build.config.sample и build.properties.sample на аналогичные без слова sample.
Т.к мы уже добавили PHP в наш PATH то можем вызвать в консоли следующую команду:
Далее происходит обычная и привычная нам установка 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 в корне сайта с следующим содержимым: (тест предлогал как-то @Василий Наумкин)
После — вызовем данный сниппет и получим следующие результаты:
Очень недурно как по мне.
Я буду продолжать тестировать связку MODX + Windows Server и держать вас в курсе новостей.
Будете пробовать делать такой сэтап?)
Всем хорошего настроения :)
Выбор не самых популярных вариантов обычно сулит тем, что ты начинаешь углублятся в какую-то дичь и главное не словить приход так таких вещей.
У меня есть пару северов на Linux которые держат какие-то проекты, vpn ну и всякую другую мелочь. Но если всех этих серверов у меня есть один сервер на Windows Server 2019 который используется для тестов, компиляции приложений на старом .NET Framework и прочее (у меня MacBook с 128гб памяти и мне очень больно держать локально Windows).
Как оказалось, в интернете вообще отсутствует какая-либо информация по сетапу 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 и держать вас в курсе новостей.
Будете пробовать делать такой сэтап?)
Всем хорошего настроения :)
Поблагодарить автора
Отправить деньги
Комментарии: 11
у меня 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 еще и так можно», конечно, плюс.
Полагаю, речь идёт про SSD и ноут у тебя MacBook Air около 2012+ года?Не, у меня 2018. Думаю брать прошку 2019 уже с 512 на борту.
Там нет огромного количества нужных вещей, начиная хотя-бы с bashУже завезли :)
заканчивая правами доступаЕсть все это. Правда с без стакана не разберешься. Active Directory тот же решает эту проблему.
Да и серверная Windows перестала быть чем-то ужасным. Server core издание прям такое же легкое как и unix-based системы, а еще и вместо NTFS завезли ReFs как файловую систему.
Не, у меня 2018.Тогда да, не видать апгрейда, только продавать и новый покупать. С 2016 года там всё распаяно наглухо.
Уже завезли :)Как у них там принято — сбоку приделали.
Я попробовал, мне всё равно не зашло. Потому что в PhpStorm этого терминала нет, в своих каких-то локальных скриптах тоже непонятно как использовать.
Это же, по сути, что-то вроде виртуалки, к которой примонтирован HDD Windows.
Active Directory тот же решает эту проблему.Ага, поднимать свой домен, чтобы настроить права на локальном компе — умно.
Да и серверная Windows перестала быть чем-то ужасным.А-ха-ха, её уже можно без рабочего стола использовать на компе с 256 ОЗУ и админить через SSH из коробки?
Паш, ну не смеши мои тапочки, пожалуйста.
Потому что в PhpStorm этого терминала нет,Есть :)
Это же, по сути, что-то вроде виртуалки, к которой примонтирован HDD Windows.Не-а. В Windows завезли POSTFIX. Все команды эмулируются, но не виртуализируются. Поэтому это не аля «виртуалка» и не «аля „докер“. Нативненько
Ага, поднимать свой домен, чтобы настроить права на локальном компе — умно.А, ты про хоум решения. Тут да. Стандартные средства очень кастрированы.
А-ха-ха, её уже можно без рабочего стола использовать на компе с 256 ОЗУ и одним SSH?Windows Server Core (как и IoT редакция) запускается на 256 мегабайтах и даже как и линукс умеет в ARM.
Все реально не так плохо как ты думаешь :)
Есть :)А, плагином, я и не догадался.
POSTFIXТы имеешь в виду POSIX? Но оно же всё равно не работает без установки Ubuntu?
запускается на 256 мегабайтахНо рабочий стол-то на месте? Что про администрирование через SSH?
Все реально не так плохо как ты думаешь :)Вполне возможно.
Но зачем мне покупать что-то «не так плохо», когда у меня уже давно всё есть и бесплатно? Где мега-плюсы Windows для хостинга веб-сайтов?
P.S.
Я не хейтер Windows и честно пару раз в месяц пытаюсь перейти обратно для работы, просто потому, что я там могу насобирать мощнейший комп — но не получается слезть с MacOS.
равно не работает без установки Ubuntu?Пока нет. Обещают сделать из коробки в следующем году.
Но рабочий стол-то на месте? Что про администрирование через SSH?В Core издании нет рабочего стола и она ещё бесплатная. Про SSH не скажу, не знаю
Но кросспeлатформенный PowerShell завезли.
но не получается слезть с MacOS.Плюсую.
Хотя для обывателя, не программиста грани потиру стираются между системами.
Да и как видишь, по тесту решение не самое плохое как оказалось.
Правда неизвестно вылезут ли еще какие-то косяки.
Правда неизвестно вылезут ли еще какие-то косяки.
Windows придумывался не для серверов, в отличие от Unix (Gnu/Linux). Там нет огромного количества нужных вещей, начиная хотя-бы с bash и пакетных менеджеров, и заканчивая правами доступаWindows, конечно, это — боль, но в десятке есть возможность ее смягчить при помощи WSL, ставишь wsl ubuntu или другую систему, накатываешь в нее все, что нужно от php до node.js, причем можно сделать в конфигурации аналогичной продакшену и работаешь. В директории проекта, в строке проводника пишешь wsl и открывается bash.
А в настройках терминала PhpStorm вместо командной строки виндоус можно прописать: C:\Windows\System32\wsl.exe и будет совсем неплохо.
еще можно в командной строке windows написать команду
bash
и запустится баш консоль от wsl
кстати, вдруг кому будет нужно, чтобы в wsl открыть папку расположенную на локальном диске нужно перейти в /mnt/ и там будут примонтированы соответствующие локальные диски C D и т.д.
А вот кстати MODX + Windows Server + SQL Server сетап гораздо сложнее.
Сложнее в основном в том плане, что некоторые компоненты используют raw запросы которые в SQL Server и MySQL несколько разные (имхо в SQL Server они проще).
Да и SQL Server бесплатная только до 1 ГБ. Хотя и увеличение производительности есть.
Сложнее в основном в том плане, что некоторые компоненты используют raw запросы которые в SQL Server и MySQL несколько разные (имхо в SQL Server они проще).
Да и SQL Server бесплатная только до 1 ГБ. Хотя и увеличение производительности есть.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.