XAMPP или OpenServer?

Когда разрабатываешь что-то для интернета, то без локального сервера не обойтись.  Поставить руками сервер Apache, интерпретатор PHP и базу MySQL легко, но вот настроить их довольно сложно даже по подробному мануалу. А уж поддерживать и ставить новые версии компонентов вообще довольно заморочно.

Поэтому за бугром есть куча сборок для Windows, одна из которых называется XAMPP. А для русскоговорящих долгое время эталоном сервера для разработки была сборка Denwer, которая уже лет 5 не обновляется.  Разные энтузиасты создавали проекты со своим видением такой сборки (EleanorServer, Endel), но со временем эти проекты умирали. Фактически остался OpenServer, который создал и поддерживает Максим Архипов.

Сравнение XAMPP и OpenServer

Если сравнивать XAMPP с OpenServer, то у каждого проекта есть свои плюсы и минусы.

XAMPP — это практически «голый» сервер, где нужно владеть азами знаний Apache, чтобы подстроить  его под себя, создать руками виртуальные хосты. Зато работает он быстро и наиболее близок к нормальному хостингу. В последних версиях даже сделали заглушку для тестирования отправки почты, что часто требуется при создания всяких форм обратной связи.

OpenServer более автоматизированная сборка для разработки. К ней еще идут дополнительно программы в расширенном пакете, которые работают без инсталляции. А управлением сервером сделано из своей оболочки, которая позволяет автоматически создавать виртуальные хосты для отдельных сайтов, настраивать сервер под себя без лазанья в кучи конфигов. Однако запускается он существенно дольше, да и работает он тоже медленнее XAMPP (и то, и другое обычно не критично для разработки).

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

Очень много людей ушли именно с Denwer на XAMPP именно из-за того, что конфиги часто были не оптимальны и генерировались скриптами «на лету», так что править косяки было очень сложно и вместо работы, нужно было «раскапывать» проблемы.

Проблемы OpenServer, мешающие жить

Вот и я на днях столкнулся с такой же проблемой: на OpenServer неправильно работал движокKodiCMS Павла Бучнева (недавно статья была о этом движке даже на habrahabr.ru). И косяк был в том, что для работы с требовался не только обработка обработка запросов GET/POST, но и PUT, DELETE. Ошибка не сразу выяснилась, но даже когда я её обнаружил к консоли и пошел искать решение, его не обнаружилось даже на форуме сборки. Нет, топик был и есть, вот только решения не подходило. Максим писал, что это типа защита от взлома (на локальном сервере, на локальной машине ?!).

Поскольку я еще изучаю Laravel, там тоже есть такие запросы (хотя я до них еще не добрался), так что проблема есть и её надо решать.

В XAMPP это все прекрасно работает «из коробки».

Понятно, если бы я был «гуру» в Apache, я бы разобрался что и где подписать/подправить, но я такими знаниями не обладаю, поэтому мне проще сменить сборку.

Ну и не зря я уже писал о настройки OpenServer и PHPStorm из-за путей конфигов в предыдущих статья.

Так что все эти проблемы привели меня опять к XAMPP, которым я пользуюсь от случая к случаю.

Какую версию XAMPP ставить.

Для пользователя Windows предлагается только один инсталлятор на 32 бита. А вот версий предлагается 2: 1.8.3 с php 5.5 и 1.8.2  c php 5.4. Особой разнице вроде бы нет, так что я ставил последнюю версию.

И вот тут-то меня подстерегала большая птица ОБЛОМИНГА! Сервер ставился, сайты работали. Вот только страницы генерировались В РАЗЫ МЕДЛЕННЕЕ, чем на OpenServer.

«Ты же только что говорил, что XAMPP быстрее OpenServer?» — спросит меня внимательный читатель. Отвечаю: я сам был в шоке и искал причину в конфигах Apache, php, Windows. Но так я и не понял в чем дело.

Тогда я взял версию 1.8.2. и все стало просто летать! Так что новое не всегда лучше, чем проверенное старое 🙂

Да, еще хотел бы сказать о интересной особенности Apache, который я откопал случайно.

Параметр DocumentRoot в сервер Apache

При создании виртуального хоста, в httpd.conf прописывается DocumentRoot, где хранятся все хосты физически.  Казалось бы, такая незаметная настройка, но вот если попробовать в сервере прописать виртуальный хост не в этой директории, то он работать не будет. От слова совсем!

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

Так что если вы хотите создать для себя отдельную папку для сайтов где-нибудь в корне, как это сделано в OpenServer, то либо экспериментируйте с этой настройкой. Либо делайте как я:

  1. В парпе XAMPP/httdocs я создал папку localhost и перенес туда все файлы с папками из этой папки.
  2. Хосты создаю в папке XAMPP/httdocs в отдельных папках
  3. Прописываю названия в файле host в c:\windows\system32\drivers\etc
  4. А в настройках апача смотрим xampp\apache\conf\extra\httpd-vhosts.conf раскоментируем пример хоста и сначала создаю localhost, а потом уже копирую и добавляю свой хост. Получается что-то такое:
<virtualhost :80="">
    ServerAdmin jean179@mail.ru
    DocumentRoot "D:/xampp/htdocs/localhost"
    ServerName localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</virtualhost>
 
 
<virtualhost :80="">
    ServerAdmin jean179@mail.ru
    DocumentRoot "D:/xampp/htdocs/ kodi.dev"
    ServerName kodi.dev
    ErrorLog "logs/ kodi.dev-error.log"
    CustomLog "logs/ kodi.dev-access.log" common
</virtualhost>

Таким образом я полностью контролирую создание виртуальных хостов, все настройки стандартны и понятно где их искать. А каждый сайт лежит в своей папке и для резервного копирования легко можно настроить архивацию на конкретную папку.

Заключение.

Таким образом, сейчас я перешел на XAMPP версии 1.8.2 и спокойно буду на ней сидеть еще долго. А на более новую версию перейду когда поправят ошибки. Ну или когда допилят OpenServer

Ссылка на основную публикацию