Разворачиваем девелоперский веб-сервер под Windows (WAMP ), настройка php на хостинге.

Разворачиваем девелоперский веб-сервер под Windows (WAMP+)

Кейсы и полезные советы / Статья от 14 декабря 2014 г. / 13129 просмотров

На определенном этапе профессионального развития мне перестало хватать функционала, который предлагали стандартные пакеты вроде Denwer. Возникла необходимость разворачивания собственного девелоперского веб-сервера. В то же время, стандартное решение LAMP (Linux-Apache-MySQL-PHP) было не совсем удобно: основной софт (например, Adobe Photoshop), необходимый для полноценной работы над сайтом, написан для Windows, а переключаться между виртуальной машиной и основной системой было бы крайне неудобно.

Хороший способ изучить параметры настройки — самостоятельно развернуть и настроить веб-сервер.

На глаза попалась хорошая публикация на Хабрахабре, в которой давались подробные и пошаговые инструкции по тому, как установить и настроить под Windows все необходимые для разработки компоненты. К сожалению, автор убрал статью в черновики, и доступ к ней сейчас невозможен. В то же время необходимость в материале (по крайней мере для меня) не исчезла, поэтому я постараюсь записать весь процесс установки и настройки необходимого софта, чтобы в дальнейшем использовать этот материал как руководство.

Система тестировалась на Windows 7 x64, а ранее — на Windows 7 x32. Для более ранних версий можно использовать предыдущие версии Apache (например, версия 2.2) и MySQL (версия 5.1 должна работать уже на Windows XP). Здесь и далее я буду подразумевать установку сервера на Windows 7 x64.

Весь процесс установки и настройки занимает до 20 минут.

Итак, для начала нам необходимо скачать все необходимые дистрибутивы:

После этого создаем структуру папок под устанавливаемые компоненты. У меня основная папка имеет путь C:/WebServer/. В ней созданы остальные подпапки:

После этого начинаем установку компонентов веб-сервера.

Установка и настройка Apache

Разархивируем сохраненный дистрибутив сервера Apache, и копируем его содержимое в созданную нами папку Apache (у меня это C:/WebServer/Apache/). После этого нам необходимо установить Apache как сервис Windows, как это описано в документации. Для этого открываем командную строку от имени администратора, в командной строке переходим в папку /bin (у меня это путь C:/WebServer/Apache/bin) и выполняем файл httpd.exe с ключом: httpd.exe -k install. В документации есть также описание других ключей для более тонкой настройки сервиса.

В Windows 7 x64 командная строка находится в папке C:/Windows/System32/cmd.exe.

Открываем файл /conf/httpd.conf и в 38-й строке меняем Define SRVROOT «/Apache24» на Define SRVROOT «C:/WebServer/Apache». Добавляем в автозагрузки утилиту ApacheMonitor.exe (расположен в /bin/ApacheMonitor.exe). Перезагружаем Windows.

Если Apache не стартует, то скорее всего занят 80 порт (например, скайпом). Его нужно освободить (например, в настройках скайпа указать рабочий порт 433), либо установить другой порт для Apache.

В трее должна появиться иконка Apache Monitor, он используется для управления состоянием сервера Apache. Тестируем работу: http://localhost/ должен открыть страничку ApacheHaus.

Установка PHP

Архив с PHP просто распаковываем в папку C:/WebServer/PHP.

Установка и настройка MySQL

Запускаем сохраненный ранее дистрибутив, на этапе выбора типа установки выбираем последний вариант Custom: посмотрим, что именно хочет нам предложить установщик MySQL.

Далее выбираем из списка только то, что нам нужно: у меня это сам сервер и коннектор ODBC.

Выбираем в списке MySQL Server и снизу в правом углу появляется ссылка Advanced Options. Нажимаем ее, и в выпавшем окне указываем в качестве Install Directory созданную нами папку для MySQL. Data Directory — это папка, в которой будут храниться базы данных. Я закинул ее в Dropbox, чтобы синхронизировать данные между ноутбуком и компьютерами на работе и дома.

Не обращаем внимания на предупреждения внимательного установщика, со всем соглашаемся и продолжаем. На следующем экране будет кнопка Execute, по нажатию на которую нужные программы будут загружены на компьютер и установлены.

После установки нам покажут экран настройки конфигурации сервера:

Ставим галочку напротив Show Advanced Options и продолжаем. Далее нас просят указать пароль для пользователя root. Можно сильно не заморачиваться =)

На остальных экранах я ничего не менял, со всем согласился и завершил конфигурацию.

Если вы, как и я, размещаете данные в Dropbox, то при использовании нескольких компьютеров возможен конфликт лог-файлов. Чтобы этого не было, в папкеC:/WebServer/MySQL/ создаем папку logs. Далее открываем файл my.ini, который лежит в папке D:/Dropbox/MySQL/ и меняем следующие параметры:

  • параметр general_log_file устанавливаем в значение general_log_file=»C:/WebServer/MySQL/logs/general.log»
  • параметр slow_query_log_file устанавливаем в значение slow_query_log_file=»C:/WebServer/MySQL/logs/general-slow.log» (здесь можно будет в дальнейшем смотреть медленные запросы)
  • и для лога ошибок делаем аналогично log-error=»C:/WebServer/MySQL/logs/general.err»
  • ниже long_query_time=10 добавляем с новой строки еще один параметр: innodb_log_group_home_dir = «C:/WebServer/MySQL/logs/» — это лог InnoDB

Не забудьте перезагрузить MySQL-сервер.

Устанавливаем заглушку на SMTP

Запускаете загруженный ранее файл TestMailServerToolSetup.exe, в качестве пути установки выбирайте C:/WebServer/SMTP.

Создаем структуру директорий для сайтов

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

Итак, для начала создадим папку, в которой будут храниться все сайты. Я выбрал папку D:/Dropbox/www/. Дальше создадим папки для localhost и тестового сайтаdomain.test. В них разместим подпапки htdocs и два файла: error.log и access.log (в них будут храниться логи сервера к этим сайтам). В папке htdocs создаем HTML-файлindex.html c произвольным содержимым, например «Hello, localhost!» и «Hello, testdomain!».

Настраиваем Apache на новую структуру папок

В папке C:/WebServer/Apache/conf расположены конфигурационные файлы. Если вдруг вы что-то испортите, то всегда можно будет вернуться к исходному состоянию или просто сравнить файлы, заглянув в директорию C:/WebServer/Apache/conf/original. Здесь хранятся оригинальные настройки, так что можно экспериментировать не боясь.

Основной файл конфигурации — httpd.conf. Изменяя конфигурацию Apache, необходимо всегда перестартовывать его, чтобы изменения подхватились.

Итак, меняем настройки Apache на новую структуру директорий.

  • меняем DocumentRoot «$/htdocs» на DocumentRoot «D:/Dropbox/www/»
  • чуть ниже найдем директиву <Directory «$/htdocs»> и заменим путь и здесь: <Directory «D:/Dropbox/www/»>, далее заменим в ней AllowOverride None наAllowOverride All

В файле httpd.conf найдите #Include conf/extra/httpd-vhosts.conf и раскомментируйте (удалите #). Далее, найдите #LoadModule rewrite_module modules/mod_rewrite.so и тоже раскомментируйте.

Далее заходим в /extra и открываем httpd-vhosts.conf.

Вы увидите две секции <VirtualHost *:80>. Удалите обе секции и замените на следующее:

Теперь добавим наш тестовый домен в файл %WinDir%/System32/drivers/etc/hosts, чтобы Windows обращалась к локальному серверу, когда мы будем обращаться к domain.test. Для этого добавим в файл еще одну строку: «127.0.0.1 domain.test».

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

Теперь можно удалять C:/WebServer/Apache/htdocs, все сайты у нас будут храниться отдельно.

И прежде, чем мы продолжим, пару слов: в файле httpd.conf директивы в <Directory «D:/Dropbox/www/»> будут применены ко всем сайтам, кроме тех случаев, когда они не переопределены. Если вы обратите внимание, то по-умолчанию включен Indexes, а это позволит просматривать директорию сайта в том случае, если там нет индексного файла. Если вам не хочется переопределять это значение для каждого сайта отдельно — удалите это здесь и включайте в тех местах, где это понадобится. Тоже самое касается любых других директив.

Директивы для сайтов лучше добавлять в httpd-vhosts.conf или в .htaccess.

Подключаем PHP

Открываем httpd.conf и находим директиву <IfModule mime_module>. Внутри директивы добавляем:

Если вы хотите обрабатывать другие файлы, как php, то добавьте их. Например: AddType application/x-httpd-php .php .html .htm.

Директива <IfModule dir_module>: DirectoryIndex index.html меняем на DirectoryIndex index.php index.html. Эта директива говорит о том, что индексным файлом может быть index.php и index.html. Вы можете добавить что угодно еще.

Создаем файл phptest.php в D:/Dropbox/www/localhost/htdocs с содержимым:

Перегружаем Apache и заходим на localhost/phptest.php. Вы должны увидеть информацию о PHP.

Настраиваем PHP

Если вы обратите внимание на localhost/phptest.php, то увидите, что «Loaded Configuration File» установлен в (none). Заходим в C:/WebServer/PHP и переименовываемphp.ini-development в php.ini. Перегружаем Apache, обновляем страницу, мы должны увидеть новый конфигурационный путь: C:/WebServer/PHP/php.ini. Теперь все настройки будем делать в этом файле.

Некоторые базовые настройки:

  • директория, в которой будут хранится временные файлы, заливаемые на сервер (директорию мы создали выше): upload_tmp_dir = «C:/WebServer/Temp/UploadTemp»
  • директория, в которой будут хранится сессии (директорию мы создали выше): session.save_path = «C:/WebServer/Temp/Session»
  • если хотите писать <? вместо <?php, то поставьте в On следующее: short_open_tag = Off
  • error_reporting — уровень вывода ошибок
  • log_errors — можно отключить, если ошибки выводятся на экран
  • post_max_size, upload_max_filesize — очень часто эти параметры приходится увеличивать для загрузки больших файлов

Другие настройки можно найти в документации к PHP. Если вы меняете настройки PHP — нужно перегрузить Apache.

Подключаем модули PHP

Откройте localhost/phptest.php и поищите по тексту curl. Вы не должны ничего найти. Подключим модуль curl.

В php.ini найдите закомментированный фрагмент extension_dir. Раскомментируйте и сделайте его таким: extension_dir = «C:/WebServer/PHP/ext».

Найдите extension=php_curl.dll и раскомментируйте. Также раскомментируйте extension=php_gd2.dll, extension=php_mbstring.dll, extension=php_exif.dll.

Установите временную зону в директиве date.timezone. Правильное значение можно выбрать в документации по PHP, например, date.timezone = «Europe/Kiev«.

В работе часто требуется увеличить время исполнения скрипта и параметры входных данных. Настройте параметры max_input_time, max_execution_time, post_max_size,upload_max_filesize. Директива max_file_uploads отвечает за количество одновременно загружаемых файлов (по умолчанию 20 штук).

Перегрузите Apache и повторите поиск на странице localhost/phptest.php. Если модуль успешно подключился — можно двигаться дальше.

В php.ini раскомментируйте extension=php_mysql.dll, extension=php_pdo_mysql.dll, extension=php_pdo_odbc.dll и extension=php_mysqli.dll. Перегрузите Apache и проверьте, что модули подключились.

Устанавливаем и настраиваем phpMyAdmin

Распаковываем phpmyadmin в D:/Dropbox/www/localhost/htdocs. Далее необходимо воспользоваться штатным установщиком, который проведет вас через весь процесс настройки.

Настраиваем почту

Чуть ранее вы поставили почтовую заглушку Test Mail Server Tool. Запускайте ее. Саму программу можно добавить в Автозагрузки. Значок будет висеть в трее. Проверьте в настройках (клик правой кнопкой по иконке в трее), чтобы директория для почты была C:/WebServer/SMTP/mail.

В файле php.ini должны быть раскомментированы следующие строки:

Перезапустите Apache, если сделали изменения (у меня был закомментирован email).

Как результат, мы должны получить рабочий сервер, который вполне можно использовать для разработки на том же Yii Framework. Если нужна более тонкая настройка отдельных компонентов, вы всегда можете обратиться к официальному руководству. Для большинства возникших ошибок есть стандартные решения, которые можно довольно быстро решить через правильно сформулированный поисковый запрос. Если же это не помогло, я по возможности постараюсь ответить на возникшие у вас вопросы.

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

Похожие статьи
Оформите подписку
  • Следите за нами в соц. сетях:
  • Читайте удобно:

Услуги и предложения

Технологии

от 24 января 2017 г.

от 1 февраля 2014 г.

2008–2018 © Спасибо за ссылки при цитировании.