УрокИнструментарий web-разработчика. Организация работы с сайтами.

Сегодня я немного отойду от темы Друпала и расскажу про то, чем я пользуюсь при разработке сайтов; про утилиты и приёмы, которые ускоряют и облегчают работу над сайтами. Итак, по порядку.

Локальный веб сервер

Безусловно, вести разработку локально гораздо удобнее, чем удалённо. А для этого необходимо иметь на компьютере развёрнутый веб сервер. Администратор из меня не ахти какой выдающийся, поэтому я предпочитаю использовать сборки. Которых, кстати, более чем хватает для всех моих нужд. Самая первая сборка, с которой я познакомился, это Denwer. Она довольна проста в установке и имеет ряд преимуществ:

  • Небольшой размер
  • Быстрая и простая установка
  • Автоматически ставится Zend Optimizer, что несколько ускоряет работу сервера.
  • Так же из коробки ставится эмулятор мэйл сервера, который позволяет "отправлять" емейлы. На самом же деле они закидываются в папку на сервере в виде текстовых файлов вместе с заголовками и содержимым емейла. Очень удобно.

Но и есть один серьёзный недостаток - сервер получается неполноценным. Отсутствует множество библиотек и дополнений, которые придётся ставить самому. Например, даже широко используемый cURL придётся скачивать и ставить самому.

Подытожим: Denwer хороший веб сервер для новичков. Вам не надо заботиться об установке сервера и его настройке - это сделано за вас. Однако при более серьёзных разработках придётся искать что-то посерьёзнее. Кстати, работает только под виндой ;)

Следущий веб сервер, к которому я перешёл (и который в большинстве случаев использую по сей день) - это XAMPP. Полноценный веб сервер, даже с дополнительными аддонами. Не сложен в установке. Включает в себя основной набор php библиотек для разработки. Покрутив немного настройки php и mysql можно сделать вполне себе шустрый веб сервер.

Из недостатков - включает в себя довольно сложно настраиваемый почтовый сервер, в котором не каждый разберётся.

XAMPP - веб сервер, который придётся немного покрутить, но оно того стоит. Кстати, кроссплатформенный, поэтому можно им пользоваться на любой ОС. Я им пользовался больше года и с большего был доволен результатами.

Ещё один продукт, на который советую обратить внимание - это разработка компании Acquia (для тех, кто в танке - фирма создателя Друпала). Они предлагают ставить Друпал на их Dev Desktop. Стоит отметить, что этот веб сервер не включает в себя что-то очень интересное или мощное. Обычная среда разработки с предустановленным Друпалом. Зато имеет удобный веб интерфейс по управлению сайтами и сервером.

Ну и сладкое на закуску. Не так давно вышел Open Server. Очень и очень рекомендую. Графический интерфейс, разные версии PHP / Mysql в коробке, возможность переключаться между Apache / Nginx и многое другое. Я даже скриншот сделал одной из вкладок с настройками:

openserver.png

Со скоростью работы у него тоже очень даже неплохо. На данный момент - это мой выбор.

IDE (интегрированная среда разработки)

Теперь о том, в чём я пишу. Первый год разработок мне вполне хватало обычного блокнота notepad++. Очень удобный блокнотик с подсветкой синтаксиса. Из преимуществ - быстрое открытие / закрытие документов, минимализм, очень удобный интерфейс. Пока не началась серьёзная разработка высоконагруженных и объёмных сайтов - большего мне не требовалось.

Однако разбираться в чужих проектах, которые писались другими программистами, с помощью блокнота было сложно. К тому же, всё чаще возникала необходимость пошаговой отладки кода. Поэтому пришлось пересесть на IDE. По рекомендациям других разработчиков выбор пал на PhpStorm. В своём я не разочаровался до сих пор. Эта IDE имеет массу удобств. Из моих любимых:

  • Возможность работы с системами контроля версий (об этом я ещё расскажу)
  • Умный автокомплит
  • Возможность пошаговой отладки кода
  • Рефакторинг кода
  • Поиск TODO комментариев
  • Отображение стека вызова функций
  • Удобный интерфейс

Выглядит она так:

phpstorm

Из более-менее достойных альтернатив этой среде разработки - NetBeans. Однако я PhpStorm'ом доволен, и менять его на что-то другое не собираюсь.

Система контроля версий

Когда сложность сайта выходит за рамки визитки, разработка начинает занимать продолжительный период времени. В процессе разработки случится может что угодно - вплоть до того, что приходится возвращаться назад и удалять последние изменения. В случае обычного сохранения данных они будут просто перезаписаны и потеряны. Система контроля версий позволяет делать своеобразные срезы времени, к которым можно вернуться в любой момент и получить код, сохранённый в этих срезах.

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

Краткий принцип работы систем контроля версий:

  • Имеется некое пространство, куда помещаются данные проекта (репозиторий)
  • У каждого программиста установлен локально клиент для работы с репозиторием.
  • В любой момент времени программист может отослать данные в репозиторий (это называется коммитом). Данные в репозитории будут объеденены с теми, которые там находились.
  • В любой момент времени программист может запросить актуальные данные из репозитория. Данные будут объеденены с теми, которые находятся на компьютере программиста.
  • В любой момент времени программист может как локально, так и в репозитории откатить данные к определённому коммиту.

Более подробно можно почитать на википедии.

Систем контроля версий много. Я пользуюсь git'ом. К слову, эта же система используется на drupal.org для работы с проектами.

В качестве репозитория я предпочитаю github.com. С его помощью можно подключаться к внешнему репозиторию и хранить все данные в нём.

У себя я использую консоль по работе с гитом. Некоторые разработчики предпочитают работать с ним через графический интерфейс с помощью TortoiseGit.

Миграция данных между локальным и внешним сервером

Рано или поздно, сайт с локального сервера придётся переносить в Интернеты. Процесс переноса разбивается на две части:

  • Перенос базы данных
  • Перенос файловой системы

И если с переносом файловой системы всё просто - достаточно запихать данные в репозиторий, а потом с сервера их забрать, то с базой данных у меня два принципиально разных подхода.

Подход первый. Общая база данных.

Есть очень интересный подход, позволяющий использовать внешнюю базу данных как локальную. То есть БД реального сайта на внешнем сервере, но все данные в неё пишутся с локального сервера. Визуально это ничем не отличается от работы с локальной базой. То есть вы работаете у себя где-нибудь на http://localhost/site, добавляете материал, меняете настройки сайта и т.д. А в это время все изменения делаются не в локальной БД, а в базе реального сервера. Объясню на примере.

Этот трюк я постоянно проделываю на хостинге it-patrol.ru. У них внешний доступ к базе данных закрыт, однако можно пробросить по SSH туннель к ней (инструкция). После открытия туннеля в settings.php прописываете порт, на который открыт туннель - и получаете профит.

Второй подход. Ручное копирования базы.

Метод банален до безобразия. Копируем базу с локального сервера и закидываем на внешний. Но тут стоит остановиться на методах импорта и экспорта данных:

1. Экспорт и импорт с помощью консоли.

mysqldump my_database --user=username --password=my_password > my_dump.sql

и

mysql -u username -p database < my_dump.sql

2. Работа с базой с помощью phpmyadmin. Этот скрипт установлен на большинстве хостингов, поэтому наиболее популярен среди разработчиков. В принципе, допольно удобный, однако не всегда надёжный. По моей личной статистике, в 10% случаев с ним возникают проблемы при импорти либо экспорте базы. Хотя от его использования я до сих пор полностью не могу отказаться.

3. Копирование и восстановление данных при помощи модуля backup_migrate. Хороший и удобный модуль. Пользуюсь им в 50% случаев.

4. Использование скрипта Sypex Dumper. Достаточно надёжный и удобный. Быстро работает, имеет приятный интерфейс. Пользуюсь в 40% случаев.

Прямая работа с базой данных

Ковыряться в базе данных приходится постоянно. Раньше я делал это через phpmyadmin, однако нашёл более удобную утилиту - HeidiSql. Имеет приятный интерфейс и массу приятного функционала. Например, подсчёт статистики команд в запросах к базе; список активных процессов; удобный доступ к настройкам mysql и многое другое. Выглядит она так:

heidisql.png

Заключение

Данная статья не является каким-либо эталоном среды разработчика. В ней описан мой опыт разработки и используемых при этом инструментов. Безусловно, если вы покажите что-то лучшее - с удовольствием поэксперементирую с чем-то новым.

И о насущном. С наступающим Новым Годом, друзья!

Комментарии

Аватар пользователя xandeadx
xandeadx написал:

в PhpStorm разве нет инструмента для работы с бд?

31.12.2011 03:03
Аватар пользователя Spleshka
Spleshka написал:

Есть. Для него надо скачивать дополнительный mysql connector. Но всё равно, это как суши-бар на заправке)) Поэтому я предпочитаю отдельную утилиту, специально для этого созданную.

31.12.2011 14:41
Аватар пользователя ice
ice написал:

Спасибо , дождался )
Джентльменский Набор Web-Разработчика (PHP 5.3.3, MySQL 5.1, PostgreSQL 8.4 etc.) .
Там и пачка дополнений есть .
Видел пост у xandeadx , про PhpStorm , думал еще чем-то пользуетесь )
HeidiSql - интересно попробовать .
На гит часто захожу , а вот за консоль спасибо )

С IDE пока не особо знаком , на друру разработчики рекламировали своего лобстера , пока его гоняю .

На днях шторм заценю )

31.12.2011 04:07
Аватар пользователя Spleshka
Spleshka написал:

Как-то я пропустит момент с PHP для Денвера. Спасибо :)

31.12.2011 14:42
Аватар пользователя mailfox
mailfox написал:

пользую Komodo-edit бесплатен и кросс платформен

25.11.2013 16:33
Аватар пользователя Дмитрий
Дмитрий написал:

PhpStorm однако денег просит - для меня это не вариант.

03.01.2012 09:30
Аватар пользователя Spleshka
Spleshka написал:

Купите, не пожалеете. Либо скачайте с торентов, там есть версии с ключами.

03.01.2012 11:47
Аватар пользователя Enkel02
Enkel02 написал:

Не знаю про ПХПшторм ничего, но мне очень нравится PhpDesigner, конечно разработчики какие то левые вроде как из Дании, но продукт у них выдался на славу, сам приобрел себе Персональную лиц. не пожалел денег

03.01.2012 11:31
Аватар пользователя ice
ice написал:

Нарыть бы еще статейку на тему использования дебагера .

06.01.2012 17:45
Аватар пользователя Spleshka
Spleshka написал:

Записал в очередь статей)

06.01.2012 18:03
Аватар пользователя ice
ice написал:

С Рождеством вас .

Там уже очередь ?)
Большая ?

07.01.2012 06:00
Аватар пользователя Spleshka
Spleshka написал:

Спасибо, вас так же.
Очередь из 6 пунктов)

07.01.2012 14:44
Аватар пользователя NK
NK написал:

"Хорошая и удобный модуль." Поправьте где посчитаете нужным ) Спасибо за классную статью, парочку инструментов (хейди + торче) к себе в копилку. И тему для друпала прихвачу ))))

08.01.2012 16:07
Аватар пользователя Spleshka
Spleshka написал:

Спасибо, поправил :)

08.01.2012 16:09
Аватар пользователя NK
NK написал:

оперативно ) я кстати до захода на сайт название вашей темы прочитал как DruPalace, сча все встало на свои места. // Еще бы определиться стоит ли посмотреть D8.dev (

08.01.2012 16:30
Аватар пользователя Spleshka
Spleshka написал:

Сложный вопрос про 8ку, и даже несколько интимный. Я для себя решил до релиза её не ковырять особо. Я слежу за всеми её изменениями, однако сам туда лезть пока не хочу.

08.01.2012 16:57
Аватар пользователя NK
NK написал:

Поступлю также, спасибо.

08.01.2012 22:37
Аватар пользователя ice
ice написал:

И правильно , нечего туда соваться еще как минимум палгода =)

Семерку еще не доели )

08.01.2012 17:09
Аватар пользователя ice
ice написал:

Очередь еще не двигалась ?)

09.01.2012 13:31
Аватар пользователя Spleshka
Spleshka написал:

Двигалась, она постоянно дополняется и движется =)

09.01.2012 13:35
Аватар пользователя ice
ice написал:

А я под каким номером в этом массиве ?)

09.01.2012 13:36
Аватар пользователя Spleshka
Spleshka написал:

на третьем)

09.01.2012 13:48
Аватар пользователя ice
ice написал:

Уже близко , а до меня какие статьи будут ?

Буду отслеживать по их появлению )

09.01.2012 13:55
Аватар пользователя Spleshka
Spleshka написал:

Будут статьи про изменение состояний формы на $form['#state'] и создание шаблонов стилей.

09.01.2012 14:36
Аватар пользователя ice
ice написал:

Шаблон стилей тоже интересно посмотреть , если это то , что я представляю )

09.01.2012 17:09
Аватар пользователя unic
unic написал:

А как же Eclipse?

Для MySQL использую MySQL Workbench, кстати. Чем HeidiSQL отличается?

10.01.2012 10:37
Аватар пользователя Spleshka
Spleshka написал:

Ни Eclipse ни MySQL Workbench не использовал, поэтому отличий назвать не могу. Если вы напишите по каждой программе пару строк - добавлю в статью.

10.01.2012 13:49
Аватар пользователя Cos
Cos написал:

Прямой свой набор прочитал:) Выбрал те же средства для работы. При этом для php еще из простенького пробовал Rapid PHP (чуть проще, чем PhpStorm, но удобно) и CodeLobster (эта фигня вообще не понравилась). А вот для MySql есть еще интересный dbForge (ИМХО уступает HeidiSql)

01.02.2012 20:03
Аватар пользователя Spleshka
Spleshka написал:

Вы на пути к успеху :)

02.02.2012 16:25
Аватар пользователя sergey_mark
sergey_mark написал:

Я для MYSQL использую - Valentina Studio 5.x, который вышел буквально пару месяцев назад. Юзаю уже месяц – до сих пор нахожу новые фишки.
http://www.valentina-db.com/valentina-studio-overview

25.04.2013 16:13

Комментировать