Поиск по сайту:

Как установить стек Linux, Apache, MySQL, PHP (LAMP) на CentOS 7


Введение

Стек «LAMP» — это группа программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы позволить серверу размещать динамические веб-сайты и веб-приложения. Этот термин представляет собой аббревиатуру, обозначающую операционную систему Linux с веб-сервером Apache. данные сайта обычно хранятся в базе данных MySQL, а динамический контент обрабатывается PHP.

В большинстве систем Linux вы можете установить MySQL, загрузив пакет mysql-server из стандартных репозиториев управления пакетами вашей системы. Однако в CentOS 7 пакет mysql-server фактически установит MariaDB, разработанный сообществом форк системы управления реляционными базами данных MySQL, который работает как замена MySQL. Таким образом, в этом руководстве будет показано, как установить стек LAMP, состоящий из Linux, Apache, MariaDB и PHP, на сервере CentOS 7.

Предпосылки

Прежде чем приступить к работе с этим руководством, на вашем сервере должна быть настроена отдельная учетная запись пользователя без полномочий root. Вы можете узнать, как это сделать, следуя нашему руководству по начальной настройке сервера для CentOS 7.

Шаг 1 — Установка веб-сервера Apache

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

Установите Apache с помощью менеджера пакетов CentOS, yum. Менеджер пакетов позволяет вам устанавливать большинство программ из репозитория, поддерживаемого CentOS.

Введите эту команду в своем терминале, чтобы установить пакет httpd Apache:

  1. sudo yum install httpd

При появлении запроса введите Y, чтобы подтвердить установку Apache.

  1. sudo systemctl start httpd

Вы можете проверить, работает ли ваш сервер, введя свой общедоступный IP-адрес или доменное имя в веб-браузере.

Примечание. Если вы используете DigitalOcean в качестве поставщика DNS-хостинга, вы можете проверить нашу документацию по продукту для получения подробных инструкций о том, как настроить новое доменное имя и указать его на свой сервер.

Если у вас нет доменного имени, указывающего на ваш сервер, или вы не знаете общедоступный IP-адрес вашего сервера, вы можете найти его, выполнив следующую команду:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Это распечатает несколько разных адресов. Вы можете попробовать каждый из них в своем веб-браузере.

Альтернативный метод — использовать стороннюю сторону, чтобы сообщить вам, как она видит ваш сервер. Вы можете сделать это, запросив у конкретного сервера ваш IP-адрес с помощью этой команды:

  1. curl http://icanhazip.com

Какой бы метод вы ни выбрали, введите свой IP-адрес в веб-браузер, чтобы убедиться, что ваш сервер работает.

http://your_server_IP_address

Вам будет представлена целевая страница CentOS 7 Apache по умолчанию:

Вы можете включить Apache для запуска при загрузке с помощью:

  1. sudo systemctl enable httpd.service

Шаг 2 — Установка MySQL (MariaDB)

Когда ваш веб-сервер запущен и работает, вы можете установить MariaDB. Он организует и предоставит доступ к базам данных, где ваш сайт может хранить информацию.

Чтобы установить программный пакет MariaDB, запустите:

  1. sudo yum install mariadb-server

Когда установка будет завершена, запустите MariaDB:

  1. sudo systemctl start mariadb

Вы можете включить запуск MariaDB при загрузке с помощью этой команды:

  1. sudo systemctl enable mariadb.service

Чтобы повысить безопасность вашего сервера базы данных, рекомендуется запустить скрипт безопасности, который предустановлен вместе с MariaDB. Этот сценарий удалит некоторые небезопасные настройки по умолчанию и заблокирует доступ к вашей системе баз данных.

Запустите интерактивный скрипт, выполнив:

  1. sudo mysql_secure_installation

Этот сценарий проведет вас через ряд подсказок, где вы можете внести некоторые изменения в настройку MariaDB. Первое приглашение попросит вас ввести текущий пароль root базы данных. Не следует путать с системным корневым пользователем. Пользователь root базы данных является администратором с полными привилегиями в системе базы данных. Поскольку вы только что установили MariaDB и не вносили никаких изменений в конфигурацию, этот пароль будет пустым. Нажмите ENTER в ответ на приглашение.

Следующее приглашение спросит вас, хотите ли вы установить пароль root для базы данных. Введите N и нажмите ENTER.

Оттуда вы можете нажать Y, а затем ENTER, чтобы принять значения по умолчанию для всех последующих вопросов. Это удалит анонимных пользователей и тестовую базу данных, отключит удаленный вход в систему root и загрузит эти новые правила, чтобы сервер немедленно учёл внесенные вами изменения.

Когда вы закончите, войдите в консоль MariaDB, введя:

  1. sudo mysql

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

Output
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 5.5.68-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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

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

Запустите следующую команду из консоли MariaDB, чтобы создать новую базу данных:

  1. CREATE DATABASE example_database;

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

  1. GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Эта команда дает пользователю example_user полные привилегии над базой данных example_database, не позволяя этому пользователю создавать или изменять другие базы данных на вашем сервере.

Используйте оператор FLUSH, чтобы перезагрузить и сохранить привилегии, которые вы только что предоставили пользователю example_user:

  1. FLUSH PRIVILEGES;

Выйдите из оболочки MariaDB:

  1. exit

Вы можете проверить, есть ли у нового пользователя надлежащие разрешения, снова войдя в консоль MariaDB, но используя учетные данные example_user, которые вы создали выше:

  1. mysql -u example_user -p

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

  1. SHOW DATABASES;

Ваша example_database должна быть указана в выводе:

Output
+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

Чтобы выйти из оболочки MariaDB, введите:

  1. exit

Ваша система баз данных настроена, и вы можете перейти к установке PHP.

Шаг 3 — Установка PHP

У вас установлен Apache для обслуживания вашего контента и MariaDB для хранения и управления вашими данными. PHP будет обрабатывать код для отображения динамического содержимого пользователю. В дополнение к пакету php вам понадобится php-mysql, модуль PHP, который позволяет PHP взаимодействовать с базами данных на основе MySQL. Базовые пакеты PHP будут автоматически установлены как зависимости.

Используйте эту команду для установки пакетов php и php-mysql с yum:

  1. sudo yum install php php-mysql

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

  1. sudo systemctl restart httpd.service

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

Шаг 4 — Тестирование PHP на вашем веб-сервере Apache

При установке Apache по умолчанию в CentOS 7 создается корень документа, расположенный по адресу /var/www/html. Вам не нужно вносить какие-либо изменения в настройки Apache по умолчанию, чтобы PHP правильно работал на вашем веб-сервере.

Однако вы можете внести коррективы, чтобы изменить настройки разрешений по умолчанию в корневой папке документов Apache. Это позволяет вам создавать и изменять файлы в этом каталоге с вашим обычным системным пользователем без необходимости префикса каждой команды с sudo.

Следующая команда изменит владельца корневого документа Apache по умолчанию на пользователя и группу с именем sammy, поэтому обязательно замените выделенное имя пользователя и группу в этой команде, чтобы отразить имя пользователя и группа вашей системы:

  1. sudo chown -R sammy.sammy /var/www/html/

Вы можете создать тестовый файл PHP, чтобы убедиться, что веб-сервер работает должным образом. Используйте предпочитаемый вами текстовый редактор для создания этого файла. В следующих примерах используется текстовый редактор vi по умолчанию в CentOS 7.

Создайте файл PHP с именем info.php в каталоге var/www/html:

  1. vi /var/www/html/info.php

Откроется пустой файл PHP в каталоге /var/www/html. Нажмите I, чтобы войти в режим INSERT в редакторе vi. Это позволяет вам печатать и вносить изменения в текстовом редакторе. Введите следующий PHP-код:

<?php phpinfo(); ?>

Этот код PHP отображает информацию о среде PHP, работающей на вашем сервере. Когда вы закончите вносить изменения в этот файл, нажмите клавишу ESC, чтобы выйти из режима INSERT в vi. Введите :x — точку с запятой и букву x в нижнем регистре — чтобы сохранить и закрыть файл.

Вы можете проверить, правильно ли ваш веб-сервер отображает содержимое PHP, перейдя по общедоступному IP-адресу вашего сервера, а затем /info.php:

http://your_server_IP_address/info.php

В вашем браузере отобразится веб-страница, похожая на приведенную ниже:

Эта страница дает вам информацию о вашем сервере с точки зрения PHP. Это полезно для отладки и проверки правильности применения ваших настроек. После проверки соответствующей информации о вашем PHP-сервере лучше всего удалить этот файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и вашем сервере CentOS.

Вы можете использовать rm для удаления этого файла:

  1. rm /var/www/html/info.php

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

Шаг 5. Тестирование подключения к базе данных с помощью PHP (необязательно)

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

Сначала подключитесь к консоли MariaDB с пользователем базы данных, которого вы создали на шаге 2 этого руководства:

  1. mysql -u example_user -p

В консоли MariaDB выполните следующую инструкцию, чтобы создать таблицу с именем todo_list в вашей example_database:

  1. CREATE TABLE example_database.todo_list (
  2. item_id INT AUTO_INCREMENT,
  3. content VARCHAR(255),
  4. PRIMARY KEY(item_id)
  5. );

Консоль MariaDB будет уведомлять вас об изменениях в вашей таблице после каждого редактирования.

Query OK, 0 rows affected (0.00 sec)

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

  1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Чтобы подтвердить, что данные были успешно сохранены в вашей таблице, запустите:

  1. SELECT * FROM example_database.todo_list;

Ниже приведен пример вывода:

Output
+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

Убедившись, что в вашей тестовой таблице есть действительные данные, вы можете выйти из консоли MariaDB:

  1. exit

Теперь вы можете создать скрипт PHP, который будет подключаться к MariaDB и запрашивать ваш контент. Создайте новый файл PHP в пользовательском корневом веб-каталоге, используя предпочитаемый вами редактор. В этом примере используется vi:

  1. vi /var/www/html/todo_list.php

Добавьте следующий контент, нажав I в текстовом редакторе vi, не забыв заменить example_user и пароль с вашим собственным:

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Сохраните и закройте файл, когда закончите редактирование, нажав ESC, а затем введите :x в vi.

Теперь вы можете получить доступ к этой странице в своем веб-браузере, посетив имя хоста вашего сервера или общедоступный IP-адрес, а затем /todo_list.php:

http://server_host_or_IP/todo_list.php

Ниже приведен пример веб-страницы, демонстрирующей содержимое, которое вы вставили в свою тестовую таблицу:

Заключение

В этом руководстве вы создали гибкую основу для обслуживания веб-сайтов и приложений PHP для ваших посетителей, используя Apache в качестве веб-сервера. Вы настроили Apache для обработки запросов PHP и настроили базу данных MariaDB для хранения данных вашего сайта.