Введение
Комплекс LAMP – это набор программ с открытым исходным кодом, которые обычно устанавливаются вместе для обеспечения функционирования динамических веб-сайтов и веб-приложений на сервере. Фактически этот термин является аббревиатурой: операционная система Linux, веб-сервер Apache, данные сайта хранятся в базе MySQL (MariaDB), а динамический контент обрабатывается PHP.
В данном руководстве описана установка комплекса LAMP на VPS с CentOS 7. CentOS выполняет наше первое требование – это операционная система Linux.
Подготовка
Прежде чем начать работу с данным руководством, вам потребуется отдельный пользовательский аккаунт без root-прав на сервере. Для этого нужно зайти как root, создать нового пользователя при помощи команды adduser и внести его в группу wheel. По умолчанию в CentOS 7 члены этой группы могут пользоваться командой sudo, которая позволяет при необходимости выполнять какие-либо действия с привилегиями root не выходить из обычной учетной записи и заходить как root, а выполнять отдельные команды как суперпользователь. Для этого нужно просто ввести sudo перед командой, при выполнении которой требуются эти привилегии.
Шаг 1 – установка Apache
В настоящее время Apache – наиболее популярный веб-сервер в мире, поэтому это прекрасный выбор по умолчанию для хостинга веб-сайта.
Apache можно легко установить при помощи yum, менеджера пакетов CentOS. Менеджер пакетов позволяет нам без затруднений устанавливать большую часть программ из репозитория CentOS. Для выполнения нашей задачи начнем со следующих команд:
sudo yum install httpd
Так как мы пользуемся командой sudo, эта операция выполняется с root-правами. Для подтверждения намерений она запросит ваш обычный пароль пользователя.
Затем ваш веб-сервер будет установлен.
После установки запустите Apache на вашем VPS:
systemctl start httpd.service
Вы сразу можете проверить, что все идет по плану, набрав IP-адрес вашего сервера в своем веб-браузере:
http://IP_адрес_вашего_сервера/
Вы увидите веб-страницу CentOS 7 Apache по умолчанию, которая размещена для информации и тестирования. Она должна выглядеть примерно следующим образом:
Если вы видите эту страницу, то ваш веб-сервер установлен корректно. Последнее, что вам потребуется – включить автозапуск Apache при загрузке. Для этого воспользуйтесь следующей командой:
systemctl enable httpd.service
Установка виртуальных хостов на Apache
Виртуальный хост – базовый блок, описывающий один сайт или домен. Виртуальные хосты позволяют держать на одном сервере несколько доменов или интерфейсов. Это важно, когда на одном сервере нужно создать несколько сайтов. Каждый настроенный домен будет направлять посетителя в конкретную директорию, содержащую информацию нужного сайта, даже не показывая, что на том же сервере есть другие сайты. Эту схему можно масштабировать без каких-либо программных ограничений, если ваш сервер справится с трафиком всех сайтов. Мы разберем установку и настройку на примере одного виртуального хоста.
Первое, что нужно сделать для установки– создать структуру директорий. Наш корень документов будет находиться в отдельной директории внутри /var/www. Мы создадим в ней директории для каждого из виртуальных хостов, а в каждой из них, в свою очередь, создадим поддиректорию public_html, в которой будут находиться наши файлы. Это предоставит нашему хостингу некоторую гибкость. Воспользуемся командой mkdir с флагом –p, который позволяет сразу создать директорию с поддиректорией в ней:
mkdir -p /var/www/example.com/public_html
examplе.сom – имя домена, который мы хотим отображать на нашем VPS.
Структура директорий создана, но ее владелец – пользователь root. Чтобы наш обычный пользователь мог изменять файлы в этих директориях, нужно сменить владельца командой chown:
chown -R $USER:$USER /var/www/example.com/public_html
Где переменная $USER – текущий пользователь системы. Теперь он является владельцем поддиректории public_html, где мы будем хранить контент.
Также для корректного отображения страниц нужно немного изменить права доступа, чтобы разрешить чтение общей веб-директории, а также всех файлов и директорий в ней:
chmod -R 755 /var/www
Теперь все необходимые права доступа заданы, и пользователь сможет создавать контент в нужных папках. Создадим файл index.html, идентифицирующий наш домен. Откроем его в редакторе при помощи следующей команды:
vi /var/www/example.com/public_html/index.html
В этом файле создадим простой HTML-документ с данными о сайте, которому принадлежит эта страница:
<html> <head> <title>Welcome to Еxample!</title> </head> <body> <h1>Success! The еxample virtual host is working!</h1> </body> </html>
Сохраните и закройте файл. Теперь у вас есть все необходимые страницы для проверки конфигурации виртуального хоста. Создадим файл, в котором определяется его конфигурация и задается, как веб-сервер Apache будет отвечать на запросы различных доменов. Для начала создадим директорию, в которой будут храниться файлы наших виртуальных хостов (sites-available), а также директорию, которая сообщает Apache, что виртуальный хост готов для отображения посетителям (sites-enabled, будет содержать символические ссылки на виртуальные хосты, готовые к публикации).
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
Затем нам нужно указать, чтобы Apache искал виртуальные хосты в директории sites-enabled. Для этого мы отредактируем главный файл конфигурации Apache:
vi /etc/httpd/conf/httpd.conf
и добавим в конце строку с директорией для дополнительных файлов конфигурации:
IncludeOptional sites-enabled/*.conf
Должно получится примерно следующее
Теперь можно создать файл для первого виртуального хоста. Откроем его в редакторе с root-правами:
sudo nano /etc/httpd/sites-available/example.com.conf
Важно: в соответствии с рассматриваемой нами конфигурацией все файлы виртуальных хостов обязательно должны заканчиваться на .conf
Сначала нужно создать пару тегов, определяющих содержимое как виртуальный хост, прослушивающий порт 80 (порт HTTP по умолчанию):
<VirtualHost *:80> </VirtualHost>
Затем нужно указать доменное имя нашего сайта, www.example.com. Мы также укажем альтернативное имя сервера example.com, чтобы по запросам www.example.com и example.com выводился один и тот же контент:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com </VirtualHost>
Наконец, нужно указать корневую директорию публично доступных веб-документов, а также определить, куда записывать логи ошибок и запросов для данного сайта:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/public_html ErrorLog /var/www/example.com/error.log CustomLog /var/www/example.com/requests.log combined </VirtualHost>
В итоге минимальная конфигурация выглядит так
Теперь активируем файл виртуального хоста, чтобы Apache представлял его посетителям. Создадим символическую ссылку для виртуального хоста в директории sites-enabled:
ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
После этого перезапустите Apache, чтобы изменения вступили в силу:
systemctl restart httpd.service
Можно проверить правильность настройки – просто ввести имя домена в адресной строке браузера:
Естественно у вас должны быть корректно настроены DNS сервера, или для тестов просто пропишите имя хоста и ip адрес сервера в вашем файле hosts.
Вы должны увидеть страницу следующего вида:
Аналогичным образом можно создать и настроить виртуальные хосты для других доменов.
Шаг 2 – установка MySQL (MariaDB)
Теперь, когда наш веб-сервер запущен и работает, нужно установить MariaDB, аналог MySQL. MariaDB – разрабатываемая сообществом ветвь реляционной системы управления базами данных MySQL. Ее задача состоит в организации баз данных, где наш сайт будет хранить информацию, и обеспечении доступа к ним.
Для получения и установки программы мы снова можем воспользоваться yum. На этот раз мы также установим несколько вспомогательных пакетов, которые помогут нам связать компоненты друг с другом.
yum install mariadb-server mariadb
После завершения установки нужно запустить MariaDB следующей командой:
systemctl start mariadb
Теперь, когда наша база данных MySQL запущена, нам потребуется запустить простой скрипт безопасности, который изменит некоторые опасные значения параметров по умолчанию и немного ограничит доступ к нашей базе данных. Запустите интерактивный скрипт следующей командой:
sudo mysql_secure_installation
У вас будет запрошен root-пароль для MySQL. Так как вы только что установили MySQL, то скорее всего у вас его нет, поэтому просто нажмите Enter. Затем вас спросят, хотите ли вы его задать. Введите Y (yes) и следуйте указаниям:
Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorization. New password: пароль Re-enter new password: пароль Password updated successfully! Reloading privilege tables.. ... Success!
На остальные вопросы нужно просто нажимать Enter, чтобы принять значения по умолчанию. Будут удалены примеры пользователей и баз данных, отключен удаленный вход с root-правами, а затем новые правила будут загружены, и MySQL немедленно примет сделанные нами изменения.
Последнее, что требуется – автозапуск MariaDB при загрузке. Для этого воспользуйтесь следующей командой:
systemctl enable mariadb.service
Теперь система управления базами данных работает, и можно перейти к следующему шагу.
Шаг 3 – установка PHP
PHP – компонент нашего пакета, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к базам данных MySQL для получения информации и передавать обработанный контент нашему веб-серверу для отображения.
Для воспользуемся yum. Мы также инсталлируем пакет рhр-mysql:
yum install php php-mysql
После этого инсталляция должна пройти без проблем. После установки необходимо выполнить перезапуск Apache:
systemctl restart httpd.service
Установка модулей PHP
Для расширения функционала PHP можно опционально установить ряд дополнительных модулей. Чтобы узнать доступные модули и библиотеки для PHР, введите в консоли:
yum search php-
Будет выдан список опциональных компонентов, доступных для установки, с коротким описанием каждого из них:
Более подробную информацию о каждом модуле можно найти в Интернете или прочитать развернутое описание пакета по команде:
yum info имя_пакета
Будет выдано много данных, более подробное описание функций модуля находится в поле Description.
Например, чтобы узнать, для чего нужен модуль php-fpm, введите в консоли:
yum info php-fpm
В большом объеме разной информации вы увидите подобный текст:
Описание говорит нам о том, что этот модуль — альтернативная реализация FastCGI с дополнительными функциями, полезными для сайтов любого размера, особенно для сильно загруженных сайтов. Если вам понадобится установить какой-то модуль, это делается при помощи команды yum install, как мы устанавливали остальные программы. Например, если нам нужен php-fpm, введите в консоли:
yum install php-fpm
Чтобы установить несколько модулей, можно ввести их названия, разделенные пробелами, после команды yum install:
yum install пакет1 пакет2 ...
Установка и настройка комплекса LAMP завершена. Теперь нужно проверить работу PHP.
Шаг 4 – тестирование работы PHP на веб-сервере
Чтобы проверить, правильно ли наша система настроена для обработки PHP, можно создать очень простой PHP-скрипт. Мы можем назвать этот скрипт info.php и разместить его в корневой директории нашего веб-ресурса (для простоты объяснения здесь мы не будем рассматривать виртуальные хосты, настроенные ранее):
vi /var/www/html/info.php
Откроется пустой файл. Нам нужно ввести в него следующий текст, который представляет собой рабочий код PHP:
<?php phpinfo(); ?>
После этого закройте и сохраните файл.
Если у вас работает firewalld, выполните следующие команды, чтобы разрешить HTTP и HTTPS трафик:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=http ssudo firewall-cmd --reload
Теперь мы можем проверить, правильно ли наш веб-сервер отображает контент, генерируемый PHP-скриптом. Для этого нужно просто открыть эту страницу в веб-браузере. Вам нужен следующий адрес:
http://IP_адрес_вашего_сервера/info.php
Должна открыться страница примерно следующего вида:
Она предоставляет информацию о вашем сервере с точки зрения PHP и полезна для отладки и проверки правильности применения настроек. Если страница видна, то все работает правильно.
Скорее всего, после проверки вам потребуется удалить этот файл, потому что он может предоставить информацию о вашем сервере неавторизованным пользователям. Для этого нужно выполнить следующую команду:
sudo rm /var/www/html/info.php
При необходимости снова получить эту информацию данную страницу всегда можно создать повторно.
Заключение
Как мы видим установить и настроить свой собственный WEB-сервер очень просто и не представляет большой сложности. После установки комплекса LAMP есть большое количество вариантов дальнейших действий. Он предоставляет вам платформу для установки на сервер большинства типов веб-сайтов и веб-приложений.
здорово