Пятница, 27 января, 2012 года

Apache + MySQL + PHP + phpMyAdmin в Xubuntu 11.10




 

Продолжаю тюнинг Xubuntu, начало читаем здесь. Собственно, этот материал я для себя запостил. Сегодня все настроил и все работает, а через год нужно будет еще комп настроить. Так вот, дабы не перерывать пол интернета, чтобы освежить все в памяти, мне достаточно будет открыть этот пост 🙂

Установка Apache

Итак, заходим в менеджер пакетов Synaptic и вбиваем в поиск слово «apache2».

Установка Apache  в Xubuntu 11.10

Установка Apache в Xubuntu 11.10

Пакет «аpache2» является метапакетом, его установка повлечет за собой установку пакетов apache2-mpm-worker, apache2-utils, apache2.2-bin, apache2.2-common и ряда библиотек. Все вместе весит чуть больше 10МБ.

Отмечаем пакет «apache2» для установки, соглашаемся с установкой дополнительных пакетов, нажимаем «применить».

Все, Apache установлен. Переходим в браузере по адресу http://localhost/, чтобы проверить работоспособность. Если все сделали правильно, должно вывестись сообщение «It works!».

It works! Apache установлен.

It works! Apache установлен.

Для проверки статуса сервера, его включения, выключения, рестарта или перезагрузки данных конфигурации используются следующие команды:

sudo /etc/init.d/apache2 status
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 reload

Start, restart и reload надо производить с root правами (используя sudo), в противном случае будет ошибка примерно такого содержания:

Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

Это связано с тем, что работать с портами 0-1024 можно только имея административные права (в данном случае используется 80-й порт, стандартный для веб-сервера).

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

Файл конфигурации Apache хранится по адресу /ect/apache2/apache2.conf
Привычный файл httpd.conf располагается в той же папке и предназначен для пользовательской конфигурации, поэтому изначально пуст.

Корневым каталогом для сервера является каталог /var/www. Если в него заглянуть, можно обнаружить файл index.html, именно содержание этого файла нам вывелось, когда мы набрали в браузере «http://localhost/».

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

Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName»

то стоит прописать ServerName вручную.

Открываем файл httpd.conf в редакторе gedit с правами администратора

sudo gedit /etc/apache2/httpd.conf

прописываем

ServerName 127.0.0.1

и сохраняем.

Установка PHP

Переходим в менеджер пакетов Synaptic и вводим в поиск «php5».

Установка PHP в Xubuntu 11.10

Установка PHP в Xubuntu 11.10

Отмечаем и устанавливаем метапакет «php5», в который помимо всего прочего входит модуль php5 для Apache libapache2-mod-php5.

PHP установлен, осталось только его проверить. Для этого создаем в папке /var/www файл test.php. Так как на папку www стоят права 755, никто кроме root-а не имеет прав доступа на изменения чего-либо в ней.

Наберем в терминале

sudo gedit /var/www/test.php

Это команда создает от имени администратора файл test.php и открывает его для изменения в текстовом редакторе gedit.

Вписываем в открывшийся документ следующий код:

<?php
phpinfo();
?>

Сохраняемся. К слову, созданный файл получил права 644, что также оставляет права на редактирование только за root-ом.

После этого перезапускаем Apache и переходим в браузере по адресу http://localhost/test.php. Если все сделали правильно, то должна вывестись информация о php:

PHP установлен

PHP установлен

Конфигурационный файл php находится в /etc/php5/apache2filter/php.ini, права на файл выставлены 644, поэтому что-либо изменить в нем можно только открыв файл для редактирования с root правами. Советую сразу в php.ini изменить строчку «display_errors = Off» на «display_errors = On», в противном случае если в коде будут какие-то ошибки, браузером будет отдаваться пустая страница без пояснений. Также не ищите в файле php.ini подключаемых расширений, код для их подключения находится в ini файлах в папке /etc/php5/apache2filter/conf.d. Этот каталог при каждом запуске сервера сканируется, и информация из расположенных в нем ini файлов подключается к главному конфигурационному файлу php.ini.

Установка MySQL

Переходим в Synaptic, вбиваем в поиск «mysql-server-5.1», отмечаем для установки пакет «mysql-server», который является метапакетом и потянет за собой как сам MySQL сервер последней версии, так и другие пакеты, в частности пакет MySQL клиента mysql-client-5.1.

Установка MySQL в Xubuntu 11.10

Установка MySQL в Xubuntu 11.10

Соглашаемся с установкой дополнительный пакетов и кликаем на «Применить». В процессе установки у нас скорее всего потребуют ввести и подтвердить пароль для root-пользователя базы данных (ничего общего с root-ом самой Linux он не имеет). Вводим, подтверждаем и ждем завершения установки пакетов.

СУБД MySQL установлена. По умолчанию создаются две базы данных, mysql (системная) и information_schema (своего рода информационная метабаза, данные в ней нельзя редактировать или удалять, только просматривать, также под нее не создается отдельного каталога).

Проверим, действительно ли создались эти две базы данных. Для работы в MySQL в консоле и выполнения SQL запросов воспользуемся утилитой mysql (входит в состав пакета mysql-client, который мы уже установили).

sudo mysql -u root -p

У вас будет запрошен пароль к root, а потом к MySQL который мы ввели при установке. Вводим их. В результате мы должны получить приглашение командной строки для ввода команд MySQL и выражений на языке SQL. Запросим показать имеющиеся базы данных.

show databases;

Должен вывестись список имеющихся баз данных, в нашем случае это mysql и information_schema.

Выходим из mysql:

exit;

Выглядеть это должно примерно так:

Созданные при установке MySQL базы данных

Созданные при установке MySQL базы данных

Для старта, остановки или перезагрузки MySQL используйте команды:

sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql restart

Если эти команды будут приводить к сообщениям вида

Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart mysql

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

sudo service mysql start
sudo service mysql stop
sudo service mysql restart

Главный конфигурационный файл MySQL находится в /etc/mysql/my.cnf Каталоги с базами данных по умолчанию находятся в /var/lib/mysql Право на просмотр и редактирования содержимого этого каталога имеет только пользователь с root правами. Для выполнения действий с файлами удобно использовать Midnight Commander, запустив его в режиме суперпользователя, т. к. мы будем заниматься редактированием служебных файлов

sudo mc
Midnight Commander в Xubuntu 11.10

Midnight Commander в Xubuntu 11.10

Установка phpMyAdmin

Консоль это конечно хорошо, но не слишком удобно. Поэтому установим phpMyAdmin, веб-интерфейс для администрирования СУБД MySQL.

Переходим в Synaptic, вбиваем в поиск «phpmyadmin» и отмечаем для установки пакет с аналогичным названием, соглашаемся на установку дополнительных пакетов, применяем изменения.

Установка phpMyAdmin в Xubuntu 11.10

Установка phpMyAdmin в Xubuntu 11.10

Во время установки пакета вам надо будет ответить на несколько вопросов. В качестве веб-сервера надо выбрать Apache2, согласиться с автоматической настройкой phpMyAdmin, ввести root пароль MySQL и назначить пароль для самой phpMyAdmin.

PhpMyAdmin установлен, переходим по адресу http://localhost/phpmyadmin/, вводим логин (root) и пароль (который мы назначили в процессе установки phpMyAdmin) и оказываемся в административной части.

Мы вошли phpMyAdmin

Мы вошли phpMyAdmin

Файлы конфигурации phpMyAdmin хранятся в /etc/phpmyadmin, сам phpMyAdmin лежит в /usr/share/phpmyadmin, а не в /var/www, как можно было бы подумать (в конфигурационном файле /etc/phpmyadmin/apache.conf прописан алиас «Alias /phpmyadmin /usr/share/phpmyadmin»).

Установка модулей Apache

Скорее всего, нам рано или поздно придется ставить некоторые модули для Apache. Какие-то модули уже установлены, но не активированы, какие-то придется выкачивать используя все тот же Synaptic.

Скаченные и доступные модули хранятся в папке /etc/apache2/mods-available, включенные — в папке /etc/apache2/mods-enabled (папка содержит символические ссылки на доступные модули из папки mods-available).

В первую очередь нас интересует модуль mod_rewrite (если коротко — используется для ЧПУ, 301 редиректа, организации запрета хотлинков) и mod_include (SSI — включения на стороне сервера).

Модуль mod_rewrite у нас уже установлен (/etc/apache2/mods-available/rewrite.load), осталось его только активировать.

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

sudo a2enmod модуль
sudo a2dismod модуль

Где a2enmod расшифровывается как Apache2 enable module, т.е. включить модуль апача, а a2dismod наоборот, выключить.

Включим модуль mod_rewrite:

sudo a2enmod rewrite

Включим модуль mod_include:

sudo a2enmod include

и перезагрузим апач:

sudo /etc/init.d/apache2 restart

Моды установлены. Теперь, если мы перейдем по адресу http://localhost/test.php (где мы сделали вывод функции phpinfo), то в графе «Loaded Modules» мы увидим наши активированные модули mod_rewrite и mod_include.

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

По умолчанию корневой директорий у нас является /var/www, но это не очень удобно. Хочется для каждого сайта создать отдельную папку, получить полную свободу действий без ограничений по правам (хотя, конечно, и на /var/www права изменить никто не запрещает).

Создадим в нашем домашнем каталоге (/home/username) папку www, в ней папку evrostroika.ru (это один из моих доменов, вы можете назвать как угодно), а в папке evrostroika.ru папку public. Создадим и поместим в папку public файл test.php следующего содержания:

<?php
echo 'Hello, world!';
?>

Теперь необходимо сделать так, чтобы при обращении в браузере к адресу http://evrostroika.ru или http://www.evrostroika.ru на экран выводилась надпись «Hello, world!».

Зайдем в папку /etc/apache2. Здесь мы увидим помимо прочего два каталога — sites-available и sites-enabled. Как и в случае с модулями, в папке sites-available хранится информация о существующих хостах, а в папке sites-enabled о подключенных, причем файлы в ней являются символическими ссылками на файлы из папки sites-available.

Создадим в каталоге sites-available файл evrostroika.ru (к слову, назвать его можно как угодно, но так просто легче не запутаться) и откроем его для редактирования

sudo gedit /etc/apache2/sites-available/evrostroika.ru

Скопируем в него полностью содержимое файла /etc/apache2/sites-available/default

Копирование содержимого одного файла в другой удобно осуществляется в Midnight Commander комбинацией клавиш Shif+F5.

Копируем содержимое файлов в Midnight Commander

Копируем содержимое файлов в Midnight Commander

После копирования открываем файл /etc/apache2/sites-available/evrostroika.ru и правим пути к папкам, разрешим использовать файл .htaccess для этого хоста, и добавляем кому что еще необходимо, по потребности. Я изменил и директорию для сохранения логов (необходимо создать и папку logs по новому адресу), но это необязательно. У меня содержимое выглядит так:

<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 ServerName evrostroika.ru
 ServerAlias www.evrostroika.ru
 
 DocumentRoot /home/youtoo/www/evrostroika.ru/public
<Directory /home/youtoo/www/evrostroika.ru/public/>
 Options Indexes FollowSymLinks MultiViews +Includes
 AllowOverride All
 Order allow,deny
 allow from all
 AddType text/html .shtml
 AddOutputFilter INCLUDES .shtml
</Directory>
 
 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
 Order allow,deny
 Allow from all
</Directory>
 
 ErrorLog /home/youtoo/www/evrostroika.ru/logs/error.log 
 
 LogLevel warn 
 
 ServerSignature On 
 
</VirtualHost>

Переходим к редактированию файла hosts.

sudo gedit /etc/hosts

Добавляем строчку

127.0.0.1 evrostroika.ru www.evrostroika.ru

и закрываем файл hosts с применением изменений.

Осталось только включить наш сайт, перезапустить апач и проверить, все ли работает нормально.

Включаем сайт:

sudo a2ensite evrostroika.ru

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

sudo a2dissite evrostroika.ru

Перезагружаем апач

sudo /etc/init.d/apache2 restart

или

sudo /etc/init.d/apache2 reload

Отвлекусь, после перезапуска Apache в каталоге /home/youtoo/www/evrostroika.ru/logs/ создастся файл лога ошибок error.log. Владельцем данного файла будет являться суперпользователь root. Поэтому, чтобы у нас была возможность просматривать его содержимое нужно расширить права доступа третьей категории пользователей разрешив им чтение данного файла (r—), ведь я работаю от имени пользователя youtoo и файлы пользователя root без соответствующего разрешения прочесть не смогу:

sudo chmod -R 774 /home/youtoo/www/evrostroika.ru/logs/error.log

Переходим в браузере по адресам evrostroika.ru/test.php и http://www.evrostroika.ru/test.php В обоих случаях должна выводиться надпись «Hello, world!»

Hello, world!

Hello, world!

И напоследок о правах доступа

У каталогов и файлов ОС, построенной на базе Linux, существует три степени доступа для трех категорий пользователей.

Сначала познакомимся с существующими категориями пользователей.

1. Категория владелец файла или каталога. В нашем случае, при создании каталога www, evrostroika.ru, logs, public и файлы в ней, мы действовали от имени пользователя, под которым вошли в операционную систему. В моем случае это youtoo.

2. Следующая категория — группа владельца. Дело в том, что все пользователи ОС Linux распределены по группам. Рассматриваемая категория доступа относится к пользователям, входящим в туже группу, что и владелец.

3. Третья категория носит название все остальные. В данную категорию входят пользователи не попавшие в первую и вторую категории.

Для каждой из вышеописанных категорий пользователей может быть назначен свой уровень доступа к каталогам и файлам.

Воспользуемся Терминалом и посмотрим информацию о правах доступа посредством команды

ls -la <путь к папке>

Расшифрую типичную строку из той что мы увидим в Терминале:

drwxr-xr-x 39 youtoo youtoo 4096 2012-01-27 18:12 ...

первая буква d информирует нам о том, что youtoo — это директория;

rwxr-xr-x — обозначение степени доступа по три символа для каждой категории пользователей.

Теперь начинаем разбираться со степенями доступа.

В случае анализа прав доступа к директории первые три символа приведенной буквенно-дефисной последовательности (rwx) характеризуют степень доступа категории владелец и означают следующее: категория владелец имеет право просматривать содержимое директории youtoo (символ r), создавать новые файлы и подкаталоги в данной директории (w), переходить в директорию youtoo (x).

В случае анализа прав доступа для файла: r — чтение файла, w — запись в файл, x — запуск файла.

Следующие три символа r-x характеризуют права одногруппников владельца на данную директорию. Символы r-x означают, что читать и переходить в данный каталог одногруппники владельца могут, но писать туда им запрещено, т. к. вместо w стоит прочерк.

Для всех остальных пользователей назначены точно такие же права, что и для одногруппников.

Теперь внимание! С нашими файлами в папке WWW будет работать программа Apache. Возникает законный вопрос — от имени какого пользователя работает Apache и какие права нужно установить на файлы и директории сайта, чтобы было безопасно и все работало.

По умолчанию Apache будет работать от имени пользователя www-data, состоящего в группе www-data.

Для нашего сайта(тов) в папке www, владельцем папок и фалов является пользователь youtoo, www-data будет относится к третей категории пользователей, а именно все остальные.

Но позвольте, ведь частенько возникает необходимость давать полный доступ (rwx) пользователю, от имени которого работает Apache, к файлам и папкам сайта. А значит нам потребуется выдать полный доступ третей категории пользователей (всем подряд), чего делать совершенно не хочется из соображений безопасности.

Поэтому я предлагаю пойти другим путем. Добавим пользователя www-data к группе владельца файлов и папок сайта.

Добавляем пользователя www-data в группу youtoo. Сделать это можно командой:

sudo usermod -a -G youtoo www-data

Воспользуемся командой для просмотра групп пользователя, чтобы убедиться в успехе проделанной операции:

groups www-data

Теперь необходимо задать права для каталогов и файлов нашего сайта исходя из следующих соображений:

Владелец должен иметь возможность полного доступа к файлам и каталогам сайта (rwx). Действительно, мне же нужно создавать новые файлы сайта и редактировать существующие без всяких на то ограничений. Напомню, в ОС я работаю от имени пользователя youtoo.

Одногруппники, одним из которых является пользователь www-data, от чьего имени работает Apache, должны иметь возможность просматривать содержимое каталогов и файлов, а также запускать файлы (r-x). Однако, нужно иметь ввиду, что для некоторых папок сайта (например, тех куда Apache записывает новые файлы) требуются полные права (rwx).

Категории пользователей все остальные можно вообще не давать никаких прав (—).

Реализуем задуманное следующими командами:

sudo chmod -R 750 /home/youtoo/www/

Данная команда дает полный доступ (rwx) для владельца директории www (7), доступ на чтение и запуск (r-x) одногруппникам владельца (5) и запрещает доступ всем остальным (0 в конце).

Ключ -R говорит о том, что выполнить операцию смены прав доступа нужно рекурсивно, т. е. для всех файлов и подкаталогов внутри директории www и для нее самой.

Ну вот и с правами доступа закончили!




 

7 комментариев на “Apache + MySQL + PHP + phpMyAdmin в Xubuntu 11.10”

  1. dfx Пишет:
    22 апреля, 2012 в 22:47

    вот очень хорошая инструкция для поднятия вэбсервера lamp.drupalogy.ru

  2. kaze Пишет:
    27 июня, 2012 в 01:29

    Все получилось и работает за что автору сердечная благодарность

  3. you too Пишет:
    28 июня, 2012 в 21:43

    kaze Спасибо)

  4. minasfilm Пишет:
    23 сентября, 2013 в 15:36

    такой вопрос к автору

    а как можно указать для апача под xubuntu общий DocumentRoot вместо /var/www

    ?

  5. you too Пишет:
    30 сентября, 2013 в 22:47

    minasfilm Видимо, поменять в файле конфигурации параметр DocumentRoot и поставить права на папку

  6. minasfilm Пишет:
    30 сентября, 2013 в 23:07

    нет, там сложнее намного

    позже м.б. напишу что и как

  7. Вячеслав Пишет:
    16 января, 2014 в 23:06

    Не пойму, почему по команде:

    sudo a2ensite evrostroika.ru

    появляется уведомление, что сайт не существует...

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

Записи в RSS и Комментарии в RSS.