Среда для web-разработчиков на Windows

Свежая версия гайда для полного победилдо над Windows в качестве ОС для web-разработки.

Preface

Не буду многословно и нудно описывать свой дао, поэтому начну с требований к реализации:

  • простота (не требующим более 1 часа в настройке)
  • производительность (ага, php на Windows : )
  • Apache + php + mysql + почтарь
  • возможность доставить скомпилированные пакеты pecl без компиляций и танцев с бубном
  • 100% работоспособный pear из cmd/Powershell
  • drush, устанавливаемый из pear с возможностью его обновлять
  • memcached сервер и его поддержка со стороны php
  • привычные unix-утилиты в нативной консоли Windows

Среда: Windows 8.1 Pro x64

Правильный XAMPP

На момент написания статьи нужный нам XAMPP имеет версию

Это именно тот вариант, который содержит PHP 5.4, скомпилированный с помощью VC9 и thread safe - то условие, которые обеспечит нам совместимость с библиотеками pecl)

Предпочтительно использовать installer версию XAMPP

Уверен, что даже самые неискушённые читатели этой статьи смогут установить xampp и запустить XAMPP Control Panel. На этом пока отложим xampp в сторону и перейдём к более интересным вещам.

Отдельный момент, заслуживающий внимания - переменные окружения для php, apache и mysql:

12
[HKEY_CURRENT_USER\Environment]"PATH"="C:\\xampp\\apache\\bin;C:\\xampp\\php;C:\\xampp\\mysql\\bin;"

Очень удобно использовать mysql из консоли, а также плюшки вроде ab и PEAR-продукты php!

UnxUtils

  • Качаем
  • Распаковываем, скажем, в корень диска C:. Путь до sh.exe должен быть таким C:\UnxUtils\bin\sh.exe.
  • Добавляем путь C:\UnxUtils\usr\local\wbin в переменную окружения PATH

12345
Проверяем, открыв cmd\PowerShell: C:\Users>ls -altotal 1dr-xr-xr-x   1 user     group           0 Dec  7 13:02 .drwxrwxrwx   1 user     group           0 Jan  1  1980 ..

Для тех, кому нужен Drush: Скопируйте и переименуйте tar.exe -> bsdtar.exe в директории C:\UnxUtils\usr\local\wbin.

В результате у нас должны быть и tar.exe и bsdtar.exe одинакового содержимого.

PHP

Начнём с лёгкого тюнинга php.ini:

1234567891011121314151617181920212223242526
max_execution_time=300memory_limit=1024Mupload_max_filesize=200M; В разделе Dynamic Extensions; Для Drupalextension=php_uploadprogress.dll; Если Memcache важен для разработкиextension=php_memcache.dll; Если вы разработчик и пишете код, то следующая опция для вас![XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug.dll"; Профайлер, по-умолчанию, выключен;xdebug.profiler_append = 0;xdebug.profiler_enable = 1;xdebug.profiler_enable_trigger = 0;xdebug.profiler_output_dir = "C:\xampp\tmp";xdebug.profiler_output_name = "cachegrind.out.%t-%s"xdebug.remote_enable = 1xdebug.remote_handler = "dbgp"xdebug.remote_host = "127.0.0.1";xdebug.trace_output_dir = "C:\xampp\tmp"xdebug.idekey = "PHPSTORM"xdebug.collect_includes = 1xdebug.collect_params = 1xdebug.output_buffering = Offxdebug.remote_autostart = 1

Не забудьте, что включённый xdebug выедает более 100мс при запросе страницы, а иногда и больше. Если не используете - не включайте!

В начале гайда я что-то там выдавал про PHP 5.4, VC9, Thread Safe - помните? Не забывайте, и идите по и радуйтесь сколько всего можно прилепить к вашему php.

На самом деле нас интересует 2 пакета, указанных в конфиге выше, uploadprogress и memcache. Идём, скажем, в и не теряемся!

Логика нужного нам файла такова: package-ver-thread_ver-compiler-arch.zip

В нашем случае, получается файл: php_uploadprogress-1.0.3.1-5.4-ts-vc9-x86.zip

XAMPP 1.8.2-3 поставляется с PHP 5.4, x86, Thread safe

Для memcache и любых прочих - история одинакова.

Не забывайте распаковывать нужные расширения в папку ext в директории PHP и "включать" их в php.ini

Перезапустите Apache..Работает? Выдыхай!

PEAR

Используете PHPUnit? Drush? Да вообще много чего интересного можно установить и держать в актуальном состоянии благодаря pear. К делу!

Есть целый ряд переменных PHP и pear, которые должны быть установлены в качестве переменных окружения (пользовательских или системных - выбор ваш), чтобы всё завёлось как надо. Итак, вот они:

1234567891011
"PHP_BIN"="C:\\xampp\\php\\php.exe""PHP_DIR"="C:\\xampp\\php\\""PHP_PEAR_CACHE_DIR"="C:\\xampp\\php\\pear\\Cache""PHP_PEAR_CFG_DIR"="C:\\xampp\\php\\cfg""PHP_PEAR_DATA_DIR"="C:\\xampp\\php\\data""PHP_PEAR_DOC_DIR"="C:\\xampp\\php\\docs\\PEAR""PHP_PEAR_DOWNLOAD_DIR"="C:\\xampp\\php\\pear\\download""PHP_PEAR_INSTALL_DIR"="C:\\xampp\\php\\pear""PHP_PEAR_SYSCONF_DIR"="C:\\xampp\\php\\""PHP_PEAR_TEMP_DIR"="C:\\xampp\\tmp""PHP_PEAR_TEST_DIR"="C:\\xampp\\php\\tests"

На всякий случай, прикреплю файл .reg, который может импортировать мои настройки (подойдёт в случает, если XAMPP установлен стандартно в C:\xampp)

Проверим, открыв какой-нибудь cmd.

Вывод должен быть примерно таким (различия возможны, если вы используете нестандартный путь установки для XAMPP)

123456789101112131415161718192021222324252627282930313233343536373839404142
C:\Users>pear config-showCONFIGURATION (CHANNEL PEAR.PHP.NET):=====================================Auto-discover new Channels     auto_discover    <not set>Default Channel                default_channel  pear.php.netHTTP Proxy Server Address      http_proxy       <not set>PEAR server [DEPRECATED]       master_server    pear.php.netDefault Channel Mirror         preferred_mirror pear.php.netRemote Configuration File      remote_config    <not set>PEAR executables directory     bin_dir          C:\xampp\phpPEAR documentation directory   doc_dir          C:\xampp\php\docs\PEARPHP extension directory        ext_dir          C:\xampp\php\extPEAR directory                 php_dir          C:\xampp\php\pearPEAR Installer cache directory cache_dir        C:\xampp\php\pear\CachePEAR configuration file        cfg_dir          C:\xampp\php\cfgdirectoryPEAR data directory            data_dir         C:\xampp\php\dataPEAR Installer download        download_dir     C:\xampp\php\pear\downloaddirectoryPHP CLI/CGI binary             php_bin          C:\xampp\php\.\php.exephp.ini location               php_ini          <not set>--program-prefix passed to     php_prefix       <not set>PHP's ./configure--program-suffix passed to     php_suffix       <not set>PHP's ./configurePEAR Installer temp directory  temp_dir         C:\xampp\tmpPEAR test directory            test_dir         C:\xampp\php\testsPEAR www files directory       www_dir          C:\php\pear\wwwCache TimeToLive               cache_ttl        3600Preferred Package State        preferred_state  stableUnix file mask                 umask            0Debug Log Level                verbose          1PEAR password (for             password         <not set>maintainers)Signature Handling Program     sig_bin          c:\gnupg\gpg.exeSignature Key Directory        sig_keydir       C:\xampp\php\\pearkeysSignature Key Id               sig_keyid        <not set>Package Signature Type         sig_type         gpgPEAR username (for             username         <not set>maintainers)User Configuration File        Filename         C:\xampp\php\\pear.iniSystem Configuration File      Filename         C:\xampp\php\\pearsys.ini

Wow! Теперь последний тест :)

123456789
C:\Users>pear channel-discover pear.drush.orgAdding Channel "pear.drush.org" succeededDiscovery of channel "pear.drush.org" succeededC:\Users>pear install drush/drushWARNING: channel "pear.drush.org" has updated its protocols, use "pear channel-update pear.drush.org" to updatedownloading drush-6.2.0.0.tgz ...Starting to download drush-6.2.0.0.tgz (505,989 bytes).....................................................................................................done: 505,989 bytesinstall ok: channel://pear.drush.org/drush-6.2.0.0

Это, увы, не всё! Следующий пункт...

MySQL

Отредактируем C:\xampp\mysql\bin\my.ini

12
[mysqld]max_allowed_packet = 64M

Drush

Если все системные переменные окружения верны, то после предыдущего пункта, в консоли будет доступна команда drush! Но ничего не получится, нужно открыть

C:\xampp\php\drush.bat

и запилить его таким образом:

[at]php.exe "C:\xampp\php\pear\drush\drush.php" --php="php.exe" %*

После чего смело пробовать:

1234567
C:\Users>drush st PHP executable        :  php.exe PHP configuration     :  C:\xampp\php\php.ini PHP OS                :  WINNT Drush version         :  6.2.0 Drush configuration   : Drush alias files     :

Да, не забудьте добавить свой drush.ini в папку профиля %USERPROFILE%\.drush\drush.ini в противном случае butt hurt из-за front-end'ного php.ini гарантированны.

Содержимое этого файла можно взять из C:\xampp\php\pear\drush\examples\example.drush.ini

Git

Качаем самую свежую версию

Устанавливаем, выбирая опцию "Run Git from Windows Command Prompt"

Настраиваем .gitconfig в %USERPROFILE% как привычно, а ssh-ключик кладём в %USERPROFILE%/.ssh/id_rsa. Короче, как обычно всё.

Memcache

Спасибо тебе pipboy13!

Скачиваем и распаковываем в C:\memcached

  • x86
  • x86_64

Добавляем C:\memcached в переменную среды PATH

1234
#Устанавливаем сервисC:\Users>memcached -d install#Запускаем службуC:\Users>net start memcached

С таким сервером, установленный выше php-memcache прекрасно работает, что позволяет относительно моделировать поведение приложения.

Что дальше?

Любимая среда разработки, любимая CMS, framework - что угодно. Пишите код - это круто!

Комментарии

kpod13, #

А не нужен там разве?

Добавить комментарий

Содержание этого поля является приватным и не предназначено для показа.

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.