Qbik-club
Дата публикации:Автор:Категория: ;Теги:

Установка LAMP сервера

Зачастую многие пользователи, которые недавно перешли на Linux с Windows, задаются вопросом, как установить OpenServer на Linux? Конечно, у опытных такой вопрос вызовет лишь усмешку, ведь отличительной частью этой системы является тот факт, что это ненужно в принципе. Можно просто установить LAMP.  Аббревиатура LAMP расшифровывается как Linux Apache Mysql PHP, это набор программного обеспечения, который чаще всего используется для разработки сайтов.

На самом деле в интернете полно различных мануалов и инструкций по установке. Но к сожалению значительная часть из них уже устарела, вторая часть не полная. К примеру рассматривается установка php, mysql, а как добавить хосты? А для разработки очень часто нужно работать с таблицами, через терминал с ними работать не удобно. Нужна PhpMyAdmin... В общем сегодня я решил написать самый полный и подробный мануал по установке LAMP сервера на Debian 10. За основу я взял эту инструкцию, но немного модифицировал с расчётом на то, что мы делаем локальный сервер для разработки сайтов. Инструкция получилась немного длинная, но не пугайтесь, зато на выходе мы получим полноценный, готовый к использованию сервер с несколькими сайтами для разработки, готовой панелью PhpMyAdmin и всеми необходимыми плюшками.

Установка LAMP сервера

И так, начнём с того, что если вы только что установили систему и ничего не делали — вам не помешало бы прочитать статью о первых шагах по этой ссылке. Если Вы это уже сделали — отлично, входим от имени суперпользователя (если вы читали статью, то вы знаете как это сделать) и обновляем репозитории командой:

apt-get update

Устанавливаем сервер

Первым делом нам нужно установить Apache. Делается это элементарно командой:

apt install apache2

После этого можете перейти по адресу http://localhost/ и увидеть страницу приветствия. Выглядит она вот так:

Скриншот окна успешной установки Apache2

Если вы увидели такое же окно — поздравляю! Веб-сервер успешно установлен! :)

Но к сожалению в 21-м веке сайты представляют из себя не просто набор HTML страничек. По этому давайте теперь научим наш сервер понимать какой нибудь язяк программирования. К примеру php.

Делается это ещё одной простой командой:

apt install php libapache2-mod-php php-mysql

Но нам ещё нужно где то хранить данные. По этому давайте добавим базу данных. Но в Debian 10 метапакет mysql-server, который традиционно использовался для установки сервера MySQL, был заменен на default-mysql-server. Этот метапакет ссылается на MariaDB , сообщество форка исходного сервера MySQL от Oracle, и в настоящее время это сервер баз данных, совместимый с MySQL по умолчанию, доступный в репозиториях менеджера пакетов на основе debian. Но для долгосрочной совместимости давайте установим MariaDB с использованием действующего пакета программы mariadb-server.

apt install mariadb-server

В общем то на этом этапе работу можно считать завершённой. Сервер готов. Но конечно же для полноценной работы нам не хватает панели phpMyAdmin, было бы не плохо сделать так, чтоб можно было работать с несколькими сайтами по разным адресам, иметь папку для бекапов баз данных и другие полезные плюшки. Следующие разделы статьи как раз и посвящены этим самым «плюшкам».

Устанавливаем phpMyAdmin для нашего LAMP сервера

И первое, с чего начнём — это с панели для БД. Работать через терминал конечно весело, но не слишком комфортно. Так что давайте для начала добавим некоторые модули для php:

apt install php-mbstring php-zip php-gd

И тут нас ждёт первая «засада». Пока что панель недоступна в репозиториях Debian 10 (но возможно появится в будущем) по умолчанию, поэтому нам нужно загрузить исходный код на компьютер с сайта phpMyAdmin.

Для этого переходим сюда, прокручиваем вниз до таблицы со ссылками на скачивание последней стабильной версии и копируем ссылку на скачивание, заканчивающуюся на all-languages.tar.xz. «all-languages» указывает на то, что эта версия мультиязычная, а значит там будет Русский интерфейс, а «tar.xz» указывает на архивный файл, известный как tarball, который при извлечении создаст несколько файлов в вашей системе. На момент написания этой статьи последняя версия - версия 4.9.0.1.

В таком случае команда будет выглядеть так:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

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

Распаковываем архив:

tar xvf phpMyAdmin-4.9.0.1-all-languages.tar.gz

Перемещаем каталог в каталог файлов конфигурации по умолчанию

mv phpMyAdmin-4.9.0.1-all-languages/ /usr/share/phpmyadmin

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

mkdir -p /var/lib/phpmyadmin/tmp

chown -R www-data:www-data /var/lib/phpmyadmin

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Теперь отредактируем только что скопированный кинфигурационный файл по умолчанию Для этого откроем его в текстовом редакторе:

gedit /usr/share/phpmyadmin/config.inc.php

И для упрощения — я подготовил для Вас новый, правильный конфиг по этой ссылке. А если же Вам интересно знать подробнее, что за что отвечает — подробное описание брал тут.

Важно! После скачивания нового конфига — замените в нём: строка №43 - замените его на любой другой пароль (и запомните его, он нам один раз дальше пригодится). И на строке №17 — просто втавьте любые другие символы, запоминать их не обязательно! :)

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

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

Для начала создадим таблицы, каталогом займёмся вместе с созданием хостов. Для этого выполняем команду:

mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

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

mariadb

Создаём пользователя pma для панели. Важно! «password» заменяем на пароль, который вы указывали в строке 43 конфига!

GRANT {select}, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';

Теперь создаём пользователя, от имени которого будем входить в панель и от имени которого собственно будем работать. В принципе хватит и одного, но можете создавать столько, сколько считаете необходимым. Важно! «uzers» меняем на имя пользователя, а «password» меняем на свой пароль, который будем вводить при входе в панель.

GRANT ALL PRIVILEGES ON *.* TO 'uzers'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Всё, выходим из БД:

exit

Всё готово, теперь нам осталось только создать конфиг и можно работать. Для этого выполняем:

gedit /etc/apache2/conf-available/phpmyadmin.conf

И в открывшийся новый документ вписываем этот конфиг.

И «скармливаем» этот конфиг Apache:

a2enconf phpmyadmin.conf

* — Если у Вас a2enconf выдаёт ошибку — в конце статьи есть заметка по этому поводу.

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

Создаём новые сайты в Apache2

И так, давайте создадим нужные каталоги. Мы в каталоге /var/www/ создадим каталог нового сайта и каталог для бекапов базы данных, который мы указывали в конфиге phpMyAdmin. После чего передадим права пользования этими каталогами себе, чтоб иметь возможность без помощи root записывать в них файлы и удалять их. Для этого поочерёдно выполняем следующие команды:

mkdir /var/www/test_site

mkdir /var/www/backup

chown -R $USER:$USER /var/www/test_site

chown -R $USER:$USER /var/www/backup

Как Вы наверняка догадались, «test_site» — имя каталога для будущего сайта, а «backup» — имя каталога  с бекапами. Имя сайта может быть любым, а вот если решите переименовать каталог с бекапами — не забудьте поменять его в том числе и в конфиге.

Теперь создаём конфигурационный файл для нашего нового сайта:

gedit /etc/apache2/sites-available/test_site.conf

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


    ServerName your_domain
    ServerAlias www.your_domain
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/test_site
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

Как Вы наверняка заметили, имя сайта и имя его каталога не обязательно должны совпадать, но всё же лучше так не делать т.к. в случае, если сайтов будет много, а каталоги и именя совпадать не будут — вы сами себя запутаете. По этому лучше, чтоб имя сайта и имя каталога в папке /var/www/ совпадали.

Теперь сайт по сути готов, но остался один нюанс. Компьютер по умолчанию будет искать сайт в интернете, а не на компьютере. По этому давайте откроем хост-файл и скажем ему, что вот этот адрес в интернете не искать. Открываем хост:

gedit /etc/hosts

В этом файле уже есть два адреса. Первая строка — localhost. Тот самый, по которому вы проверяли работоспособность сервера после первой команды установки. Далее идёт имя компьютера в сети. Вы по этому адресу так же можете перейти и увидите абсолютно то же самое, что и при localhost. И ниже мы можем дописать новые адреса. Как видите на скриншоте ниже, у меня есть ещё два адреса. Это qb.test и v.test. Адрес, по которому я тестирую свой сайт Qbik.club и ещё один секретный адрес, про который я ничего не скажу! ;)

Пример добавления сайта в /etc/hosts

Вам по такой же аналогии нужно добавить свой новый сайт. Обратите внимание! Добавляем именно имя сайта, которое вы будете вводить в браузер, а не имя папки или конфигурационного файла! Как я упоминал выше, все эти имена могут отличаться, но во избежании путаницы, так лучше не делать!

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

Внмиание! Распространённая ошибка, выполнять команду a2ensite передавая имя сайта. передаём не имя сайта, а имя конфигурационного файла, который мы создавали выше!

a2ensite test_site.conf

* — Если у Вас a2ensite выдаёт ошибку — в конце статьи есть заметка по этому поводу.

Теперь мы можем перезагрузить Apache и если Всё сделано правильно — радоваться жизни! :)

systemctl reload apache2

Включаем обработку .htaccess и вывод ошибок php

Вроди всё работает, база есть, интерфейс для управления базами есть, всё работает... Но вот есть несколько досадных ошибок. Это кое какие конфигурации по умолчанию. К примеру на «боевом сервере» как правило отключен вывод ошибок php. Это и логично, ведь это потенциальная уязвимость, которая сообщает «много интересного» потенциальному взломщику. Но мы же делаем локальный сервер для разработки. По этому давайте включим вывод ошибок, который нам пригодится для работы. для этого открываем конфиг:

gedit /etc/php/7.3/apache2/php.ini

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

error_reporting = E_ALL

display_errors = On

display_startup_errors = On

И обработка .htaccess. Для этого открываем другой конфиг:

gedit /etc/apache2/apache2.conf

Там ближе к концу будут свойства главной директории. В её впишем разрешения и они автоматически будут применяться ко всем сайтам. Хотя в случае необходимости тут можете применять их к любым отдельным, просто создавая новый блок для нового сайта. Но мы пойдём по самому простому и применим ко всем сразу вот таким образом:


    Options Indexes FollowSymLinks
    Require all granted
    AllowOverride All

Лично я когда так сделал и перезапустил Apache — получил ошибку 500. Всё дело оказалось в том, что по умолчанию mod_rewrite отключен. А это довольно популярный модуль по перенаправлениям в .htaccess. По этому если у вас будет такая же проблема — включаем его одной простой командой:

a2enmod rewrite

Разумеется, после того, как был сохранён конфиг или включен модуль — перезагружаем Apache:

systemctl reload apache2

Замечание для тех, у кого не работает a2enmod, a2ensite или a2enconf!

Важное замечание! Лично я был довольно неплохо так озадачен, почему a2ensite выдаёт ошибку? Всё оказалось просто, на форуме мне подсказали. Просто войдите через su - root и будет Вам счастье! ;)

P.s. небольшое послесловие. Вся работа по поиску информации, переводу, проверке работоспособности и написанию этой статьи у меня заняли почти неделю. Так что надеюсь если статья была полезна — Вы поделитесь ей с друзьями. Это лучшая благодарность за проделанную работу. Если же я что то упустил или попутал от переизбытка информации — свяжитесь со мной Вк, постараюсь поправить! :)

Публикация относится к тематической подборке: «Первые шаги в Debian»

Данная публикация относится к череде публикаций о первых шагах в настройке и освоении ОС Debian.

Понравилась публикация?

0

Поделитесь ей с друзьями!

Так же рекомендуем...

Загрузка рекомендуемых публикаций

Управление фоном

Информационный портал Qbik использует файлы cookie для обеспечения наилучшей функциональности сайта. Подробности на этой странице. Находясь на сайте Вы автоматически соглашаетесь с этими правилами.

Понятно