среда, 15 января 2014 г.

Установка Apache, PHP, MySQL на Ubuntu 11 и автоматическое добавление локальных хостов

Тема установки и настройки Apache, PHP, MySQL, встречается гораздо чаще чем грибы в лесу моего родного города. Но все равно хочется к ней вернутся чтоб добавить автоматическое создания локальных хостов. Да и себе на заметку, людям в помощь. И так приступим.

Установка apache:
sudo apt-get install apache2 apache2-mpm-prefork apache2-utils apache2-suexec

Проверить работу нашего сервера очень просто, перейдем по адресу в браузере localhost и увидим заветную надпись — It works! Но не спешите радоваться это только начало.
Продолжаем, установим php:
sudo apt-get install php5 php5-mysql libapache2-mod-php5 php-pear

Установка MySQL сервера:
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

При установке необходимо ввести пароль для root пользователя MySQL.
Установка phpmyadmin:
sudo apt-get install phpmyadmin

Необходимо выбрать сервер, конечно же Apache, затем пароль пользователя базы данных MySQL и пароль для самого phpmyadmin.
Что бы все изменения вступили в силу, перезапустим сервер:
sudo service apache2 restart

Проверить работу можно по ссылке localhost/phpmyadmin  или адрес сервера/phpmyadmin
Теперь примемся за конфигурацию локального хоста для наших сайтов. Попытаемся автоматизировать весь этот процесс. Автоматическое создание виртуальных хостов, для этого мы используем модуль mod-macro. Этот модуль позволяет определить и использовать для конфигурации макросы в Apache.
Устанавливаем mod-macro:
sudo apt-get install libapache2-mod-macro

Включаем:
sudo a2enmod macro

Создаем файл для макроса (шаблона) виртуального хоста:
sudo mkdir /etc/apache2/conf.d/custom
sudo nano /etc/apache2/conf.d/custom/vhosts

Вставляем туда следующий код:
<Macro VHost $host $path> 
    <VirtualHost *:80> 
        DocumentRoot "$path" 
        ServerAdmin vanya@localhost 
        ServerName $host 
        ServerAlias www.$host 

        DirectoryIndex index.php index.html index.htm index.shtml 

        <Directory "$path"> 
        Options FollowSymLinks 
         Options all 
                AllowOverride All 
        </Directory> 
    </VirtualHost> 
</Macro>

Напишем скрипт для запуска макроса и добавление хоста, создадим файл:
sudo nano /bin/addvhosts
в него добавим:
#!/bin/bash 

if [ x$1 = x"" ]; then 
  echo "please enter: host-name [macros-name]"; 
  exit 0; 
fi 

host="$1.loc" 
dir="$1" 
macros="$2" 

if [ x$macros = x"" ]; then 
  macros="VHost" 
fi 

mkdir -p /home/www-data/www/$dir 
chown -R www-data /home/www-data/www/$dir 
chmod -R 0777 /home/www-data/www/$dir 

echo "Use $macros $host /home/www-data/www/$dir" >> /etc/apache2/conf.d/custom/vhosts 
echo "127.0.0.1 $host www.$host" >> /etc/hosts 

cd /home/www-data/www/$dir 

apache2ctl configtest && apache2ctl graceful

делаем файл исполняемым:
sudo chmod +x /bin/addvhosts

И создание хоста:
sudo addvhosts test

Сделаем тест для нашего сайта, напишем:
<?php
    phpinfo();
?>

в созданном файле:
nano /home/www-data/www/test/index.php

Осталось запустить наш браузере — test.loc, если вы на экране увидели информацию об установленном php, значит все работает.
Будьте внимательны, в зависимости от настроек вашего сервера, пути расположения исходных директорий могут отличаться.