Страницы

суббота, 3 августа 2013 г.

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

Первый шаг - это установка веб-сервера на своем локальном компьютере, где мы будем тестировать свои php наработки. Нам понадобятся следующие компоненты:


Apache - это сервер, позволяющий запускать ваши локальные сайты, написанные на php и прочих языках. Без сервера невозможно запустить сайт на php. Я буду использовать Apache версии 2.2.22 на платформе Windows 7.

PHP - это сам язык программирования php, который мы должны будем скачать и связать с сервером Apache. Я скачал php версии 5.4.17.

MySQL - система управления базами данных. В предыдущем посте мы уже узнали что это такое. Ставлю MySQL версии 5.6.13.1 (смотрите следующую тему).


Установить данные компоненты можно вручную, скачивая их на сайтах производителей, а так же можно воспользоваться специальными пакетами, такими как XAMPP, Denver и прочие. Второй вариант удобен тем, что вам не придется долго копаться, а будет достаточно скачать только один файл, который установит вам все необходимые компоненты.

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


I. Установка  Apache.

Скачиваем Apache с официального сайта http://httpd.apache.org/download.cgi
Либо отсюда (скаченный мною. вирусов нет): httpd-2.2.22-win32-x86-openssl-0.9.8t.msi

Затем запускаем файл и устанавливаем:

Нажимаем Next

 Выбираем "I accept" и нажимаем Next 

Нажимаем Next

Далее предложат ввести имя сервера и e-mail. Придумываем любой. В дальнейшем мы это настроим. Устанавливаем для всех пользователей на 80 порт (рекомендуется).

Вписываем имена, затем нажимаем Next 
Выбираем Custom
Меняем место установки и нажимаем Next
Если у вас Windows 7, советую не ставить Apache в директорию С:\Program Files\. Лучше устанавливайте в директорию C:\Apache\ (как сделал я).

Нажимаем Install и начнется установка.
После установки, у вас в нижнем правом углу (в системном трее) появится значок Apache:


Двойной щелчок на него вызовет Apache Monitor, где можно запустить/остановить сервер.

Внимание! Сервер Apache может не запуститься, потому что занят 80-тый порт. А он обычно занят программой Skype. Необходимо в настройках скайпа отключить использование данного порта:

В настройках соединения снимите галочку с использования 80 порта и перезапустите скайп.

На этом начальная установка Apache завершена. Теперь нам необходимо установить PHP.


II. Установка  php.

Переходим на сайт http://windows.php.net/download/ и скачиваем необходимую версию php. Это набор файлов, который лежит в архиве ZIP. Я выбрал предпоследнюю стабильную php-5.4.17.

Можно скачать от меня: php-5.4.17-Win32-VC9-x86.zip. Для скачивания перейдите по ссылке, откроется архив. выберите сверху слева меню "File" - "Download".

Скачав архив, распакуйте его. Распакованную папку "php-5.4.17-Win32-VC9-x86" переименуйте просто в "php" и переместите ее в директорию установленного Apache. У меня получился адрес к этой папке - C:\Apache\php. На самом деле переносить именно в эту папку необязательно. Я это сделал для удобства.

Открываем папку php и находим в них два файла настроек:

php.ini-development - настройки для разработки. Будут выводиться ошибки на экран.
php.ini-production - настройки для продукции. Ошибки на экран не выводятся.

В этих файлах хранятся базовые настройки php. Нам для разработки и обучения рекомендуется выбрать  php.ini-development. Но для реальных веб-сайтов выбирайте  php.ini-production, так как он безопаснее.

В той же папке делаем копию файла php.ini-development и переименовываем ее в php.ini
Открываем файл блокнотом и делаем следующие изменения:

Советую скачать блокнот Notepad2, который выделяет строки и подсвечивает код.
С помощью него откройте файл  php.ini и начнем настройку:



Настройка php.ini

1. Увеличиваем максимальный размер принимаемых POST данных.

Ищем в файле строку  (у меня это 672-ая строка):
post_max_size = 8M
Заменяем на:
post_max_size = 16M 


2. Добавляем и указываем папку включений "includes".
 Сначала в директории php создаем папку с именем includes.

Затем в файле php.ini ищем строку (у меня 708-ая):
;include_path = ".;c:\php\includes"

Убираем вначале точку с запятой и прописываем свой путь к папке includes:
include_path = "c:\Apache\php\includes"

Обратите внимание, при указании пути используются обратные косые "\" (бэкслеш).
Точка с запятой вначале обозначает то что строка закомментирована.


3. Указываем папку включений "ext".

Ищем в файле строку (730):
; extension_dir = "ext"
Расскомментируем ее, убрав точку с запятой. и пропишем свой путь к папке:
extension_dir = "c:/Apache/php/ext"

Обратите внимание - в данном случае в пути используется косая "/" (слэш).


4. Добаляем папку для хранения временных загружаемых файлов "upload".
Сначала в директории php создаем папку upload.

Далее находим строку (796):
;upload_tmp_dir =
Раскомментируем ее и пропишем свой путь к папке:
upload_tmp_dir ="C:\Apache\php\tmp\upload"


5. Увеличиваем допустимый размер максимально закачиваемых файлов до 16мб.

Находим строку (800):
upload_max_filesize = 2M
Изменяем на
upload_max_filesize = 16M


6. Подключаем необходимые библиотеки (модули) расширений.
Мы подключим рекомендуемые базовые библиотеки (модули).
Необходимо найти и раскомментировать следующие строки:

Модуль, позволяющий работать с архивами bzip2. Убираем точку с запятой вначале (868)
;extension=php_bz2.dll

Модуль, позволяющий соединяться с серверами с помощью большого количества интернет протоколов (869) :
;extension=php_curl.dll

Модуль, позволяющий работать с графикой (871)
;extension=php_gd2.dll

Модуль, позволяющий работать c многобайтными кодировками (китайский, японский, Юникод и др) (878)
;extension=php_mbstring.dll

Модуль, необходимый для работы с MySQL (880)
;extension=php_mysql.dll

Модуль, расширяющий функции использования MySQL (881)
;extension=php_mysqli.dll

Остальные модули будем подключать по мере необходимости.
* В скобках я указывал номер строки в своем файле php.ini. У вас может быть по-другому.


7. Устанавливаем свой часовой пояс.
Свой часовой пояс ищите тут: http://php.net/manual/en/timezones.php

Находим строку (919)
;date.timezone =
Раскомментируем и укажем свой часовой пояс.
date.timezone =  "America/New_York"    ;Нью-Йорк (мой случай)
date.timezone = "Europe/Moscow"     ;для Москвы (Пример)
date.timezone = "Europe/Kiev"     ;для Киева (Пример)

8. Создаем папку "tmp" - хранилище для временных файлов сессии.
В директории php создаем папку tmp

В файле php.ini находим строку (1396):

;session.save_path = "/tmp"
Раскомментируем и пропишем свой путь (обращайте внимание на слэши):
session.save_path = "c:/Apache/php/tmp"


|----------------на этом завершаем настройку php.ini ----------------|


Базовые настройки php выполнены. Но мы еще вернемся к этому файлу (надеюсь не скоро).
Теперь вернемся к нашему серверу Апачи. Его тоже необходимо настроить. (Крепитесь)



Настройка конфигурационных файлов Apache

Итак, для настройки сервера Apache, зайдите в его установленную директорию, в папку conf ( в моем случае: C:\Apache\conf ) Там найдите и откройте файл httpd.conf.
Я открываю файл блокнотом Notepad2.

Это основной конфигурационный файл Апача. Так, как мы устанавливали Apache при помощи установщика, некоторые настройки будут уже сконфигурированы.
Символ решетки "#" в начале строки означает, что строка закомментирована.
Строки команд в данном файле называют директивами.
* В скобках красным шрифтом я буду указывать номер строки в своем файле. У вас номер строки может быть другим.


1. Указываем корневой каталог Apache.

Корневая папка, где установлен Апач. Он у нас уже указан  (35) :
ServerRoot "C:/Apache"


2. Привязываем сервер Apache к конкретному порту.

По умолчанию в файле уже настроено (46).
Listen 80


3. Подключаем модуль mod_rewrite - служащий для преобразования ссылок на лету.

Находим и раскомментируем следующую строку (118)
#LoadModule rewrite_module modules/mod_rewrite.so
Убираем решетку "#" вначале строки и готово
LoadModule rewrite_module modules/mod_rewrite.so


4. Подключаем модуль php5 для нашего Apache 2.2.
В конце списка перечисления загружаемых модулей (129) надо дописать строку загрузки модуля php5. В двойных кавычках указываем путь к файлу загружаемого модуля php5apache2_2.dll, который хранится в папке php.

То есть дописываем (Внимание на косые - здесь прямые слеши "/" ) (129):
LoadModule php5_module "C:/Apache/php/php5apache2_2.dll"


5. Указываем путь к папке с настройками php.

После добавления модуля php, создаем строку ниже и прописываем (создал строку 130):
PHPIniDir "C:/Apache/php/"


6. Прописываем свой контактный e-mail на ServerAdmin.
Этот e-mail будет отображаться на некоторых серверных страницах, где необходимо сязаться с администратором. К примеру документы ошибок. В нашем случае на локальном сервере разработки не обязательно вводить свой е-маил. Все равно увидим его только мы.

Находим строку и прописываем свой е-маил (строка 165, учитывая что я создал пару строк):
ServerAdmin mymail@gmail.com


7. Устанавливаем директорию, где будут храниться наши документы (сайты).
Для начала создадим папку, где будут храниться наши будущие сайты. Я создал на диске-С папку с названием mysites.

Находим строку (181)
DocumentRoot "C:/Apache/htdocs"
Прописываем свой путь:
DocumentRoot "C:/mysites"


8. Устанавливаем права доступа для директории.

Находим следующие строки (191-196)
<Directory />
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Deny from all
</Directory>


Они нам не понадобятся. Комментируем их, добавляя символ "#" в начале.
#<Directory />
     #Options FollowSymLinks
     #AllowOverride None
     #Order deny,allow
     #Deny from all
#</Directory>



Далее идет такой же блок с правами доступа, но уже для конкретной директории.

Находим следующую строку (208):
<Directory "C:/Apache/htdocs">
Заменяем путь на нашу директорию хранения сайтов. Сюда будет обращаться апач.
<Directory "C:/mysites">

Далее находим строку Options (221)
Options Indexes FollowSymLinks
Эта строка определяет какие особенности сервера доступны в каталоге. Ставим:
Options Includes Indexes FollowSymLinks
Includes - разрешает использование SSI (Server-Side Includes). Он нам нужен для создания динамических страниц из отдельных составных частей. (и не только для этого)
Indexes - Если в адресной строке браузера ввести не адрес страницы сайта, а адрес каталога, то данная опция отобразит содержимое каталога. (на реальных сайтах это не нужно указывать я думаю, в целях безопасности. но в учебном сервере мы включим)
FollowSymLinks - Опция разрешает серверу следовать по символическим ссылкам

Находим следующую строку (228):
AllowOverride None
Эта директива позволяет разрешать или запрещать переопределение настроек файла httpd.conf, когда встретит файл дополнительных конфигураций .htaccess.
Мы разрешаем, заменив строку на следующее:
AllowOverride All

Эта строка устанавливает порядок работы директив allow (разрешение) и deny (запрет) (233):
Order allow,deny
Оставляем ее как есть. Сначала allow, потом deny.

Следующая строка разрешает доступ к ресурсам на сервере (234)
Allow from all
Оставляем разрешенной. Запреты мы будем давать позже, по мере прохождения обучения.


9. Задаем имена индексных файлов для директорий.
Это имена файлов, к которым будет обращаться сервер, когда происходит запрос не на файл, а на директорию. К примеру я пишу в браузере www.mysite.ru. Если сервер найдет индексный файл, он откроет его. И у меня откроется www.mysite.ru/index.html.

Находим следующую строку:
DirectoryIndex index.html
К ней дописываем через пробел имена файлов с другими расширениями. Получится так:
DirectoryIndex index.html index.htm index.shtml index.php


10. Устанавливаем фильтр для работы с SSI (Включения на стороне сервера).

В блоке <IfModule mime_module> находим и раскомментируем следующие строки (406-407):
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

Получится:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml



11. Добавляем строки для разрешения php на страницах html.

В том же блоке  <IfModule mime_module> вставьте следующие строки (408-409): 
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps: 



12. Подключите дополнительные файлы конфигурации conf/extra/httpd.

Найдите и раскомментируйте следующие строки:
#Include conf/extra/httpd-mpm.conf

#Include conf/extra/httpd-autoindex.conf

#Include conf/extra/httpd-vhosts.conf

#Include conf/extra/httpd-manual.conf

#Include conf/extra/httpd-default.conf


13. Указываем кодировку  utf-8 по умолчанию
Для того, чтобы адекватно отображалась кириллица, в конце файла прописываем строку:
AddDefaultCharset utf-8

----Настройка основного файла  httpd.conf завершена. Сохраните изменения в файле.----


Настройка виртуальных хостов.

Теперь перейдем к настройке виртуальных хостов. В установленной директории Apache найдите папку conf, в ней зайдите в папку extra и откройте файл httpd-vhosts.conf.

В файле вы увидите строку (19)
NameVirtualHost *:80
Она включает использование виртуального хостинга, основанного на имени, на 80том порту.

Далее вы увидите два блока с примерами виртуальных хостов (27-34 и 36-42):

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.mysite.loc
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host.mysite.loc"
ServerName dummy-host.mysite.loc
ServerAlias www.dummy-host.mysite.loc
ErrorLog "logs/dummy-host.mysite.loc-error.log"
CustomLog "logs/dummy-host.mysite.loc-access.log" common
</VirtualHost>


<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.mysite.loc
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host2.mysite.loc"
ServerName dummy-host2.mysite.loc
ErrorLog "logs/dummy-host2.mysite.loc-error.log"
CustomLog "logs/dummy-host2.mysite.loc-access.log" common
</VirtualHost>


Удалите или закомментируйте их.
Вместо них пропишем свои хосты (комментарии не пишите):

<VirtualHost *:80>
DocumentRoot "C:/mysites/localhost/www" #Указыаем папку где будет храниться сайт
ServerName localhost.loc  #Имя сервера. Будем в браузере вызывать по этому имени.
ErrorLog "C:/mysites/localhost/logs/error.log" #Указываем путь к файлу логов ошибок.
CustomLog "C:/mysites/localhost/logs/access.log" common   #Указываем путь к файлу access.log
</VirtualHost>

Далее создаем в ранее созданной папке C:\mysites\ новую папку с именем localhost.

В ней создаем две папки:
1. папку с именем www , где будет храниться наш сайт с именем localhost.loc
2. папку с именем logs , где будут хранится файлы логов доступа и ошибок.

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

<?php
echo "это сайт localhost.loc";
phpinfo();
?>
Сохраняйте файлы в кодировке UTF-8

С помощью блокнота Откройте файл hosts, находящийся по адресу
C:\WINDOWS\system32\drivers\etc\hosts и в самом низу файла добавьте строку:
127.0.0.1 localhost.loc
Это нужно для того, чтобы мы могли зайти на наш сайт, набрав в браузере адрес localhost.loc.



Только что мы создали виртуальный хост для нашего локального сайта localhost.loc
Для того, чтобы создать второй виртуальный хост, надо вернуться в файл httpd-vhosts.conf.
И дописать еще блок:

<VirtualHost *:80>
DocumentRoot "C:/mysites/moysayt2/www" #Указыаем папку где будет храниться сайт
ServerName moysayt2.loc  #Имя сервера. Будем в браузере вызывать по этому имени.
ServerAlias www.moysayt2.loc #Добавочное имя (Алиас домена)
ErrorLog "C:/mysites/ moysayt2/logs/error.log" #Указываем путь к файлу логов ошибок.
CustomLog "C:/mysites/ moysayt2/logs/access.log" common   #Указываем путь к файлу access.log
</VirtualHost>

Так же создаём в папке  C:\mysites\ новую папку с именем moysayt2. А в ней две папки: www и logs.
В папке www создаем файл index.php в нем прописываем php код:

<?php
echo "это сайт moysayt2.loc";
?>

Опять идем в C:\WINDOWS\system32\drivers\etc\hosts и в самом низу файла добавляем строку:
127.0.0.1 moysayt2.loc

Сохраняем отредактированные файлы конфигураций (наконец-то настройки завершены).
Теперь заходим в Apache Monitor - двойной щелчок по его значку в системном трее виндовса. Перезапускаем сервер. Если сервер Апач запущен, нажимаем кнопку Restart. Если сервер выключен, жмем кнопку Start. У вас должна появиться надпись "The Apache2.2 service is started (restarted)" и вы увидите значок зеленой лампочки.


Это значит, что апач успешно запущен. Если этого не случилось и у вас вдруг вылезло окно с ошибкой "The requested operation has failed!", значит вы что-то сделали неверно. Чтобы узнать в чем именно допущена ошибка, откройте файл ошибок C:\Apache\logs\error.log . Перепроверьте написание адресов, обратите внимание на косые линии. Возможно где-то вы допустили ошибку.

Ну а в случае удачного запуска, заходим в браузер и в адресной строке вбиваем localhost.loc
Если всё сделано правильно, откроется страница index.php и вы увидите на странице следующую таблицу:


Увидели? Поздравляю! Вы успешно настроили сервер Апач + php. Данная таблица - это команда phpinfo.
Так же попробуйте набрать в браузере moysayt2.loc - у вас должна отобразиться страница с текстом "это сайт moysayt2.loc" (без слова echo).


Чтобы понять как установить сервер, мне потребовалось три дня на разбор директив. Признаюсь, поначалу из-за трудностей я хотел бросить изучение php, даже не начав его. Но сейчас у меня огромное желание двигаться дальше. Пока писал данную статью, уже во многом разобрался. Главное - не сдаваться...

На сегодня я закончу тему по настройке сервера. СУБД MySQL мы установим в следующей теме. 

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

Отправить комментарий