Дистрибутив Debian рассматривается в первую очередь как самая стабильная операционная система, поэтому довольно часто он используется на серверах для размещения сайтов. Также часто пользователи Linux вынуждены устанавливать программное обеспечение для работы сайтов на локальную машину чтобы иметь возможность все протестировать и привести в порядок перед отправкой во всемирную сеть.
В этой статье мы рассмотрим как выполняется установка LAMP Debian 9. Аббревиатура LAMP расшифровывается как Linux Apache Mysql PHP, это набор программного обеспечения, который чаще всего используется для размещения сайтов. Раньше мы уже говорили про установку LAMP в Ubuntu, процесс не будет очень сильно отличаться в Debian, но все же есть нюансы.
Содержание статьи
Установка LAMP в Debian
Сначала мы установим все необходимые компоненты, а затем будем настраивать их и проверять правильность работы по мере необходимости. Но сначала нужно обновить систему до последней версии:
sudo aptitude update && sudo aptitude upgrade
1. Установка компонентов
Сначала установим веб-сервер и интерпретатор языка программирования PHP:
sudo aptitude install apache2 php php-mysql libapache2-mod-php php-mbstring php-zip php-gd
Мы установили не только веб-сервер, но и основные библиотеки PHP, которые могут понадобиться для работы с графикой, строками и сжатыми архивами. Пакет libapache2-php отвечает за интеграцию поддержки php для веб-сервера Apache.
Перед тем как перейти к настройке всего этого, нужно установить систему управления базами данных. Вы можете использовать MySQL либо же версию, разрабатываемую сообществом - MariaDB. Для установки MariaDB выполните:
sudo aptitude install mariadb-server mariadb-client mariadb-common
А для установки MySQL:
sudo aptitude install mysql-server mysql-client mysql-common
В этой статье мы будем рассматривать MariaDB, но работа с MySQL не будет очень сильно отличаться.
2. Настройка Apache и PHP
Уже прошли те времена, когда для того чтобы подключить PHP к Apache нужно было пересмотреть кучу конфигурационных файлов, теперь установка LAMP Debian 9 выполняется достаточно просто. Если уже сейчас запустить Apache, и ввести адрес localhost, то все будет работать. Но давайте сначала добавим домен к нашему сайту. На локальной машине это тоже полезно. Сначала создадим папку для сайта:
sudo mkdir /var/www/test-site/
Конфигурационные файлы виртуальных хостов хранятся в каталоге /etc/apache2/sites-available/ просто скопируйте конфигурацию по умолчанию 000-default в новый файл:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test-site.conf
Теперь полученный файл нужно отредактировать. Нас будут интересовать директивы ServerName и DocumentRoot. Установите для них правильные значения:
Все остальное можно оставить по умолчанию. Дальше сохраните изменения и активируйте сайт командой:
sudo a2ensite test-site.conf
Теперь осталось перезапустить Apache:
Чтобы проверить как все работает создайте файл index.php со следующим содержимым в папке /var/www/test-site/:
Если домен зарегистрирован в интернете и все запросы к нему направляются на ваш ip то уже можно открыть сайт в браузере. Если же нет, вы можете настроить маршрут для домена локально с помощью файла /etc/hosts:
sudo vi /etc/hosts
Теперь можете открывать сайт в браузере и проверять:
Если вы увидели информацию о версии php, как на снимке экрана, значит все работает и нам осталось только настроить базу данных.
3. Настройка базы данных
Как я уже говорил, в качестве основной базы данных мы будем использовать mariadb. Чтобы начать ее настройку выполните:
mysql_secure_installation
Я не буду подробно описывать все шаги настройки. Они уже описаны в статье установка MySQL в Ubuntu. После того как процесс первоначальной настройки завершится, создадим новую базу данных:
sudo mysql -u root -p
Далее, для создания базы выполните:
Затем создайте пользователя и дайте ему доступ к этой базе данных:
Ну и для тестирования добавим таблицу:
Теперь добавим одну запись в только что созданную таблицу:
Теперь, чтобы убедиться что все работает, мы попытаемся получить данные из mysql через PHP. Для этого создадим небольшой скрипт. Он будет подключаться к базе данных и читать по порядку записи из таблицы:
sudo vi /var/www/test-site/testmysql.php
$connection = mysqli_connect("localhost","testuser","password","testsite") or die("Error " . mysqli_error($connection));
$sql = "SELECT id, str FROM testtable";
$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));
$items = array();
while($row = mysqli_fetch_assoc($result))
{
$items[] = $row;
}
echo json_encode($items);
?>
Далее, сохраните полученный скрипт, и введите его адрес в браузере:
Если вы не увидели никаких ошибок, а на экран были выведены строки из базы данных, задача установить LAMP Debian выполнена. Если же возникли какие-либо ошибки, например, подключения к базе данных, проверьте правильность написания пароля пользователя, имени базы, а также посмотрите логи mysql.
Выводы
Установка и настройка lamp Debian 9 полностью завершена, теперь вы можете перейти к развертыванию собственного приложения или веб-сайта. Эта инструкция подходит как для локальной системы, так и для боевого сервера. Надеюсь, информация была полезной для вас.
все как сложно, я начинающий и мне надо первые аза а не сразу в бой по всей системе.
Полезная статья. Спасибо за работу!
Есть ли принципиальная разница между командами apt-get и aptitude?
Например, как в вашей статье aptitude update или как в ролике apt-get update?
Я привык использовать большей частью apt-get
По последним рекомендациям; apt update, apt install foo
17 год, уже эпоха nginx и postgresql, а тут статься как поставить гаумно мамонта, апач и мускл, коттрый уже даже не мускл, а марьядб
2012 году postgresql и nginx тоже был, mysql есть и сейчас. Прошу будьте умней и не говорите глупостей.
sudo apt install lamp-server^
deb https://packages.sury.org/php/ jessie main - С актуальными версиями php.
Ввв !!!, блеснул незнаниями и типа не мамонт?
Отличная статья, как и многие здесь. Отличный блог. Сергей, огромное спасибо за труд и успехов в новых начинаниях!
Статья хорошая. Но когда установил все как написано, столкнулся с проблемой, apache отзывается только на localhost. Любой созданный виртуальный хост не работает. Убил кучу времени, но так и не смог настройть хосты, может кто-то сталкивался с такой проблемой?
"/etc/hosts добавить имя_сайта 127.0.0.1 и на виндовой машине в фале hosts создать сопоставление
sudo и aptitude не прокатили.
Зато с su и apt без проблем.
Может это потому, что DEBIAN 9 а не 8?
Нет, потому что их нужно установить, что в 9, что в 8. Статья предполагает, что базовые инструменты у вас уже установлены.
Но все же, позвольте! "базовые инструменты" -- нет aptitude! По хорошему надо в мануалах использовать apt
спасибо две недели мучался а вы помогли
Крута!! Классная инструкция. И простая как двери.
Здравствуйте. Хотелось бы прояснить вот какой вопрос. В общем то не принципиально на чем разворачивать сервер (apache или nginx), большинство хостингов использует apache, если вы созрели купить vds, то установка и настройка nginx для вас уже не проблема. Этот мануал в основном для начинающих.
Но вот почему то совершенно не затронут вопрос настройки прав на директорию сайта и на сами сайты. Автор создает директорию через sudo и владельцем сайта автоматически становится root.В самом же сайте вам надо работать от обычного пользователя , а не root чтобы иметь полную аналогию с хостингом. В основном это нормально работает без особых проблем. Но вот, например , если в вашем сайте в каком нибудь скрипте будет mkdir(), то сразу же получите permitions denied и никакая смена прав на нужную директорию на 777 не поможет.
Внятных мануалов найти не могу почему то.
Может автор внесет ясность ?
Я писал об этом в одной из статей про ошибки Nginx. Владельцем каталога должен быть тот пользователь, от имени которого запущен php-fpm и apache/nginx. Также нужно убедиться, что на протяжении всего пути к папке сайта у этого пользователя есть право на чтение. Это можно сделать с помощью команды namei -l /путь/к/папке/сайта
По факту вместо mysql ставится какое-то гавно похожее на mysql по имени mariadb. И нихрена не дает сделать тк не дает задать пароль рута
Спасибо. Вместо php-mysql пришлось писать php7.0-mysql - иначе ошибка.
Большое спасибо за рабочий урок по первоначальной настройке. Это далеко не первый просмотренный и опробованный мной урок, но это первый, который заработал! Огромное спасибо!
Для меня это начало для построения собственного облачного хранилища NextCloud.
У меня без отключения дефолта не заработало.
sudo a2dissite 000-default.conf
Дошёл до сюда
активируйте сайт командой: sudo a2ensite test-site.conf
ошибка, а в материале https://losst.pro/nastrojka-virtualnyh-hostov-apache
sudo a2ensite site1.ru
Как вижу в результатах поиска Google ссылку на ваш сайт, игнорирую, (сейчас перешел, чтобы оставить отзыв), пишете очень сложные и непонятные статьи (инструкции) не для обычных пользователей!
Спасибо автору я разобрался с установкой LAMP