Статьи

Джентльменський набір web-розробника ( "Денвер"): інтерв'ю з творцем

На запитання редакції відповідає Дмитро Котеров, автор системи «Денвер» ( http://denwer.ru ), Співзасновник і керівник розробки проекту http://moikrug.ru (Компанія Яндекс), автор книг «PHP5» і «Самовчитель PHP4».

КомпьютерПресс: Доброго дня, Дмитро КомпьютерПресс: Доброго дня, Дмитро! Розкажіть нашим читачам, що таке «Денвер».

Дмитро Котеров: Джентльменський набір web-розробника ( «Д.н.w.р», читається як «Денвер») - це набір дистрибутивів (Apache, PHP, MySQL, Perl і т.д.) і програмна оболонка, використовувані web- розробниками (програмістами і дизайнерами) для налагодження сайтів на «домашній" (локальній) Windows-машині без необхідності виходу в Інтернет. «Денвер» в основному застосовується там, де ведеться одночасна робота над декількома незалежними проектами - наприклад в web-студіях.

На даний момент проект має тільки російську локалізацію і відомий лише в Росії. Система дуже популярна: в країні кожен день близько 300 осіб інсталюють «Денвер» на ту чи іншу машину.

КП: Яка історія створення «Денвера»?

Д.К .: Я професійно зацікавився web-програмуванням в 1999 році. У ті часи ще були популярні ОС Windows 95 і 98, в Інтернет заходили по модему, а мобільні телефони мали лічені одиниці.

Ми збирали команду, і всім потрібно було налаштовувати зручне середовище для віддаленої роботи над сайтами, які в подальшому викладалися в Інтернет. Я виявив, що розібратися з установкою і конфігурацією Apache, PHP3, Perl, MySQL може (а головне, хоче) далеко не кожен, тому люди починають працювати неефективно - аж до того, що для перевірки зовнішнього вигляду сторінки закачують її по модему (через FTP ) до хостинг-провайдеру і по 20 секунд чекають завершення всіх цих операцій.

У Рунеті до той час не було жодної скільки-небудь простий публікації, що містить опис процесу установки по кроках, тому я вирішив заповнити цю прогалину. Стаття називалася «Apache + Perl + PHP3 + MySQL для Windows 95/98: керівництво по установці», і зовсім несподівано для мене вона раптом стала дуже популярною. Тисячі сайтів копіювали її текст на свої сторінки (іноді навіть без вказівки авторства). З'явилося також безліч сторонніх «варіацій на тему». До речі, ця публікація досі входить в п'ятірку найпопулярніших сторінок сайту http://dklab.ru, хоча інформація в ній давно застаріла.

За три роки після публікації статті я відповів на близько 3 тис. Листів читачів, сама стаття теж допрацьовувалася вже всоте. Це був чудовий час! Але, на жаль, поступово я перестав справлятися з потоком листів (а більшість з них були однотипні). Крім того, стаття розросталася, а значить, ставала все складніше і складніше, що прямо суперечило її змістом - дати простому розробнику можливість легко конфігурувати необхідні йому інструменти. Я зрозумів, що багато процесів, описані в ній, можна автоматизувати, одночасно убивши двох зайців: допомогти користувачеві швидко встановити все необхідне на свою машину і зменшити потік листів. Так зародилася ідея «Денвера».

КП: Як виглядала найперша версія «Денвера»?

Д.К .: Приблизно півроку «Денвер» представляв собою звичайний zip-архів розміром близько 1,5 Мбайт, що включає урізані версії Apache, Perl, PHP, MySQL і phpMyAdmin, а також скрипти на Perl для підтримки спільного запуску / зупинки компонентів і роботи з декількома віртуальними хостами одночасно. Його можна було скопіювати в довільну директорію на диску і відразу ж почати працювати (виявилося, що всі компоненти системи можливо настроїти так, щоб вони функціонували тільки з відносними файловими шляхами).

15 березня 2002 року побачила перша офіційна версія «Денвера». У ній вже був найпростіший інсталятор (до речі, залишився практично незмінним до сих пір), який тільки те й робив, що копіював файли туди, куди йому вкаже користувач, а також пропонував додати ярлики в «Автозавантаження» для більш зручного запуску «Денвера».

У ній вже був найпростіший інсталятор (до речі, залишився практично незмінним до сих пір), який тільки те й робив, що копіював файли туди, куди йому вкаже користувач, а також пропонував додати ярлики в «Автозавантаження» для більш зручного запуску «Денвера»

КП: Є думка, що розроблювач повинен вміти сам конфігурувати систему, з якої працює. Як ви до цього ставитеся?

Д.К .: Щоб відповістити на дане запитання, потрібно спочатку розвіяти одну поширену помилку. Як показують мої спостереження, люди, знайомі з «Денвером», діляться на два табори: одні розуміють, що це таке, а інші - ні. Перші «Денвер», зазвичай, використовують. Другі ж займають таку позицію: «Денвер» шкідливий, тому що програміст повинен розбиратися в настройках компонентів самостійно, і навіть мати свободу в їх виборі.

На щастя, друга точка зору в дійсності не має до «Денвер» ніякого відношення. Справа в тому, що, всупереч існуючій думці, «Денвер» не обмежує розробника ні у виборі компонентів, ні в їх налаштування. Ви можете в будь-який момент оновити PHP або відредагувати httpd.conf тому, як звикли до цього. Система лише надає програмісту настройки за замовчуванням, які свідомо працюють, і з них можна починати.

Професійні програмісти, що використовують «Денвер» в роботі, звичайно ж, змінюють його конфігурацію нітрохи не менше, ніж це роблять ті, хто ставить компоненти «вручну». Більш того, «Денвер» всіляко стимулює користувача до того, щоб він щось змінював в ньому самостійно. Всі основні компоненти системи можуть бути оновлені зі своїх вихідних дистрибутивів просто методом «копіювання поверх». Це Щодо PHP, Apache, MySQL ...

КП: У чому ключові відмінності «Денвера» від аналогів?

Д.К .: Найголовніша особливість «Денвера» - це те, що він являє собою не тільки набір дистрибутивів, але і програмну оболонку, яка спрощує роботу з декількома проектами одночасно. Проекти можуть бути незалежні і розташовані на різних віртуальних хостах, кожен з яких має власну директорію документів. Така схема особливо корисна web-студіям, провідним паралельну розробку відразу декількох сайтів.

Дуже важлива принципова простота процедури закладу нового проекту. Ви просто створюєте директорію з ім'ям проекту / home / ІмяПроекта / www, після чого перезапускаєте «Денвер» і отримуєте віртуальний хост з ім'ям http: // ІмяПроекта. Видаляєте директорію - видаляється і віртуальний хост, як ніби його й не було. Якщо в CVS-репозиторії вашої студії кілька сотень сайтів і ви періодично працюєте з деякими з них, то з використанням «Денвера» процес «розгортання» сайту з CVS стає для вас надзвичайно легким.

Для кожного проекту в / home «Денвер» використовує окремий віртуальний хост, причому правила іменування нежорсткі і можуть бути змінені користувачем у файлі httpd.conf. А саме - «Денвер» використовує один з віртуальних хостів httpd.conf як шаблон, за яким будуються всі інші віртуальні хости. Правила побудови детально задокументовані і дуже прості (наприклад, конструкція $ & в шаблоні замінюється на шлях до директорії документів проекту, а конструкція% & - на повне ім'я віртуального хоста). Різні хостинг-провайдери мають різну схему розташування файлів в / home, і в «Денвер» вже включені інструкції для пошуку по п'яти найбільш популярним схемами (задається в httpd.conf). наприклад,

DocumentRootMatch "/home/(?!cgi)(.*)/public_html"

DocumentRootMatch "/var/www/html/(?!cgi)(.*)/(?!cgi)(.*)"

змушує «Денвер» шукати проекти в директорії / home або / var / www / html, не враховуючи при цьому імена CGI-директорій (нові інструкції також можуть бути додані користувачем). Той, хто знайомий з регулярними виразами, повинен легко зрозуміти ці правила.

УТ: Останнім часом все більшої популярності набувають так звані мобільні додатки, які людина носить з собою на флеш-накопичувачі. Це дуже зручно: можна вставити його в будь-яку машину і відразу ж почати працювати. Чи можлива робота «Денвера» в такому режимі?

Д.К .: Да, конечно. Дві найбільш цікаві особливості «Денвера» - це його незначний обсяг (близько 3 Мбайт) і повна автономність. Іншими словами, «Денвер» нічого не змінює в системі поза своєю директорії (за винятком хіба що файлу hosts, який повідомляє Windows про зареєстрованих віртуальних хостах), а його директорія може бути розташована на диску в будь-якому місці - він все одно запуститься. Зокрема, можна запускати «Денвер» з флеш-накопичувача.

Більш того, можна навіть встановити два «Денвера» в різні директорії, і вони не будуть конфліктувати! Правда, якщо ви хочете запускати їх одночасно, а не по черзі, доведеться поміняти порт Apache з 80 на 81 (щоб виключити можливість конфліктів). Це робиться в httpd.conf.

КП: А ви використаєте «Денвер» у своїй роботі?

Д.К .: Звичайно, адже в ньому підтримується зручна робота з безліччю проектів, а також з-за його автономності та мобільності. Взагалі, у мене встановлено чотири копії «Денвера»: один - для роботи, другий - для авторських проектів http://dklab.ru, http://orphus.ru і т.д., третій - оцінний (той що викладається на офіційний сайт), а четвертий - для предрелізний тестування пакетів розширень.

КП: Опишіть, будь ласка, особливості використання «Денвера» в команді з декількох розробників. Чи можливо це взагалі?

Д.К .: Не просто можливо, а навіть рекомендується! Денвер для того і створювався, щоб кожен програміст міг працювати з власної копією сайту, синхронізуючи зміни з іншими членами команди за допомогою CVS або Subversion.

Однак базу даних проекту, над яким йде спільна робота, зручно тримати все-таки в єдиному екземплярі. Це пов'язано з тим, що зміни в схемі бази даних набагато важче версіонізіровать, і кожен розробник просто фізично не зможе займатися відстеженням змін в базі.

Таким чином, в команді з декількох розробників зручно застосовувати наступну схему:

  • єдина база даних проекту, доступна кожному розробнику по мережі;
  • для кожного розробника встановлена ​​власна копія «Денвера» з файлами проекту;
  • файли проекту синхронізуються між різними розробниками з використанням CVS або Subversion.

Звичайно, якщо ви працюєте віддалено, доступ до єдиної бази даних по мережі буде віднімати чимало часу, що ускладнює розробку. У цьому (і тільки це) випадку можна все-таки розглянути можливість використання кожним розробником власної копії бази даних (для налагодження), але тоді треба застосовувати будь-які інструменти для автоматичного відстеження змін в структурі БД.

КП: Чи можна застосовувати «Денвер» в якості web-сервера в своїй локальній мережі? Розмістити на ньому домашню сторінку, наприклад?

Д.К .: Я негативно ставлюся до використання системи таким чином. Все-таки «Денвер» - це інструмент розробки, а не засіб створення хостингу. Справа ще й у тому, що ОС Windows погано пристосована для хостингу із застосуванням Apache, PHP, MySQL. До того ж «Денвер» запускається з правами адміністратора машини (хоча передбачена можливість запускати його зі зниженими привілеями), а тому найменша вразливість в сайті, відкритому «назовні», ставить під загрозу безпеку всієї машини. З огляду на все це, за замовчуванням «Денвер» доступний тільки з тієї машини, де він встановлений, і відкрити локальний сайт для загального перегляду без додаткових налаштувань можна.

КП: Що планується в майбутніх версіях «Денвера»?

Д.К .: Планів дуже багато. Найважливіший з них - вихід проекту за межі Рунета, тобто англійська локалізація системи. У нові версії буде також додано підтримку SSL, оновлені всі основні компоненти (Apache 2.2, PHP5, MySQL5 і т.д.). Ймовірно, з'явиться графічний (зовні більш привабливий) інсталятор. Крім того, ведуться роботи (правда, дуже уповільнені) в напрямку покращення захисту хостинг-сервера на базі «Денвера». Це пов'язано з бажанням користувачів використовувати платформу Apache + PHP на своїх Windows-машинах в районних мережах.

КП: А коли користувачам очікувати чергового оновлення «Денвера», адже в поточному збірці навіть основні компоненти (Apache, PHP, MySQL, phpMyAdmin і т.д.) вже застаріли?

Д.К .: Чергове серйозне оновлення планується на середину-кінець жовтня. Однак я б ще раз хотів підкреслити дві речі. По-перше, «Денвер» - це інструмент розробки, тому постійна актуальність компонентів для нього може бути навіть шкідлива. Адже у хостинг-провайдерів, на яких будуть працювати результуючі сайти, оновлення програмного забезпечення відбувається досить повільно і одна з найважливіших завдань програміста - змусити працювати сайт навіть на старих версіях PHP і MySQL. По-друге, якщо вам все ж потрібна остання версія якогось з компонентів (наприклад, PHP або MySQL), ви можете просто завантажити офіційний дистрибутив і розгорнути його поверх в відповідну директорію в рамках «Денвера». (Перед цим про всяк випадок зробіть бекап). Загалом, ми свідомо не женемося в «Денвері» за найостаннішими версіями компонентів, так як це в цілому не корисно для процесу розробки.

КП: Чи з'явиться версія «Денвера» для Linux?

Д.К .: Що стосується виходу «Денвера" для Linux, то я не думаю, що це коли-небудь станеться. «Денвер» - це перш за все інструмент розробки, а моя думка полягає в тому, що для розробки самої зручною платформою є Windows (для неї набагато більше інших інструментів і утиліт).

До речі, я хотів би утримати зараз читача від вигуку: «Та в Linux і так все є, поставив пакети з RPM - ось тобі і Apache, і PHP, і MySQL!» Ця думка невірно і виникає з нерозуміння того, чим же є « Денвер "насправді. Названі компоненти ви, звичайно ж, таким способом встановіть, але при цьому ви не отримаєте:

  • їх зв'язну конфігурацію (з обходом всіх підводних каменів);
  • систему управління віртуальними хостами і роботи з безліччю проектів;
  • автономність і незалежність системи (ви не зможете, наприклад, легко запустити на одній машині два «саморобних" Денвера "» відразу, а також записати його на флеш-накопичувач).

УТ: Чи стане «Денвер» з часом платним або назавжди залишиться відкритим проектом?

Д.К .: Для користувачів з Росії «Денвер» буде залишатися безкоштовним, а що стосується інших країн, то питання поки відкрите ...

КП: Чи використовується «Денвер» при роботі над сервісом «МойКруг» компанії «Яндекс»?

Д.К .: Так, використовується, хоча і далеко не всіма розробниками. Хтось звик працювати в Windows, а хтось - в Linux або навіть в Mac OS. У нас досить вільні умови по вибору інструментарію: для мене головне, щоб програміст стикався з мінімумом рутинної роботи.

До речі, «МойКруг» постійно розширюється, тому я все ще сподіваюся залучити талановитих PHP-програмістів в свою команду розробки. Робота дуже цікава, творча, планів і хороших ідей маса. «МойКруг» - це найбільша в Росії соціальна мережа для пошуку і підтримки ділових контактів, і у проекту вражаючі перспективи (я вважаю, що «серйозна сторона» людської натури ніколи не перестане цікавити людей). До того ж «Яндекс» забезпечує пристойну заробітну плату і комфортні умови праці, так що якщо когось це зацікавить, то можна залишити заявку за адресою: http://moikrug.ru/hire/ .

Пакет «Денвер» можна взяти з доданого до журналу CD або скачати з сайту http://www.denwer.ru (На час виходу журналу на сайті можуть з'явитися вже свіжіші версії).

КомпьютерПресс 10'2007


Як ви до цього ставитеся?
Чи можлива робота «Денвера» в такому режимі?
Чи можливо це взагалі?
Розмістити на ньому домашню сторінку, наприклад?

Новости