Установка и настройка Apache, PHP, MySQL в Ubuntu. Часть 2



Установка и настройка Apache, PHP, MySQL в Ubuntu. Часть 2

Итак, уважаемый читатель, сегодня мы займемся непосредственно установкой и настройкой 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.comServerAdmin webmaster@example.com

DocumentRoot /home/olga/sites/test/www

<Directory /home/olga/sites/test/www>Options -Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow,denyallow 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

По аналогии можно подключить и другие недостающие модули.

С уважением, Андрей Морковин.

У поста есть спонсор (как им стать):

Спонсор предлагает услуги по автоматизации процессов предприятия. Здесь очень важно не промахнуться с выбором исполнителя. Ознакомьтесь с тем, что же такое автоматизация процессов предприятия по мнению спонсора статьи.


http://www.sdelaysite.com/besplatnoe-po/ustanovka-apache-php-mysql-ubuntu-2

Губарь Маргарита Александровна