Итак, уважаемый читатель, сегодня мы займемся непосредственно установкой и настройкой Apache + PHP + MySQL в Ubuntu.
Первую часть с теоретическими основами можно найти здесь.
Установка Apache
В Терминале необходимо выполнить команду:
sudo apt-get install apache2 libapache-mod-auth-mysql
С предназначением команды sudo мы знакомились в первой части данного руководства.
Команда apt-get install запускает менеджер пакетов в режиме установки нового ПО.
Через пробел следуют названия устанавливаемого ПО: apache2 libapache-mod-auth-mysql — самого Apache и дополнительного модуля.
Вот и все, Apache установлен. За это я и люблю Ubuntu, не надо искать и скачивать дистрибутивы, процесс приятно автоматизирован.
Устанавливаем PHP
Все, что необходимо для работы PHP можно установить одной командой:
sudo apt-get install php5-common php5 libapache2-mod-php5 php5-cli php5-cgi php5-mysql
Устанавливаем MySQL
Команда для установки:
sudo apt-get install mysql-server mysql-client
После установки MySQL потребует задать пароль пользователя root для подключения к базам данных.
На этом установка всех необходимых компонентов закончена и мы переходим к настройке.
Настройка сервера
Для начала создадим каталог на жестком диске, где будут располагаться файлы сайтов. Например, пусть это будет папка /home/imya_polzovatelya/sites.
В директории sites я буду располагать поддиректории с файлами отдельных сайтов. Каждая поддиректория в sites будет представлять из себя хранилище файлов отдельного сайта.
В качестве примера настроим работу тестового сайта.
Для этого в каталоге sites я создаю каталог test, содержащий две поддиректории: logs — для хранения логов и www — для хранения файлов сайта.
Пару слов о том, что же такое логи. В ОС семейства Linux принято писать подробные и человекопонятные отчеты об ошибках. В случае возникновения непредвиденной ситуации Apache запишет в папку logs отчет из которого вы сможете понять, что именно пошло не так. Советую не забывать о полезности чтения логов.
На скрине представлен внешний вид замечательного файлового менеджера ОС семейства Linux под названием Midnight Commander. Запустить его можно набрав в терминале комаду mc.
Теперь в папке www свежесозданного хранилища файлов сайта test необходимо создать текстовый файл index.php. В Midnight Commander для создания текстового файла можно воспользоваться комбинацией клавиш Shift + F4.
В файле index.php, для проверки, напишем следующие сроки:
<p>Привет, Мир!</p>
<?php echo phpinfo() ?>
Первая строка приведенного выше кода выводит на экран статический текст Привет, Мир! Вторая строка предназначена для проверки работоспособности PHP: если все в порядке функция phpinfo() выведет таблицу с информацией о версии PHP, установленной на сервере.
Настройка Apache
При работе в операционной системе на базе Linux необходимо помнить о замечательной особенности: в Linux существует и свято соблюдается понятие прав доступа и дальнейшее повествования бессмысленно без рассмотрения этой важной темы.
Права доступа
У каталогов и файлов ОС, построенной на базе Linux, существует три степени доступа для трех категорий пользователей.
Сначала познакомимся с существующими категориями пользователей.
1. Категория владелец файла или каталога. В нашем случае, при создании каталога sites, test, www, logs и файла index.php, мы действовали от имени пользователя, под которым вошли в операционную систему.
Увидеть имя пользователя, под которым вы сейчас работаете, можно в окне Терминала.
На приведенном скриншоте имя пользователя olga.
Владельцем, созданных в сеансе активности пользователя olga каталогов и файлов, будет назначен пользователь olga.
Запустив файловый менеджер Midnight Commander в режиме суперпользователя командой sudo mc, вы получите доступ к работе со служебными файлами и каталогами. Однако, владельцем созданных файлов и каталогов в режиме суперпользователя будет назначен уже не пользователь olga, а суперпользователь root.
Работа в режиме суперпользователя идентифицируется знаком # в конце командной строки, в отличии от знака $ при работе в обычном режиме.
2. Следующая категория — группа владельца. Дело в том, что все пользователи ОС Linux распределены по группам. Рассматриваемая категория доступа относится к пользователям, входящим в туже группу, что и владелец.
3. Третья категория носит название все остальные. В данную категорию входят пользователи не попавшие в первую и вторую категории.
Для каждой из вышеописанных категорий пользователей может быть назначен свой уровень доступа к каталогам и файлам. Увидеть и отредактировать его можно, кликнув правой мышкой на папке или файле и выбрав пункт Свойства.
Но гораздо приятнее, лично для меня, воспользоваться Терминалом и посмотреть информацию о правах доступа посредством команды
ls -la put`_k_papke_ili_failu.
Выделенная на рисунке строка предоставляет полную информацию о правах доступа к папке test, которая расположена в каталоге /home/olga/sites/.
Расшифрую выделенную на скриншоте строку:
первая буква d информирует нам о том, что test — это директория;
rwxr-xr-x — обозначение степени доступа по три символа для каждой категории пользователей.
Теперь начинаем разбираться со степенями доступа.
В случае анализа прав доступа к директории первые три символа приведенной буквеннодефисной последовательности (rwx) характеризуют степень доступа категории владелец и означают следующее: категория владелец имеет право просматривать содержимое директории test (символ r), создавать новые файлы и подкаталоги в данной директории (w), переходить в директорию test (x).
В случае анализа прав доступа для файла: r — чтение файла, w — запись в файл, x — запуск файла.
Следующие три символа r-x характеризуют права одногруппников владельца на данную директорию. Символы r-x означают, что читать и переходить в данный каталог одногруппники владельца могут, но писать туда им запрещено, т. к. вместо w стоит прочерк.
Для всех остальных пользователей назначены точно такие же права, что и для одногруппников.
Теперь внимание! С данными файлами будет работать программа Apache. Возникает законный вопрос — от имени какого пользователя работает Apache и какие права нужно установить на файлы и директории сайта, чтобы было безопасно и все работало.
Ответ на этот вопрос можно найти в файле конфигурации Apache: /etc/apache2/apache2.conf. Параметры User и Group задают пользователя и группу, от имени которых будет действовать Apache.
Значение переменных ${APACHE_RUN_USER} и ${APACHE_RUN_GROUP} указаны в файле /etc/apache2/envvars:
Из скриншота видно, что Apache будет работать от имени пользователя www-data, состоящего в группе www-data.
Для нашего сайта test, владельцем папок и фалов которого является пользователь olga, www-data будет относится к третей категории пользователей, а именно все остальные.
Но позвольте, ведь частенько возникает необходимость давать полный доступ (rwx) пользователю, от имени которого работает Apache, к файлам и папкам сайта. А значит нам потребуется выдать полный доступ третей категории пользователей (всем подряд), чего делать совершенно не хочется из соображений безопасности.
Поэтому я предлагаю пойти другим путем. Добавим пользователя www-data к группе владельца файлов и папок сайта.
Для начала проверим, какая группа у владельца сайта. Воспользуемся командой ls -la:
Как видно из скриншота, группа владельца каталога с файлами сайта носит название olga.
Остается добавить пользователя www-data в группу olga. Сделать это можно командой:
sudo usermod -a -G olga www-data
Воспользуемся командой для просмотра групп пользователя, чтобы убедиться в успехе проделанной операции:
groups www-data
Теперь необходимо задать права для каталогов и файлов нашего сайта исходя из следующих соображений:
Владелец должен иметь возможность полного доступа к файлам и каталогам сайта (rwx). Действительно, мне же нужно создавать новые файлы сайта и редактировать существующие без всяких на то ограничений. Напомню, в ОС я работаю от имени пользователя olga.
Одногруппники, одним из которых является пользователь www-data, от чьего имени работает Apache, должны иметь возможность просматривать содержимое каталогов и файлов, а также запускать файлы (r-x). Однако, нужно иметь ввиду, что для некоторых папок сайта (например, тех куда Apache записывает новые файлы) требуются полные права (rwx).
Категории пользователей все остальные можно вообще не давать никаких прав (---).
Реализуем задуманное следующими командами:
sudo chmod -R 750 /home/olga/sites/
Данная команда дает полный доступ (rwx) для владельца директории sites (7), доступ на чтение и запуск (r-x) одногруппникам владельца (5) и запрещает доступ всем остальным (0 в конце).
Ключ -R говорит о том, что выполнить операцию смены прав доступа нужно рекурсивно, т. е. для всех файлов и подкаталогов внутри директории sites и для нее самой.
С правами доступа почти все 🙂
Займемся непосредственно настройкой Apache.
В Ubuntu существует некая особенность в настройке нового сайта. Конфигурационный файл для каждого из сайтов, запускаемых с нашего компьютера, должен быть свой. Хранятся они в папке /etc/apache2/sites-available.
Я предлагаю создать файл шаблонной конфигурации, на основе которого будут создаваться конфиги всех остальных сайтов (файл template на скриншоте выше).
Содержимое файла template описывает правила работы Apache с одним конкретным сайтов (в случае примера это сайт test):
<VirtualHost *:80>
ServerName test
# ServerAlias example.com
ServerAdmin webmaster@example.com
DocumentRoot /home/olga/sites/test/www
<Directory /home/olga/sites/test/www>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /home//olga/sites/test/logs/error.log
LogLevel warn
ServerSignature On
</VirtualHost>
В первой строке указывается доменное имя, по которому данный сайт будет доступен.
Вторая строка — это синоним доменного имени, по которому осуществляется доступ к этому же сайту. В моем случае она закомментирована символом # и в настройках не участвует.
Ниже указывается адрес эл. почты администратора.
Далее мы переходим к настройкам правил работы Apache с файлами сайта, расположенными в каталоге /home/olga/sites/test/www
Строка с директивами Options -Indexes FollowSymLinks MultiViews задает опции работы Apache с указанной директорией:
-Indexes — запрещает показ в бразуере содержимого каталогов в случае отсутствия запрашиваемого файла.
FollowSymLinks MultiViews — разрешения следовать по символическим ссылкам и разрешает поддержку многих языков (пусть будет, хуже не станет).
AllowOverride All разрешает использовать файлы дополнительной конфигурации .htaccess.
Следующий далее набор директив разрешает доступ к файлам сайта.
ErrorLog /home/olga/sites/test/logs/error.log — задает путь к файлу логов ошибок.
Более подробную информацию по директивам Apache можно получить здесь (англ.).
Скопируем содержимое файла шаблонной конфигурации и сохраним под именем нашего сайта, чтобы не путаться (в примере сайт называется test).
Для выполнения описанного действия удобно использовать Midnight Commander, запустив его в режиме суперпользователя, т. к. мы будем заниматься редактированием служебных файлов (команда sudo mc).
Копирование содержимого одного файла в другой осуществляется комбинацией клавиш Shif+F5.
Далее необходимо воспользоваться командой подключения файла конфигурации хоста test:
a2ensite test
Данная команда создаст ссылку на файл конфигурации
Кстати, отключить надоевший хост можно командой:
a2dissite test
Теперь нам осталось выполнить всего два действия:
Перезапустить Apache командой /etc/init.d/apache2 restart и добавить название нашего свежеиспеченного хоста в файл /etc/hosts и перенаправление на IP-адрес 127.0.0.1 (об этом мы подробно говорили в первой части руководства).
После перезапуска Apache в каталоге /home/olga/sites/test/logs/ создастся файл лога ошибок error.log. Владельцем данного файла будет являться суперпользователь root. Поэтому, чтобы у нас была возможность просматривать его содержимое нужно расширить права доступа третей категории пользователей разрешив им чтение данного файла (r—), ведь я работаю от имени пользователя olga и файлы пользователя root без соответствующего разрешения прочесть не смогу:
sudo chmod -R 774 /home/olga/sites/test/logs/error.log
774 – означает:
- root может читать, писать и запускать;
- одногруппники могут читать, писать и запускать;
- все остальные – только читать.
Вот и все, теперь можно запускать браузер, вводить URL http://test и наблюдать содержимое файла index.php, обработанного Apache.
P.S.: для работы большинства современных сайтов требуется модуль mod_rewrite. По умолчанию он не подключен. Подключить его можно командой:
a2enmod rewrite
По аналогии можно подключить и другие недостающие модули.
С уважением, Андрей Морковин.
У поста есть спонсор (как им стать):
Спонсор предлагает услуги по автоматизации процессов предприятия. Здесь очень важно не промахнуться с выбором исполнителя. Ознакомьтесь с тем, что же такое автоматизация процессов предприятия по мнению спонсора статьи.