First IP

Установка LAMP-стека (Linux, Apache, MySQL, PHP) на Ubuntu

В статье мы узнаем, что такое LAMP-стек, как установить LAMP на Ubuntu, а также настроим виртуальные хосты. Что такое LAMP LAMP — это стек программного обеспечения, устанавливаемого на сервер и предназначенного для сайтов и веб-приложений. LAMP – это аббревиатура, она расшифровывается как: Linux, Apache, MySQL и PHP. Рассмотрим каждый элемент LAMP подробнее: Linux используется в […]

Изображение записи

В статье мы узнаем, что такое LAMP-стек, как установить LAMP на Ubuntu, а также настроим виртуальные хосты.

Что такое LAMP

LAMP — это стек программного обеспечения, устанавливаемого на сервер и предназначенного для сайтов и веб-приложений. LAMP – это аббревиатура, она расшифровывается как: Linux, Apache, MySQL и PHP.

Рассмотрим каждый элемент LAMP подробнее:

  1. Linux используется в качестве ОС на сервере, часто это различные дистрибутивы Ubuntu и Debian.
  2. Apache — веб-сервер. Он обрабатывает все запросы к страницам сайта и выдает соответствующие ответы.
  3. MySQL — СУБД (система управления базами данных). Иногда в LAMP используется MariaDB. Здесь хранятся все данные сайта.
  4. PHP — скриптовый язык для генерации страниц.

Такой набор самостоятельных по отдельности компонентов стал очень популярен.

Существует множество вариаций LAMP, где какие-либо из компонентов заменяются на другие, например LEMP — вместо Apache в нем используется веб-сервер Nginx.

Подготовка к установке LAMP

Развернуть LAMP можно, например, на облачном сервере, который предварительно нужно создать. Создадим сервер в панели управления Облачной платформой Selectel. Подробно о начислении баланса на счет для доступа к работе в панели и создании облачного сервера можно прочитать в Базе знаний.

Создание облачного сервера

Перейдите в панель управления Облачной платформой, откройте вкладку Серверы и нажмите кнопку Создать сервер.

При создании сервера автоматически выбирается операционная система Ubuntu. Чтобы выбрать другую ОС для сервера, нажмите Выбрать другой источник. В целом, для установки LAMP подойдет любой дистрибутив Linux.

В этой инструкции в качестве операционной системы сервера выберите Ubuntu 18.04 LTS.

Для развертывания LAMP нужно присвоить серверу плавающий адрес. Для этого в разделе Сеть в качестве подсети выберите Новый плавающий IP-адрес. Проверьте стоимость сервера и нажмите Создать.

Созданный Облачный сервер со статусом ACTIVE появится в списке всех серверов. В карточке сервера на вкладке Порты можно посмотреть плавающий IP-адрес — в дальнейшем это пригодится для настройки LAMP.

Подключение к серверу по SSH

Работать с сервером можно во встроенной консоли в панели управления, которая находится на вкладке Консоль в карточке сервера. Но зачастую удобнее подключаться к серверу по протоколу SSH с локальной машины.

Читайте также:  Uninstall vmware player in linux

Для того чтобы подключиться к серверу по SSH, в терминале введите команду:

server_IP — это плавающий IP-адрес сервера, который был добавлен при его создании.

Терминал при подключении запросит root-пароль, который можно найти на вкладке Консоль в карточке сервера.

Если подключение к серверу прошло успешно, можно начать установку LAMP.

Установка Apache

Команды для установки

Установим первый после операционной системы компонент LAMP — Apache.

Предварительно загрузим списки пакетов обновлений, для этого используется команда:

Настройка брандмауэра

Брандмауэр (файервол) должен пропускать HTTP и HTTPS-трафик — то есть должны быть открыты порты 80 и 443.

Для начала нужно установить утилиту для управления правилами файервола UFW (Uncomplicated Firewall) и включить UFW:

На сервере должны быть доступны профили приложений для Apache. Посмотрим список профилей:

Вывод команды выглядит примерно таким образом:

Available applications: Apache Apache Full Apache Secure OpenSSH

Можем увидеть, что в выводе присутствует профиль Apache Full — именно он открывает нужные порты 80 и 443. Разрешим для него входящий трафик:

sudo ufw allow 'Apache Full'

Чтобы в дальнейшем продолжать подключение к серверу по SSH, добавим также профиль OpenSSH:

В выводе команды проверим, что UFW активен, нужные профили включены, а, значит, разрешен HTTP и HTTPS-трафик:

Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Проверка работы Apache

Проверим статус Apache, он должен быть активен (Active в выводе команды):

sudo systemctl status apache2

Чтобы проверить работу Apache, введем публичный IP-адрес сервера в браузерной строке. В нашем случае это подключенный ранее плавающий IP. Если Apache установлен, и к нему разрешен доступ через файервол, то откроется страница с информацией:

Установка MySQL

Команда для установки

После установки и настройки Apache можно устанавливать следующий компонент — СУБД MySQL:

sudo apt install mysql-server

Настройка безопасности БД

Для защиты окружения рекомендуется запустить скрипт безопасности:

sudo mysql_secure_installation

Когда система предложит установить плагин валидации паролей (VALIDATE PASSWORD plugin), введем в терминал y или Y для подтверждения. Установка этого плагина поможет задать пароль с повышенными требованиями к безопасности.

Далее выберем уровень надежности паролей, всего их три:

  • низкий (LOW) — длина такого пароля должна быть больше 8 символов;
  • средний (MEDIUM) — длина пароля больше 8 символов, при этом пароль должен содержать цифры, буквы в верхнем и нижнем регистре, а также специальные символы;
  • сильный (STRONG) — для такого пароля должны быть соблюдены те же условия, что и для среднего уровня надежности, но при этом в пароле не должны использоваться слова, которые могут быть уязвимы при подборе пароля по словарю.

Введем в терминале значение для выбора уровня: 0 для LOW, 1 для MEDIUM или 2 для STRONG.

Читайте также:  Посмотреть имя компьютера astra linux

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

Система определит и выведет значение надежности пароля (Estimated strength of the password).

На дальнейшие вопросы от системы рекомендуем вводить в терминале подтверждение (y или Y) — это настройки удаления анонимных пользователей, удаление открытой тестовой базы и так далее.

Пароль будет создан, когда в терминале будет выведено сообщение «All done!».

Проверка работы MySQL

Проверим статус MySQL, он должен быть активен:

sudo systemctl status mysql

Установка PHP

Команды для установки

Теперь можно перейти к установке последней составляющей стека — PHP.

Установим PHP и специальные модули для работы PHP с Apache и MySQL:

sudo apt install php libapache2-mod-php php-mysql

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

В предыдущей команде при установке не была указана версия PHP. Вы всегда можете указать версию, которую хотите установить, например:

Чтобы узнать версию PHP, которая установлена, используйте команду:

Проверка установки PHP

Для проверки создадим небольшой PHP-скрипт с любым названием, например test.php, в корневой директории /var/www/html:

sudo nano /var/www/html/test.php

Заполним этот файл таким содержимым:

Сохраним и закроем файл (сочетание клавиш Ctrl+X, а затем Y+Enter).

Такой скрипт вызовет функцию phpinfo(), которая выводит информацию о PHP и список параметров.

Теперь откроем этот файл по URL:

Если все настроено корректно, будет доступна информация о PHP:

Настройка виртуальных хостов (опционально)

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

Допустим, мы хотим разместить на одном сервере два сайта. Сконфигурируем Apache.

Создание директорий

Размещать файлы виртуальных хостов будем внутри директории /var/www/. Для каждого хоста создадим новую отдельную директорию:

sudo mkdir -p /var/www/first_IP
sudo mkdir -p /var/www/second_IP

Обратите внимание, что вместо IP-адреса можно использовать и доменное имя.

Предоставление прав

Сейчас права доступа к директориям есть только у root-пользователя. Настроим права всем пользователям системы, используя переменную среды $USER:

sudo chown -R $USER:$USER /var/www/first_IP
sudo chown -R $USER:$USER /var/www/second_IP

Откроем пользователю доступ на чтение, редактирование и запуск файлов в директории /var/www:

Создание страниц для тестирования

В дальнейшем нам нужно будет проверить, правильно ли настроены виртуальные хосты. Для этого можно создать для каждого IP-адреса (домена) HTML-страницы, которые будут открываться в браузере при вводе соответствующего IP или домена, например, главные страницы index.html.

Создадим страницу для первого IP:

sudo nano /var/www/first_IP/index.html

Добавим на страницу текст:

    

Wow! First Site works!

Выполним то же самое и для второго сайта:

sudo nano /var/www/second_IP/index.html
    

Wow! Second Site works!

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

По умолчанию в Apache используется виртуальный хост 000-default.conf. Этот файл мы будем использовать как шаблон для создания собственных виртуальных хостов.

Для каждого сайта конфигурационные файлы (виртуальные хосты) хранятся в директории /etc/apache2/sites-available/. Скопируем содержимое виртуального хоста, который используется по умолчанию, в новый файл — мы будем использовать его для настройки первого сайта:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/first_IP.conf

Откроем новый конфигурационный файл первого сайта:

sudo nano /etc/apache2/sites-available/first_IP.conf
 ServerAdmin webmaster@localhost ServerName first_IP DocumentRoot /var/www/first_IP ErrorLog $/error.log CustomLog $/access.log combined 
  • ServerAdmin — электронная почта администратора сайта;
  • ServerName — IP-адрес сайта или его доменное имя;
  • DocumentRoot — директория, в которой хранится конфигурационный файл (виртуальный хост).
Читайте также:  Создание загрузочного образа линукс

Подобным образом создадим конфигурационный файл для второго сайта:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/second_IP.conf
sudo nano /etc/apache2/sites-available/second_IP.conf

Содержимое конфигурационного файла /etc/apache2/sites-available/second_IP.conf:

 ServerAdmin webmaster@localhost ServerName second_IP DocumentRoot /var/www/second_IP ErrorLog $/error.log CustomLog $/access.log combined 

Активация виртуальных хостов

Активируем виртуальные хосты с помощью a2ensite:

sudo a2ensite first_IP.conf
sudo a2ensite second_IP.conf

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

sudo a2dissite 000-default.conf

Проверим, нет ли ошибок в конфигурационных файлах:

sudo apache2ctl configtest

Если ошибки отсутствуют, то получим результат:

Перезапустим Apache, чтобы активировать все изменения:

sudo systemctl restart apache2

Теперь Apache должен обслуживать сайты, IP-адреса или домены которых мы прописали в виртуальных хостах. Проверим работу: перейдем в браузере на сайты — должны появиться созданные индексные страницы:

Источник

Какой дистрибутив Linux выбрать для хостинга Apache + PHP сайтов?

В основном надо хостить аудио-записи конференций.
Трафик не очень большой (4000 посетителей в месяц по GA), но материалов около терабайта.
Для этого дела есть самописная CMS, которая умеет эти записи проигрывать нужным способом искать и т.д.
Требования: PHP 7, Apache, MySQL.

Я взял дедик на OVH (32GB RAM, 8cores), накатил на него Hyper-V, а в нём — Ubuntu 18.04 VM (8GB RAM, 3cores).
И оно тормозит. Причём похоже из-за сети. Один из симптомов — это иногда сайт открывается быстро, а иногда — первую страницу ждёшь секунд 10-20!
Пока разбирался, увидел, что у меня висит куча соединений в состоянии CLOSE_WAIT:
root@ub18s:/home/slavik# netstat -tupn | grep CLOSE_WAIT
tcp 1 103452 142.44.185.104:443 213.180.203.53:58602 CLOSE_WAIT 30305/apache2
tcp 1 99258 142.44.185.104:443 213.180.203.53:39694 CLOSE_WAIT 30937/apache2
tcp 1 29358 142.44.185.104:443 37.9.113.126:41087 CLOSE_WAIT 32766/apache2
tcp 1 114636 142.44.185.104:443 213.180.203.53:54569 CLOSE_WAIT 30338/apache2
.
И это нехорошо. И про это есть вопросы на StackOverflow, но решения я не нашёл — похоже на проблему сетевого стэка Убунты.

Ну я попробовал и задеплоил ещё одну VM, теперь CentOS 7 (8GB, 3 cores).
Работает всё класс, быстро, висяков CLOSE_WAIT нету.
Но в CentOS постоянно висит один процесс — kswapd0, которые нагружает одно ядро на 100%. Это вроде бы связано со swapping memory. Тоже пробовал всякое, разные настройки — не одолел, тоже похоже на проблему ядра ОС.
Хотя на работе это вроде не отображается — ничего вроде бы не тормозит, но как-то неприятно.

Вот теперь думаю — попробовать Debian? 9.6?
Или есть какая-то конфигурация, которую народ посоветует?

P.S. Поставил Debian 9.6 + Nginx + PHP-FPM. Вот уже около месяца работает. Очень стабильно.

Средний 7 комментариев

Источник

Оцените статью
Adblock
detector