Итак, уважаемый читатель, сегодня мы займемся непосредственно
установкой и настройкой Apache + PHP + MySQL в Ubuntu.
Установка Apache В
Терминале необходимо выполнить команду:
sudo apt-get install apache2 libapache-mod-auth-mysql Команда
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.[INDENT]Запустив файловый менеджер
Midnight Commander в режиме суперпользователя командой
sudo mc, вы получите доступ к работе со служебными файлами и каталогами. Однако,
владельцем созданных файлов и каталогов в режиме суперпользователя будет назначен уже не пользователь
olga, а суперпользователь
root.
[/INDENT]
Работа в режиме суперпользователя идентифицируется знаком
# в конце командной строки, в отличии от знака
$ при работе в обычном режиме.
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):
Code: Select all
<VirtualHost *:80>
ServerName test
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 /homeLogLevel 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 — задает путь к файлу логов ошибок.
Скопируем содержимое файла шаблонной конфигурации и сохраним под именем нашего сайта, чтобы не путаться (в примере сайт называется
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 По аналогии можно подключить и другие недостающие модули.