A free and open-source book on ZF3 for beginners


Установка Apache, PHP и MySQL в Linux

В общем, рекомендуется использовать популярный и хорошо поддерживаемый дистрибутив Linux, 32-битный (x86) либо 64-битный (amd64). 64-битная версия дает большую производительность, но доставляет больше проблем (таких как совместимость с драйверами). 32-битные системы существуют большее количество времени и имеют меньше проблем, что важно для начинающих пользователей.

Существуют два больших семейства Linux: Debian и Red Hat. Debian - это бесплатный open-source проект, который имеет несколько ветвей, наиболее популярная из которых Linux Ubuntu. Red Hat - это коммерчески распространяемая ОС, чьи "бесплатные" ветви называются Linux CentOS и Linux Fedora.

Red Hat Linux разрабатывается компанией Red Hat Inc. Red Hat Linux (либо ее "бесплатная" модификация CentOS) известна как "корпоративная" операционная система. Ее основное преимущество - "стабильность" (низкая доля системных ошибок). Однако эта стабильность достигается тщательным отбором ПО, которое устанавливается из коробки. Когда вы устанавливаете такую ОС для целей разработки на языке PHP, эта "стабильность" может стать проблемой, так как вы имеете доступ к некой старой (но "стабильной") версии PHP и другого ПО. В такую ОС не включают новое ПО, так что если вам нужно будет установить его, вам придется загрузить его откуда-нибудь, прочитать мануал, и вероятно (если вам не повезло) скомпилировать его самостоятельно.

Есть еще один дистрибутив Linux, который, по-мнению автора, больше подходит для нужд PHP разработки. Его название - Linux Ubuntu. Ubuntu разрабатывается компанией Canonical Ltd. Linux Ubuntu имеет две редакции: Desktop edition и Server edition. Ubuntu Desktop - это дистрибутив, содержащий графическую среду, в то время как Ubuntu Server edition позволяет работать лишь в консольном терминале. Для целей разработки на PHP рекомендуется использовать Desktop edition.

Canonical обычно выпускает новую версию Linux Ubuntu каждые 6 месяцев, в апреле и в октябре, а также LTS (long term support) версию каждые 2 года. Например, на момент написания данного текста последняя версия - Ubuntu 16.04 Xenial Xerus LTS (выпущенная в апреле 2016).

Не-LTS выпуски имеют короткий период поддержки (около 9 месяцев), но также имеют новейшую версию PHP из коробки. С другой стороны, LTS выпуски имеют более длинный период поддержки (5 лет), но несколько устаревшую версию PHP из коробки.

Для целей PHP разработки автор бы порекомендовал использовать последний выпуск Ubuntu Desktop, потому что он имеет последнюю версию PHP. Недостаток использования такого выпуска - это то, что вам придется обновлять Linux каждые 9 месяцев (когда истекает период поддержки). Если вам не нравится перспектива обновления каждые 9 месяцев, выберите выпуск LTS.

Для справки, таблица A.1 перечисляет версии PHP, доступные для установки из репозитария в различных дистрибутивах Linux:

Таблица A.1. Доступные для установки версии PHP в различных выпусках Linux
Выпуск Linux Версия PHP
Linux Ubuntu 16.04 Xenial Xerus LTS 7.0
Linux Ubuntu 15.10 Wily Werewolf 5.6
Linux Ubuntu 15.04 Vivid Vervet 5.6
Linux Ubuntu 14.10 Utopic Unicorn 5.5
Linux Ubuntu 14.04 Trusty Tahr 5.5

Как вы можете увидеть из таблицы выше, для целей разработки на ZF3, вам нужно будет установить Ubuntu 15.04 или выше.

В процессе выбора между 32-битной и 64-битной версиями системы, помните, что 64-битная версия Linux Ubuntu будет иметь больше проблем с совместимостью, чем 32-битная версия. Недостаток поддержки драйверов также может вызвать проблемы на 64-битной платформе.

Если вы новичок в Linux Ubuntu, посмотрите эти замечательные руководства от пользователя YouTube LearnLinux.tv: Tutorial - Installing Ubuntu 16.04 LTS (данное руководство показывает как установить Ubuntu Desktop Edition) и Tutorial - Installing Ubuntu Server 16.04 (показывает как установить Ubuntu Server Edition, которая имеет только консольный терминал).

Установка Apache и PHP

В современных дистрибутивах Linux вы можете запросто загрузить и установить ПО из централизованного репозитария. Репозитарий содержит так называемые пакеты. Пакет имеет имя (например, php, apache2), а также версию.

В общем, вы можете установить пакет одной командой. Однако эта команда (и название пакета) могут различаться в разных дистрибутивах Linux. Например, чтобы загрузить и установить пакеты в Debian-дистрибутивах Linux (например Ubuntu Linux), вы используете Advanced Packaging Tool (APT). В дистрибутивах от Red Hat (например Fedora или CentOS) вы используете YUM (менеджер пакетов RPM). Ниже приводятся детальные инструкции для этих операционных систем.

Debian или Linux Ubuntu

Прежде всего, рекомендуется обновить систему путем установки последних доступных обновлений. Чтобы сделать это, запустите следующие команды в терминале:

sudo apt-get update

sudo apt-get upgrade

Команды выше запускают APT и устанавливают новейшие обновления системных пакетов. Команда sudo (расшифровывается как "Super User DO") позволяет запускать другую команду, apt-get в нашем случае, как системный администратор (root). Вы обычно используете sudo, когда вам нужно повысить привилегии, чтобы установить пакет или редактировать какой-нибудь файл конфигурации.

Команда sudo может запросить у вас пароль. Когда она запросит пароль, введите пароль, с которым вы вошли в систему, и нажмите Enter.

Далее, введите следующие команды:

sudo apt-get install apache2

sudo apt-get install php

sudo apt-get install libapache2-mod-php

Команды выше загружают из репозитария и устанавливают последние доступные версии Apache HTTP Server, движка PHP и модули расширений PHP.

Команды выше могут запросить ваше разрешение, когда вы устанавливаете пакет. Рекомендуется ответить Yes (нажать "y" и затем нажать Enter).

Fedora, CentOS или Red Hat Linux

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

sudo yum update

Команда выше запускает инструмент YUM и устанавливает новейшие обновления системных пакетов.

Далее, из командной строки запустите следующие команды:

sudo yum install httpd

sudo yum install php

Команды выше загружают из репозитария и устанавливают последние доступные версии Apache HTTP Server и движка PHP.

Далее, запустите следующие команды, чтобы добавить Apache HTTP Server в системную автозагрузку и запустить его:

sudo chkconfig --level 235 httpd on

sudo service httpd start

Проверка установки веб-сервера

После того как вы установили Apache HTTP сервер, проверьте, что он действительно установлен правильно, и что сервер видит движок PHP. Чтобы сделать это, создайте файл phpinfo.php в корневой директории документов Apache (document root directory).

Корневая директория документов - это директория, где вы можете (по-умолчанию) хранить веб-файлы. Обычно корневая директория для документов имеет путь /var/www/html.

Чтобы удобно перемещаться по структуре директория и редактировать файлы, рекомендуется установить Midnight Commander (файл-менеджер и текстовый редактор). Чтобы установить Midnight Commander в Debian или Linux Ubuntu, запустите следующую команду:

sudo apt-get install mc

Следующая команда установит Midnight Commander в Fedora, CentOS или Red Hat Linux:

sudo yum install mc

После установки, запустите Midnight Commander командой mc. Вы также сможете редактировать текстовые файлы следующей командой:

mcedit /path/to/file

Если вам нужны административные привилегии, чтобы редактировать файл, припишите команду sudo к команде выше.

В файо phpinfo.php добавьте вызов PHP метода phpinfo() следующим образом:

<?php
  phpinfo(); 
?>

Откройте файл в веб браузере. Стандартная страница с информацией о PHP должна появиться (см. рис. A.1 для примера).

Рис A.1. Информационная страница PHP Рис A.1. Информационная страница PHP

Редактирование конфигурации PHP

Чтобы изменить конфигурацию PHP для вашей среды разработки, вам нужно редактировать конфигурационный файл PHP (php.ini) и подправить несколько параметров.

В разных дистрибутивах Linux файлы конфигурации PHP могут находиться в разных путях. Чтобы редактировать файл конфигурации PHP в Debian или Linux Ubuntu, напечатайте следующее:

sudo mcedit /etc/php/7.0/apache2/php.ini

Запустите следующую команду, чтобы редактировать файл php.ini в Fedora, CentOS или Red Hat Linux:

sudo mcedit /etc/php.ini

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

error_reporting = E_ALL

display_errors = On

display_startup_errors = On

Чтобы удобно искать внутри этого файла, нажмите F7 в окне редактора Midnight Commander и введите строку поиска (название параметра, который нужно найти).

Установите настройки часовой зоны (замените <your_time_zone> названием вашей часовой зоны, например, UTC или America/New_York):

date.timezone = <your_time_zone>

Установите параметры max_execution_time, upload_max_filesize и post_max_size, чтобы разрешить выгрузку на сервер файлов большого размера посредством POST. Например, установив для параметра upload_max_filesize значение 128M, вы разрешите выгрузку файлов размером до 128 мегабайт. Установив max_execution_time в нуль, вы разрешите PHP скрипту выполняться бесконечно долго.

max_execution_time = 0

post_max_size = 128M

upload_max_filesize = 128M

Когда вы готовы, сохраните ваши изменения, нажав клавишу F2, а затем нажмите F10, чтобы выйти из редактора Midnight Commander.

Перезапуск Apache Web Server

После внесения изменений в файлы конфигурации вам нужно будет перезапустить Apache HTTP-сервер, чтобы сохранить изменения. Это делается такой командой (в Debian или Linux Ubuntu):

sudo service apache2 restart

либо такой (в Fedora, CentOS или Red Hat):

sudo service httpd restart

Включение модуля mod_rewrite

Zend Framework 3 требует включенного модуля Apache mod_rewrite. Этот модуль используется для перезаписи запрашиваемых URL согласно некоторым правилам, перенаправляя пользователей сайта к другим URL.

В Debian или Ubuntu Linux

Для включения модуля mod_rewrite воспользуйтесь следующей командой:

a2enmod rewrite

Затем перезапустите веб-сервер Apache, чтобы применить изменения.

В Fedora, CentOS или Red Hat Linux

В этих дистрибутивах Linux mod_rewrite включен по умолчанию, так что никаких дополнительных действий не требуется.

Создание виртуального хоста Apache

Также Zend Framework 3 требует наличия виртуального хоста для вашего сайта. Термин "виртуальный хост" означает, что вы можете держать несколько веб-сайтов на одной машине.

Виртуальные сайты отличаются доменными именами (например, site.mydomain.com и site2.mydomain.com). Каждый виртуальный хост имеет свою собственную корневую директорию документов, что позволяет хранить веб-файлы в любом месте системы (не только в каталоге /var/www/html).

Обратите внимание, что на данный момент вам не нужно создавать виртуальный хост, мы сделаем это в главе Zend Skeleton Application. Пока что вам нужно просто иметь представление о том, как создаются виртуальные хосты в различных дистрибутивах Linux.

В Debian или Ubuntu Linux

У вас есть образец виртуального хоста в /etc/apache2/sites-available/000-default.conf (см. ниже).

<VirtualHost *:80>
	# Директива The ServerName определяет схему запроса, имя хоста и порт,
	# который сервер использует, чтобы идентифицировать себя. Это используется при
	# создании URL переадресации. В контексте виртуальных хостов, ServerName
	# указывает, какое имя хоста должно быть в заголовке Host запроса.
	# Для стандартного виртуального хоста (то есть, этого файла) это
	# значение не имеет определенного значения, так как используется в крайнем случае независимо от хоста.
	# Вы, однако, можете явно задать его для любого последующего виртуального хоста.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	# Доступные уровни логирования: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# Также возможно настроить уровень логирования для определенных
	# модулей, например,
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# Для большинства файлов конфигурации из conf-available/,
	# включенных или выключенных на глобальном уровне, возможно
	# добавить строчку только для определенного хоста. Например, 
	# следующая строчка включает конфигурацию CGI только для этого
    # хоста после того, как он был глобально отключен через	"a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Вам нужно всего лишь изменить файл этого виртуального хоста и перезапустить Apache для применения изменений.

Вы также можете скопировать этот файл и создать другой виртуальный хост, если хотите, чтобы несколько веб-сайтов работали на одной машине. Например, чтобы создать файл виртуального хоста 001-vhost2.conf, напишите в командной строке следующее:

cd /etc/apache2/sites-available

sudo cp 000-default.conf 001-vhost2.conf

a2ensite 001-vhost2.conf

Имя виртуального хоста начинается с префикса (например, 000, 010, etc.), который определяет его приоритет. Веб-сервер Apache пытается направить HTTP-запрос каждому виртуальному хосту по очереди (сначала 000-default, затем 001-vhost2), и, если какой-либо виртуальный хост не может обслужить запрос, это пытается сделать следующий - и так далее.

В Fedora, CentOS или Red Hat Linux

Пример виртуального хоста можно найти в файле /etc/httpd/conf/httpd.conf. Пролистайте в самый низ документа в раздел Virtual Hosts. Вы можете изменить этот раздел желаемым образом и перезапустить Apache для применения изменений.

Установка PHP-расширения XDebug

Чтобы иметь возможность отладки сайта, рекомендуем установить расширение XDebug. Это расширение позволяет заглянуть внутрь работающей программы, посмотреть переменные, переданные от клиента, пройтись по стеку вызовов и профилировать ваш PHP-код.

В Debian или Ubuntu Linux

Чтобы установить XDebug, воспользуйтесь следующей командой:

sudo apt-get install php-xdebug

Затем измените файл /etc/php/7.0/mods-available/xdebug.ini, добавив строчку:

sudo mcedit /etc/php/7.0/mods-available/xdebug.ini

Если вы планируете отлаживать ваш сайт с другого хоста, добавьте эти строки в конце файла:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=<remote_ip_address>

Перезапустите сервер Apache для применения изменений. Затем откройте phpinfo.php в вашем браузере и найдите раздел XDebug (он должен выглядеть как на рисунке A.2)

Рисунок A.2. Данные XDebug Рисунок A.2. Данные XDebug

В Fedora, CentOS или Red Hat Linux

В этих дистрибутивах Linux установка XDebug немного сложнее. Сначала установите пакет Xdebug следующей командой:

yum install php-pecl-xdebug

После установки нужно создать файл xdebug.ini в каталоге /etc/php.d:

mcedit /etc/php.d/xdebug.ini

В этом файле добавьте такую строчку:

zend_extension = /usr/lib/php/modules/xdebug.so

Измените файл php.ini:

mcedit /etc/php.ini

и, если вы планируете отладку с другого хоста, добавьте эти строки:

[xdebug]

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=<remote_ip_address>
xdebug.remote_port=9000

Перезапустите веб-сервев Apache для применения изменений. Затем проверьте phpinfo.php в вашем браузере. Если установка прошла успешно, вы увидите информацию, касающуюся XDebug.

Установка сервера баз данных MySQL

MySQL - это свободная реляционная система управления базами данных (СУБД), разрабатываемая компанией Oracle. MySQL является самой популярной СУБД среди используемых с PHP. В этой книге мы будем использовать именно ее.

Debian или Linux Ubuntu

Чтобы установить СУБД MySQL, наберите:

sudo apt-get install mysql-server

sudo apt-get install mysql-client

sudo apt-get install php-mysql

Команды выше установят соответственно серверный компонент MySQL, ее клиентный компонент и расширение MYSQL для PHP.

Fedora, CentOS или Red Hat Linux

Чтобы установить СУБД MySQL, наберите:

sudo yum install mysql-server

sudo yum install mysql

sudo yum install php-mysql

Команды выше установят соответственно серверный компонент MySQL, ее клиентный компонент и расширение MYSQL для PHP.

Выполните следующие команды, чтобы добавить сервер MySQL в автозагрузку и запустить его.

sudo chkconfig --level 235 mysqld on

sudo service mysqld start

Настройка сервера БД MySQL

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

Для подключения к серверу MySQL используйте следующую команду:

mysql -u root -p

Вы увидите командную строку MySQL. Наберите в ней следующую команду и нажмите Enter (в команде ниже замените <your_password> выбранным вами паролем):

SET PASSWORD FOR 'root'@'localhost' = '<insert_your_password>';

Если команда выполнится успешно, вы увидите следующее сообщение:

Query OK, 0 rows affected (0.00 sec)

Теперь необходимо создать новую БД, которая будет хранить таблицы. Для этого наберите:

CREATE DATABASE test_db;

Эта команда также создает пустую схему, которую мы заполним позднее.

Далее мы хотим создать еще одного пользователя БД с именем test_user, который будет использоваться сайтом для соединения с базой. Чтобы создать пользователя, воспользуйтесь следующей командой (не забудьте заменить <insert_your_password> выбранным паролем):

GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost' IDENTIFIED BY '<insert_your_password>';

Эта команда создает пользователя 'test_user' и наделяет его всеми привилегиями на БД 'test_db'.

Теперь наберите quit для выхода из командной строки MySQL.


Top