Установка и настройка сервера XAMPP на Windows
Для начала рассмотрим что из себя представляет веб-сервер XAMPP и сравним версии для Windows.
XAMPP — кроссплатформенная сборка веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP, язык программирования Perl и большое количество дополнительных библиотек, позволяющих запустить полноценный веб-сервер.
Установка веб-сервера XAMPP
1. Начинаем установку XAMPP. Откроется окно, в котором нам предлагается выбрать путь для размещения сервера. По-умолчанию это диск C:\. Я не буду изменять путь и установлю сервер на предложенный диск. Нажимаем кнопку Install и ждем пока дистрибутив полностью распакуется.
2.После распаковки дистрибутива запустится командная строка, далее основная установка будет происходить через нее. XAMPP предлагает создать ярлыки на рабочем столе и в меню пуск, нажимаем enter.
3. Теперь у нас спрашивают, правильно ли выбран каталог установки XAMPP, по-умолчанию сервер будет располагаться по следующему адресу C:\xampp, нажимаем enter.
4. Хотим ли мы установить портативную версию? Нажимаем enter, т.к. XAMPP устанавливается на жесткий диск.
5. Окончательная установка XAMPP. Нажимаем enter для продолжения.
6. Автоматический выбор часового пояса. Нажимаем enter.
7. Запустим панель управления XAMPP (XAMPP Control Panel), выбираем 1 и жмем enter.
8. Открылась панель управления сервером. Закрываем командную строку.
Подсказки по панели управления:
Checkboxes (Svc) — устанавливает модуль в качестве службы Windows (если вы хотите запускать какой либо модуль (Apache, MySQL и т.д.) как службу, то отмечаем соответствующие флажки)
Admin — запускует администрирование модулем (Admin напротив модуля Apache — откроет окно приветствия XAMPP, выбираем язык. И попадаем в веб-интерфейс XAMPP, здесь можно проверить демонстрационные примеры в разделе Demos, узнать информацию о модулях и т.д. Admin напротив модуля MySQL — запустит phpMyAdmin)
Shell — запуск командной строки для работы с сервером;
Setup — открывает командную строку для настройки XAMPP;
Port-Check — проверка портов;
Explore — открывает папку в которую установлен XAMPP, в нашем случае C:\xampp;
SCM — открывает окно управления службами Windows;
Refresh — обновление состояния модулей;
Запускается XAMPP с помощью ярлыка на рабочем столе или в меню пуск, если же вы при установке отказались от создания ярлыков, вы можете запустить XAMPP с помощью файла xampp-control.exe в директории C:\xampp, там же вы можете увидеть все остальные ярлыки, которыми можно запустить отдельные модули, деинсталировать XAMPP и т.п.
Иконка XAMPP удобно сидит в трее и при щелчке левой кнопки мыши открывает панель управления (XAMPP Control Panel).
9. Запускаем модули Apache и MySQL (кнопки Start), набираем в браузере localhost (или жмем Admin напротив модуля Apache):
10. При первом запуске откроется страница приветствия, выбираем один из предложенных языков:
11. Попадаем в веб-интерфейс XAMPP, здесь вы можете ознакомиться документацией, примерами в разделе Demos и т.д.:
В разделе Security находятся настройки безопасности:
Перейдя по указанной ссылке http://localhost/security/xamppsecurity.php, можно задать пароль для администратора баз данных MySQL и можно установить пароль на директорию XAMPP для ограничения доступа из локальной сети:
Итак, мы установили и ознакомились с веб-сервером XAMPP, теперь настало время создать тестовую страницу и разместить наш проект.
Для того чтобы создать новый сайт на локальном веб-сервере, необходимо создать папку с названием сайта в папке C:\xampp\htdocs\, например blog и создадим там тестовый php-скрипт с кодом:
<?php echo 'Hello world!'; ?>
Сохраним как index.php. Структура папок:
Переходим в браузере по адресу http://localhost/blog/ и, если все сделано правильно, видим приветствие «Hello world!», тем самым мы протестировали работоспособность сервера:
Веб-сервер можно установить и другим способом, для этого необходимо распаковать инсталятор или ZIP-архив в любое удобное для вас место на жестком диске, название папки xampp можно переименовать, например в server и запустить установку с помощью файла setup_xampp.bat в этой папке, повторить все шаги описанные выше. Если вы устанавливаете XAMPP впервые, то рекомендую на время первого ознакомления не менять названия папок и установить веб-сервер по дефолту, чтобы потом не искать ошибок, которые могут возникнуть при указании неверных путей для виртуальных хостов, речь о которых пойдет ниже.
Настройка виртуальных хостов
Если мы хотим хранить свои проекты в другой папке (например, Мои документы) или локальная версия сайта должна работать при переходе по адресу wwwblog.ru вам необходимо разобраться с настройкой виртуальных хостов, об этом и пойдет речь в данном подразделе.
Предположим наш сайт должен храниться на диске C в папке my_projects (C:\my_projects), в браузере он должен открываться по адресу wwwblog.local или blog.local.
Создадим в папке my_projects папку с названием blog.local, в ней создадим папки www и logs. В папку www положим наш тестовый скрипт index.php.
Вот так это будет выглядеть в файловой системе Windows:
Теперь перейдем к настройке виртуальных хостов. Открываем в текстовом редакторе файл httpd-vhosts.conf, расположенный по следующему адресу: C:\xampp\apache\conf\extra.
Примечание: рекомендую для большего удобства создать сразу ярлык для этого файла, например в папке C:\xampp, чтобы потом можно было быстро добавлять новые виртуальные хосты.
Все что находится в файле httpd-vhosts.conf мы трогать не будем, а просто добавим наши хосты (просто скопируйте и вставьте в файл приведенный ниже код)
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:\xampp\htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@blog.local DocumentRoot "C:\my_projects\blog.local\www" ServerName blog.local ServerAlias www.blog.local ErrorLog "C:\my_projects\blog.local\logs\error.log" CustomLog "C:\my_projects\blog.local\logs\access.log" combined <Directory "C:\my_projects\blog.local\www"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Верхний виртуальный хост, выделен другим цветом, позволит нам по прежнему заходить на localhost (локальный сайт XAMPP).
Следующим шагом нам потребуется добавить две строчки в файл hosts, расположенный по следующему адресу C:\Windows\System32\drivers\etc\hosts (также рекомендую создать для него ярлык в папке сервера):
127.0.0.1 blog.local
127.0.0.1 wwwblog.local
Заходим в панель управления XAMPP (XAMPP Control Panel) и перезапускаем Apache. Теперь проверим наш сайт, который должен работать по адресу wwwblog.local. Если все сделано верно, то мы увидим приветствие «Hello world!».
Так как скорее всего понадобится создание нескольких сайтов на локальном сервере, приведу пример добавления хостов в файл httpd-vhosts.conf. Предположим новый сайт будет называться site.local:
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:\xampp\htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@blog.local DocumentRoot "C:\my_projects\blog.local\www" ServerName blog.local ServerAlias www.blog.local ErrorLog "C:\my_projects\blog.local\logs\error.log" CustomLog "C:\my_projects\blog.local\logs\access.log" combined <Directory "C:\my_projects\blog.local\www"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@site.local DocumentRoot "C:\my_projects\site.local\www" ServerName site.local ServerAlias www.site.local ErrorLog "C:\my_projects\site.local\logs\error.log" CustomLog "C:\my_projects\site.local\logs\access.log" combined <Directory "C:\my_projects\site.local\www"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Также не забываем добавить следующие строчки в файл hosts в папке Windows:
127.0.0.1 site.local
127.0.0.1 wwwsite.local
Перезапускаем Apache и новый хост готов для работы.
По аналогии можно добавить сколько угодно виртуальных хостов.
Немного справочной информации относительно того, что мы добавляем в файл httpd-vhosts.conf:
ServerAdmin webmaster@blog.local — e-mail-адрес администратора веб-сервера;
DocumentRoot "C:\my_projects\blog.local\www" — путь к папке с сайтом;
ServerName blog.local — название сайта, которое набирается в браузере, может иметь любое значение, например blog или blog.ru;
ServerAlias wwwblog.local — адрес по которому сайт также должен открываться;
ErrorLog "C:\my_projects\blog.local\logs\error.log" — журнал ошибок;
CustomLog "C:\my_projects\blog.local\logs\access.log" combined — журнал доступа к сайту, кто и когда заходил на сайт и с какого браузера, combined — означает, что отчет будет более информативным, можно заменить значением common (менее информативно);
<Directory "C:\my_projects\blog.local\www">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Приведенная выше конструкция разрешает отображение всех файлов в указанной директории и назначает максимально возможные привилегии (без AllowOverride All не будут работать ЧПУ).
Если делали все внимательно, то создание новых сайтов на виртуальном сервере не составит для вас труда, ошибки могут быть из-за синтаксиса, к примеру если вы допустите ошибку в httpd-vhosts.conf, Apache может просто не запустится. Для анализа ошибок воспользйтесь логами Apache, файл error.txt расположенный в по адресу C:\xampp\apache\logs.
«Отладочная заглушка» для sendmail
Если вы пользовались Denwer-ом, то помните, что все письма с локального сайта отправлялись в папку sendmail, это достаточно удобно, но в XAMPP такой функции не предусмотрено, в XAMPP есть собственный почтовый сервер, но он потребует немало времени, чтобы с ним разобраться.
С помощью описанной ниже инструкции, вы сможете создать такую же «заглушку» как и в Denwer.
1. В папке sendmail (C:\xampp\sendmail) создадим файл sendmail.php с кодом:
<?php define('DIR','c:/xampp/tmp/sendmail/'); $stream = ''; $fp = fopen('php://stdin','r'); while($t=fread($fp,2048)) { if( $t===chr(0) ) break; $stream .= $t; } fclose($fp); $fp = fopen(mkname(),'w'); fwrite($fp,$stream); fclose($fp); function mkname($i=0) { $fn = DIR.date('Y-m-d_H-i-s_').$i.'.eml'; if ( file_exists($fn) ) return mkname(++$i); else return $fn; } ?>
В моем случае предполагается получение писем в кодировке UTF-8, если вы хотите получать письма в в кодировке CP1251, то замените строчку:
fwrite($fp,$stream);
2. В файле php.ini (C:\xampp\php) заменяем строчку:
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
на строчку:
sendmail_path = C:xamppphpphp.exe c:xamppsendmailsendmail.php
Строка должна быть раскомментирована (убрать символ точки с запятой «;» в начале строки).
3. Создадим папку sendmail в папке tmp (C:\xampp\tmp\sendmail).
4. Перезапускаем сервер Apache и теперь все отправленные письма будут в папке C:\xampp\tmp\sendmail
Дополнительная информация по XAMPP.
Расположение конфигурационных файлов:
Apache Grundkonfiguration: .\xampp\apache\conf\httpd.conf
Apache SSL: .\xampp\apache\conf\ssl.conf
Apache Perl (nur mit Addon): .\xampp\apache\conf\perl.conf
Apache Tomcat (nur mit Addon): .\xampp\apache\conf\java.conf
Apache Python (nur mit Addon): .\xampp\apache\conf\python.conf
PHP: .\xampp\apache\conf\php.ini (der aktuell benutzten Version)
MySQL: .\xampp\mysql\bin\my.cnf
phpMyAdmin: .\xampp\phpMyAdmin\config.inc.php
FileZilla FTP: .\xampp\FileZillaFTP\FileZilla Server.xml
Mercury Mail Grundkonfiguration: .\xampp\MercuryMail\MERCURY.INI
Sendmail: .\xampp\sendmail\sendmail.ini