Установка и настройка веб-сервера LAMP для разработки на PHP

Много начинающих веб-разработчиков переходят на дистрибутивы на базе Linux только лишь для того, чтобы создать свой стабильный веб-сервер для тестирования и отладки своих проектов. И проекты чаще всего, конечно же, на PHP. В данной статье я предлагаю Вам свой способ развертывания веб-сервера LAMP (Linux+Apache+MySQL+PHP) в очень доступной форме.

Данный способ уже несколько лет использую на .deb-based дистрибутивах. Ранее веб-сервер был установлен и отлично работал на Debian, Mint, Ubuntu, LMDE (с некоторыми поправками) и сейчас работает на elementaryOS.

Итак, начнем.

Заранее предполагаем, что наш сайт должен быть доступен по адресу mysite.zz, а папка с файлами сайта расположена по пути /home/user/server/mysite.zz. Веб-сервер будет устанавливаться на ElementaryOS. Поэтому в процессе настройки будет использован стандартный текстовый редактор scratch-text-editor. Можно использовать любой текстовый редактор, заменив «scratch-text-editor» на название своего редактора.

1. Установка необходимых пакетов


Вводим в терминале
sudo apt-get install apache2 mysql-server php5 phpmyadmin

При установке пакетов нам будет необходимо выполнить их предварительную настройку в псевдографическом режиме терминала.
В первом окне нам предлагают ввести пароль для MySQL пользователя «root». Вводим пароль и подтверждаем его:
ввод пароля для MySQL пользователя root
image

подтверждение пароля для MySQL пользователя root

Далее идет настройка phpmyadmin.
Здесь нас спросят, какой веб-сервер использовать для запуска phpmyadmin. Отмечаем apache2 клавишей пробела и жмем enter:
выбор веб-сервера для запуска phpmyadmin

На следующем экране читаем некоторую информацию и жмем enter
некоторая информация

Далее подтверждаем настройку базы при помощи dbconfig-common:
подтверждение настройки при помощи dbconfig-common

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






2. Проверка работы сервера и phpmyadmin


Переходим в любом браузере по адресу localhost. Если сервер нормально установлен, то мы должны увидеть тестовую страницу сервера:
тестовая страница сервера

Для доступа к phpmyadmin переходим по ссылке localhost/phpmyadmin. Вводим логин «root» и пароль, введенный ранее:
страница входа phpmyadmin

Там же можно изменить язык интерфейса phpmyadmin.

Если все сделано верно, то мы перейдем к управлению нашими базами:
главная страница phpmyadmin


3. Настройка сервера


Создаем ссылку на phpmyadmin в /var/www
sudo ln -s /etc/phpmyadmin /var/www

Открываем конфигурационный файл сервера:
sudo scratch-text-editor /etc/apache2/apache2.conf

и добавляем в конец файла строчку:
ServerName localhost:80

/etc/apache2/apache2.conf


4. Добавление нашего сайта


Открываем файл hosts для добавления нашего сайта:
sudo scratch-text-editor /etc/hosts

и добавляем в файл строчку
127.0.1.1	mysite.zz

/etc/hosts


Создаем в любой папке конфигурационный файл сайта с названием «mysite.zz» с содержанием
<VirtualHost *:80>
  ServerAlias mysite.zz www.mysite.zz
  DocumentRoot /home/user/server/mysite.zz
  <Directory home/user/server/mysite.zz/>
    AllowOverride All
  </Directory>
</VirtualHost>

и копируем его с правами суперпользователя в /etc/apache2/sites-available
sudo cp полный_путь_к_файлу /etc/apache2/sites-available/

Активируем наш сайт:
sudo a2ensite mysite.zz

Активируем модуль mod-rewrite (необходим для реализации ЧПУ):
sudo a2enmod rewrite

И перезапускаем сервер:
sudo /etc/init.d/apache2 restart


5. Проверка работы нашего сайта


Создаем файл index.php в папке нашего сайта (/home/user/server/mysite.zz), например, с таким содержанием:
<?
echo 'hello!))';
?>

Далее в любом браузере переходим по адресу mysite.zz
тестовая страница нашего сайта

Если мы видим нашу страничку, то все сделали верно.

6. Возможные проблемы


Phpmyadmin не доступен по адресу localhost/phpmyadmin

Для исправления этой ошибки необходимо переконфигурировать phpmyadmin
sudo dpkg-reconfigure phpmyadmin


Следующие проблемы мной наблюдались только в LMDE. Но не исключено, что могут встретиться в других дистрибутивах.

Доступ к нашему сайту может быть запрещен сервером

Для исправления этой проблемы к имени конфигурационного файла нашего сайта в /etc/apache2/sites-available необходимо добавить расширение .conf
mysite.zz.conf

содержание файла должно быть отредактировано следующим образом
<VirtualHost *:80>
  ServerAlias mysite.zz www.mysite.zz
  DocumentRoot /home/user/server/mysite.zz
  <Directory home/user/server/mysite.zz/>
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

А активация сайта должна производиться по имени конфига
sudo a2ensite mysite.zz.conf


Не определяется логин и пароль при входе в phpmyadmin

Для исправления этой ошибки внесем некоторые изменения в конфигурационный файл phpmyadmin.
Открываем его
sudo scratch-text-editor /etc/phpmyadmin/config.inc.php

и добавляем следующие строчки
$dbuser = 'root';
$dbpass = 'kenny';

после строк
$cfg['Servers'][$i]['controluser'] = $dbuser;
$cfg['Servers'][$i]['controlpass'] = $dbpass;

Теперь phpmyadmin должен распознать наш логин и пароль.

Дополнение


В данной статье не было рассмотрено подключение проекта к базе данных. Вариантов подключения очень много как в процедурном PHP, так и в объектно-ориентированном. Единственное, что могу сказать по этому поводу, это то, что при любой реализации подключения к определенной базе необходимо будет использовать пользователя «root» и пароль, который мы указывали при настройке пакетов при их установке.

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

И в заключение отмечу, что настройки конфигурационный файл PHP php.ini находится в директории /etc/php5/apache2/.

Удачных Вам проектов и чистого кода!
Share post

Comments 32

    +13
    Таких «туториалов» дофига и ещё немного в интернете.
    Зачем это здесь?
      –16
      Ни одного внятного туториала не нашел. Или я плохо искал?
        +5
        Я всё понимаю, но это действительно не повод размещать подобное на хабре (люди не поймут).
        Лучше спрятать и написать что-нибудь интересное.
        Но это лишь ИМХО.
          –9
          Кому как… Статья ориентирована на новичков, которые частенько хабр навещают.
            +4
            Ну что же спорить-то? Человек дельный совет дал: спрячьте это и напишите что-то поинтереснее.
              0
              Ну, если уж статья совсем для новичков, то надо было использовать какой нибудь стандартный текстовый редактор, а не спец разработку elementaryOS — scratch-text-editor. Или описали бы как установить его на *.deb дистрибутиве. А то новички не разберутся :)
                –1
                Спасибо. Не учел. Сделал поправку в начале поста.
            +1
            Гугл по «Установка и настройка веб-сервера LAMP для разработки на PHP» выдает как минимум 3 годных туториала… Помимо этого.
              +2
              А по «Ubuntu LAMP install» ещё больше.
              +1
              Еще лет 10 назад их было столько, что википедия в текущем состоянии меньше. У меня только одну мысль это вызывает — человек захотел инвайт нахаляву.
            +4
            Не шути так, прячь пока не поздно…
              +1
              К слову сказать, мануал 6ти летней давности чуть полнее
                –5
                Еще раз повторюсь: мануал для новичков. Какому новичку на локалхосте в начале освоения нужны SSL, imagemagick, система контроля версий и прочее? Людей в таких постах нагружают всем, чем можно, половина функциональности чего и не используется.
                  +2
                  Ок, сейчас напишу как установить апач без php на Ubuntu, а Вы пока начинайте писать, как установить php без апача… Ведь не каждому новичку нужны сразу и апач и php.
                    –9
                    А к чему php без апача?
                      +2
                      Вообще говоря, есть много причин для подобной конфигурации, бывают ситуации, когда http не нужен(честно), или для использования другого HTTP-сервера, да того же php -S localhost:8080, новичок же.
                        –6
                        Ну это уже не по теме. В топике рассматривается быстрое создание сервака на локалхосте для создания и тестирования сайтов.
                          0
                          про то, когда не нужен согласен, а вот php -S активно использую на домашнем ноуте…
                          без апача, получается куда более быстрое создание сервака на локалхосте.
                        0
                        к nginx, например :)
                          –2
                          ну я здесь имею ввиду сервер под «апачем»)
                        –6
                        В основном новичкам и нужны апач, php и базы, ну и, конечно же, ЧПУ для красявости. А остальное уже потом.
                        +2
                        А вот про систему контроля версий новичку лучше узнать как можно раньше.
                        Желательно сразу же сделать в папке с пробным кодом git init, а дальше уже читать, читать, читать…
                      +6
                      Имхо, если учить новичка то уж лучше nginx +php_fpm. Такая связка на дешевом vps куда быстрее шевелится.
                        +1
                        Сегодня какой-то капитанский день
                        habrahabr.ru/post/220127/#first_unread
                          +5
                          Господи…
                          vagrant up
                            +9
                            да, кстати…
                            при любой реализации подключения к определенной базе необходимо будет использовать пользователя «root» и пароль

                            Хороший совет для продакшна от Григория Остера
                              +2
                              sudo apt-get install apache2 mysql-server php5 phpmyadmin
                              

                              Избыточно. Достаточно этого:
                              sudo apt-get install mysql-server phpmyadmin
                              
                                +1
                                Надо добавить в правила Хабра:
                                Как только вы в первый раз настроили LAMP и подумали «Хм, а неплохо бы мануал на Хабр запилить», выключайте коми и идите спать.
                                  –2
                                  Хорош уже умничать…
                                  Человек пришел на хабр, запостил туториал для новичков, чтобы внести свой вклад, а потом и что-то по-интереснее запостить. А тут понабежали критики и все обосрали. Думал нормальные люди сидят…
                                    0
                                    Почему бы сразу что-то поинтереснее не запостить? Почему нужно начинать с «туториала для новичков», которых миллионы на одном только Хабре?
                                      0
                                      Времени пока совсем нет. Решил с простого. Как будет время, так выложу. Я вообще думал не пропустят пост.
                                      0
                                      хороший совет для новичка — это в первую очередь научиться пользоваться поиском.

                                  Only users with full accounts can post comments. Log in, please.