Введение
Стек “LAMP” — это набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы обеспечить серверу размещение динамических веб-сайтов и веб-приложений, написанных на PHP. Этот термин обозначает операционную систему Linux с веб-сервером Apache. Данные сайта хранятся в базе данных MySQL, а динамический контент обрабатывается PHP.
В этом руководстве вы настроите стек LAMP на сервере Ubuntu 22.04. Эти шаги применимы для Ubuntu 18.04 и более поздних версий.
Предпосылки
Для выполнения этого руководства вам понадобится сервер под управлением Ubuntu, пользователь без прав root с привилегиями sudo и активный брандмауэр. Чтобы узнать, как настроить всё это, выберите свой дистрибутив из списка и следуйте нашему руководству по установке сервера.
Шаг 1 — Установка Apache и обновление брандмауэра
Веб-сервер Apache — один из самых популярных веб-серверов в мире. Он хорошо документирован, имеет активное сообщество пользователей и широко применялся на протяжении большей части истории Интернета, что делает его отличным выбором для хостинга веб-сайтов.
Начните с обновления кэша менеджера пакетов. Если вы впервые используете sudo в этом сеансе, вам будет предложено ввести пароль пользователя для подтверждения наличия у вас соответствующих прав для управления системными пакетами с помощью apt:
sudo apt updateЗатем запустите Apache с помощью:
sudo apt install apache2Вам будет предложено подтвердить установку Apache. Подтвердите установку, нажав Y, а затем ENTER.
После завершения установки необходимо настроить параметры брандмауэра, чтобы разрешить HTTP-трафик. Инструмент настройки брандмауэра по умолчанию в Ubuntu называется Uncomplicated Firewall (UFW). Он предлагает различные профили приложений, которые вы можете использовать. Чтобы получить список всех доступных профилей приложений UFW, выполните следующую команду:
sudo ufw app listOutput
Available applications:
Apache
Apache Full
Apache Secure
OpenSSHВот что означает каждый из этих профилей:
- Apache: этот профиль открывает только порт 80 (обычный, незашифрованный веб-трафик).
- Apache Full: этот профиль открывает как порт 80 (обычный незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL).
- Apache Secure: этот профиль открывает только порт 443 (зашифрованный трафик TLS/SSL).
На данный момент лучше разрешить только соединения через порт 80, поскольку это новая установка Apache и вы еще не настроили сертификат TLS/SSL для разрешения трафика HTTPS на своем сервере.
Чтобы разрешить трафик только через порт 80, используйте профиль Apache:
sudo ufw allow in "Apache"Подтвердите изменение с помощью:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)Трафик через порт 80 теперь разрешен через брандмауэр.
Вы можете сразу же провести быструю проверку, чтобы убедиться, что все прошло по плану, посетив публичный IP-адрес вашего сервера в веб-браузере (см. примечание под следующим заголовком, чтобы узнать свой публичный IP-адрес, если у вас нет этой информации. Ранее, ранее):
http://your_server_ipВеб-страница Apache Ubuntu по умолчанию предназначена для информационных и тестовых целей. Ниже приведён пример веб-страницы Apache по умолчанию для Ubuntu 22.04:
Если вы видите эту страницу, ваш веб-сервер правильно установлен и доступен через брандмауэр.
Как узнать публичный IP-адрес вашего сервера
Если вы не знаете публичный IP-адрес вашего сервера, есть несколько способов его узнать. Обычно это адрес, который вы используете для подключения к серверу по SSH.
Есть несколько способов сделать это из командной строки. Во-первых, вы можете использовать инструмент iproute2 для получения своего IP-адреса, введя следующую команду:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'В результате будут возвращены две или три строки. Все адреса допустимы, но ваш компьютер может использовать только один из них, поэтому попробуйте каждый.
Альтернативный метод — использовать инструмент curl для связи с внешним устройством и сообщить ему, как он видит ваш сервер. Для этого нужно запросить у конкретного сервера ваш IP-адрес:
curl http://icanhazip.comКакой бы метод вы ни выбрали, введите свой IP-адрес в веб-браузер, чтобы проверить, работает ли ваш сервер.
Шаг 2 — Установка MySQL
Теперь, когда у вас есть веб-сервер, вам необходимо установить систему управления базами данных для хранения и управления данными вашего сайта. MySQL — популярная система управления базами данных, используемая в PHP-средах.
Используйте apt еще раз, чтобы получить и установить это программное обеспечение:
sudo apt install mysql-serverПри появлении запроса подтвердите установку, введя Y, а затем ВХОДИТЬ Подтверждать.
После завершения установки рекомендуется запустить скрипт безопасности, предустановленный вместе с MySQL. Этот скрипт удалит некоторые небезопасные настройки по умолчанию и заблокирует доступ к вашей системе баз данных.
Запустите интерактивный скрипт, выполнив следующее:
sudo mysql_secure_installationЭтот вопрос спрашивает вас, хотите ли вы ПЛАГИН ПРОВЕРКИ ПАРОЛЯ Настроить.
Чтобы продолжить без активации, ответьте Y, да или что-нибудь еще.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:Если вы ответите «Да», вам будет предложено выбрать уровень проверки пароля. Имейте в виду, что если вы введете значение 2 для самого высокого уровня, при попытке установить пароль, не содержащий цифр, заглавных и строчных букв, а также специальных символов, возникнут ошибки:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1Независимо от того, решите ли вы установить плагин проверки пароля (VALIDATE PASSWORD), ваш сервер затем попросит вас выбрать и подтвердить пароль для пользователя root в MySQL. Его не следует путать с системным пользователем root. Пользователь root базы данных — это администратор с полными правами доступа к системе базы данных. Несмотря на то, что метод аутентификации пользователя root в MySQL по умолчанию не предполагает использования пароля, даже если пароль установлен, вам следует задать надёжный пароль в качестве дополнительной меры безопасности.
Если у вас включена проверка пароля, вам будет показана надёжность только что введённого пароля root, и сервер спросит, хотите ли вы продолжить с этим паролем. Если текущий пароль вас устраивает, введите Y (да) в ответ на запрос:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yНа остальные вопросы нажимайте Y и ENTER в каждом запросе. Это удалит часть анонимных пользователей и тестовую базу данных, отключит удалённый вход под учетной записью root и загрузит новые правила, чтобы MySQL немедленно принял внесённые вами изменения.
Закончив, проверьте, можете ли вы войти в консоль MySQL, введя следующее:
sudo mysqlЭто позволяет подключиться к серверу MySQL как пользователь root, который является администратором базы данных и определяется с помощью sudo при выполнении этой команды. Ниже приведён пример вывода:
Output
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>Чтобы выйти из консоли MySQL, введите:
exitОбратите внимание, что для подключения в качестве пользователя root не требуется указывать пароль, даже если вы задали его при запуске скрипта mysql_secure_installation. Это связано с тем, что для административного пользователя MySQL по умолчанию используется метод аутентификации unix_socket, а не пароль. Хотя это может показаться угрозой безопасности, это повышает безопасность сервера базы данных, поскольку входить в систему как пользователь root MySQL могут только системные пользователи с привилегиями sudo, подключающиеся из консоли или через программу, работающую с теми же привилегиями. На практике это означает, что вы не сможете использовать пользователя root для подключения из вашего PHP-приложения. Установка пароля для учетной записи root MySQL служит защитой на случай, если метод аутентификации по умолчанию изменится с unix_socket на пароль.
Для повышения безопасности лучше всего настроить отдельные учетные записи пользователей с менее обширными привилегиями для каждой базы данных, особенно если вы планируете размещать на своем сервере несколько баз данных.
Ваш сервер MySQL установлен и защищён. Теперь вам нужно установить PHP, последний компонент в стеке LAMP.
Шаг 3 — Установка PHP
Вы установили Apache для обслуживания вашего контента и MySQL для хранения и управления данными. PHP — это часть нашей установки, которая обрабатывает код для отображения динамического контента конечному пользователю. Помимо пакета php, вам потребуется php-mysql — модуль PHP, позволяющий PHP взаимодействовать с базами данных MySQL. Вам также потребуется libapache2-mod-php для работы Apache с файлами PHP. Основные пакеты PHP устанавливаются автоматически в качестве зависимостей.
Чтобы установить эти пакеты, выполните следующую команду:
sudo apt install php libapache2-mod-php php-mysqlПосле завершения установки выполните следующую команду, чтобы проверить версию PHP:
php -vOutput
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend TechnologiesИзменить каталог Apache (необязательно)
В некоторых случаях требуется изменить способ обслуживания файлов Apache при запросе каталога. В настоящее время, если пользователь запрашивает каталог с сервера, Apache сначала ищет файл index.html. Мы хотим указать веб-серверу, что PHP-файлы должны быть приоритетнее других, чтобы Apache первым искал файл index.php. Если этого не сделать, файл index.html, размещённый в корневом каталоге документов приложения, всегда будет иметь приоритет над файлом index.php.
Чтобы внести это изменение, откройте файл конфигурации dir.conf в любом текстовом редакторе. В данном случае мы будем использовать nano:
sudo nano /etc/apache2/mods-enabled/dir.conf
Это будет выглядеть так:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>Переместите индексный файл PHP (указанный выше) на первую позицию после спецификации DirectoryIndex, например:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>Закончив, сохраните и закройте файл, нажав CTRL+X. Подтвердите сохранение, введя Y, а затем нажмите ENTER, чтобы указать место сохранения файла.
После этого перезапустите веб-сервер Apache, чтобы изменения вступили в силу. Это можно сделать с помощью следующей команды:
sudo systemctl restart apache2Вы также можете проверить состояние службы apache2 с помощью systemctl:
sudo systemctl status apache2Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
Main PID: 3719 (apache2)
Tasks: 55 (limit: 2361)
CGroup: /system.slice/apache2.service
├─3719 /usr/sbin/apache2 -k start
├─3721 /usr/sbin/apache2 -k start
└─3722 /usr/sbin/apache2 -k start
Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.Чтобы выйти из этой ситуации, В Нажимать .
Установить расширения PHP (необязательно)
Чтобы расширить функциональность PHP, вы можете установить несколько дополнительных модулей. Чтобы увидеть доступные варианты модулей и библиотек PHP, введите результаты поиска apt в less — постраничный просмотрщик, позволяющий прокручивать вывод других команд:
apt search php- | lessИспользуйте клавиши со стрелками для перемещения вверх и вниз и нажмите кнопку Q, чтобы выйти.
В результатах поиска представлены все доступные для установки дополнительные компоненты. Для каждого из них дано краткое описание:
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php-l10n
…Чтобы узнать больше о функциях каждого модуля, вы можете поискать информацию о них в интернете. Также можно посмотреть подробные описания пакетов, набрав:
apt show package_nameБудет выведено много информации, включая поле «Описание», в котором приводится более подробное объяснение функциональности модуля.
Например, чтобы узнать, что делает модуль php-cli, вы можете ввести следующее:
apt show php-cliНаряду с массой другой информации вы найдете что-то вроде этого:
Output
…
Description: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Ubuntu's default
PHP version (currently 7.2).
…Если после исследования вы решите, что хотите установить пакет, вы можете сделать это с помощью команды apt install, как и с любым другим программным обеспечением.
Если вы решили, что php-cli — это то, что вам нужно, вы можете ввести:
sudo apt install php-cliЕсли вы хотите установить более одного модуля, вы можете сделать это, перечислив каждый модуль, разделив его пробелом, а затем выполнив команду apt install, например:
sudo apt install package1 package2 ...На этом этапе ваш стек LAMP установлен и настроен. Прежде чем что-либо делать, рекомендуем настроить виртуальный хост Apache, чтобы хранить данные о конфигурации сервера.
На этом этапе ваш стек LAMP полностью работоспособен, но перед тестированием вашей настройки с помощью PHP-скрипта рекомендуется настроить подходящий виртуальный хост Apache для хранения файлов и папок вашего веб-сайта.
Шаг 4 — Создайте виртуальный хост для вашего сайта
При использовании веб-сервера Apache вы можете создавать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения нескольких доменов на одном сервере. В этом руководстве мы настроим домен с именем your_domain, но вам следует заменить его на своё доменное имя.
В Apache в Ubuntu по умолчанию включен виртуальный хост, настроенный на обслуживание документов из каталога /var/www/html. Хотя это отлично работает для одного сайта, при размещении нескольких сайтов может быть неудобно. Вместо того, чтобы изменять /var/www/html, мы создадим структуру каталогов в /var/www для сайта your_domain и оставим /var/www/html в качестве каталога по умолчанию, если клиент не запросит. Совпадение с любым другим сайтом.
Создайте каталог для your_domain следующим образом:
sudo mkdir /var/www/your_domainЗатем назначьте владельца каталога с помощью переменной среды $USER, которая будет ссылаться на текущего пользователя в вашей системе:
sudo chown -R $USER:$USER /var/www/your_domainЗатем откройте новый файл конфигурации в каталоге Apache sites-available с помощью вашего любимого редактора командной строки. В данном случае мы используем nano:
sudo nano /etc/apache2/sites-available/your_domain.confЭто создаст новый пустой файл. Добавьте в него следующую базовую конфигурацию с вашим доменным именем:
<VirtualHost *:80>
ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Закончив, сохраните и закройте файл. Если вы используете nano, нажмите CTRL+X, затем Y и ENTER.
С помощью этой конфигурации VirtualHost мы указываем Apache обслуживать your_domain, используя /var/www/your_domain в качестве корневого каталога. Если вы хотите протестировать Apache без доменного имени, вы можете удалить или закомментировать параметры ServerName и ServerAlias, добавив знак решетки (#) в начале каждой строки с параметрами.
Теперь используйте a2ensite для активации нового виртуального хоста:
sudo a2ensite your_domainВозможно, вам захочется отключить веб-сайт по умолчанию, установленный Apache. Это необходимо, если вы не используете собственное доменное имя, так как в этом случае Apache переопределит настройки вашего виртуального хоста по умолчанию. Чтобы отключить веб-сайт Apache по умолчанию, введите:
sudo a2dissite 000-default
Чтобы убедиться, что ваш файл конфигурации не содержит синтаксических ошибок, выполните следующую команду:
sudo apache2ctl configtestНаконец, перезагрузите Apache, чтобы изменения вступили в силу:
sudo systemctl reload apache2Ваш новый сайт уже запущен, но корневой каталог /var/www/your_domain всё ещё пуст. Создайте файл index.html в этом каталоге, чтобы проверить работу виртуального хоста:
nano /var/www/your_domain/index.htmlПоместите в этот файл следующее содержимое:
<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>Сохраните и закройте файл, затем перейдите в браузер и получите доступ к доменному имени или IP-адресу вашего сервера:
http://server_domain_or_IPВаша веб-страница должна отражать содержимое файла, который вы только что отредактировали:
Вы можете оставить этот файл в качестве временной целевой страницы для своего приложения, пока не настроите файл index.php для его замены. После этого не забудьте удалить или переименовать файл index.html из корневого каталога документов, так как по умолчанию он имеет приоритет над файлом index.php.
Заметка о DirectoryIndex в Apache
При настройках DirectoryIndex по умолчанию в Apache файл index.html всегда имеет приоритет над файлом index.php. Это полезно для настройки страниц обслуживания в PHP-приложениях, поскольку создаёт временный файл index.html, содержащий информационное сообщение для посетителей. Поскольку эта страница имеет приоритет над страницей index.php, она становится целевой страницей приложения. После завершения обслуживания index.html переименовывается или удаляется из корневого каталога документов, восстанавливая обычную страницу приложения.
Если вы хотите изменить это поведение, вам необходимо отредактировать файл /etc/apache2/mods-enabled/dir.conf и изменить порядок индексации файла index.php в директиве DirectoryIndex:
sudo nano /etc/apache2/mods-enabled/dir.conf<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>После сохранения и закрытия файла необходимо перезагрузить Apache, чтобы изменения вступили в силу:
sudo systemctl reload apache2Далее мы создадим PHP-скрипт для проверки правильности установки и настройки PHP на вашем сервере.
Шаг 5 — Тестирование обработки PHP на вашем веб-сервере
Теперь, когда у вас есть индивидуальное место для размещения файлов и папок вашего веб-сайта, создайте тестовый PHP-скрипт, чтобы проверить, способен ли Apache обрабатывать запросы к PHP-файлам.
Создайте новый файл с именем info.php в вашей корневой веб-папке:
nano /var/www/your_domain/info.phpОткроется пустой файл. Добавьте в него следующий текст, представляющий собой корректный PHP-код:
<?php
phpinfo();Когда закончите, сохраните и закройте файл.
Чтобы протестировать этот скрипт, откройте веб-браузер и введите доменное имя или IP-адрес вашего сервера, а затем имя скрипта, которое в данном случае — info.php:
http://server_domain_or_IP/info.phpВот пример веб-страницы PHP по умолчанию:
Эта страница содержит информацию о вашем сервере с точки зрения PHP. Она полезна для отладки и проверки корректности применения настроек.
Если вы видите эту страницу в своем браузере, ваша установка PHP работает так, как и ожидалось.
После просмотра информации о вашем PHP-сервере на этой странице рекомендуется удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей PHP-среде и сервере Ubuntu. Для этого используйте команду rm:
sudo rm /var/www/your_domain/info.phpВы всегда можете заново создать эту страницу, если вам снова понадобится доступ к информации.
Шаг 6 — Тестирование подключения к базе данных из PHP (необязательно)
Если вы хотите проверить, может ли PHP подключаться к MySQL и выполнять запросы к базе данных, вы можете создать тестовую таблицу с тестовыми данными и запросить её содержимое из PHP-скрипта. Перед этим необходимо создать тестовую базу данных и нового пользователя MySQL, правильно настроенного для доступа к ней.
Создайте базу данных с именем example_database и пользователя с именем example_user. Вы можете заменить эти имена другими значениями.
Сначала подключитесь к консоли MySQL, используя учетную запись root:
sudo mysqlЧтобы создать новую базу данных, выполните следующую команду из консоли MySQL:
CREATE DATABASE example_database;Теперь создайте нового пользователя и предоставьте ему полные привилегии для только что созданной вами базы данных.
Следующая команда создаёт нового пользователя с именем example_user, аутентифицированного с помощью метода caching_sha2_password. Мы задаём пароль для этого пользователя как password, но вам следует заменить его на надёжный пароль по вашему выбору.
CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';Теперь предоставьте этому пользователю разрешения на доступ к базе данных example_database:
GRANT ALL ON example_database.* TO 'example_user'@'%';
Это дает пользователю example_user полные привилегии для базы данных example_database, но запрещает ему создавать или изменять другие базы данных на вашем сервере.
Теперь выйдите из оболочки MySQL:
exitПроверьте, имеет ли новый пользователь соответствующие разрешения, снова войдя в консоль MySQL, на этот раз используя пользовательские учетные данные:
mysql -u example_user -pОбратите внимание на флаг -p в этой команде, который предлагает вам выбрать пароль, который вы использовали при создании пользователя example_user. После входа в консоль MySQL убедитесь, что у вас есть доступ к базе данных example_database:
SHOW DATABASES;Это даст вам следующий результат:
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)Затем создайте тестовую таблицу с именем todo_list. В консоли MySQL выполните следующую команду:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);Вставьте несколько строк данных в тестовую таблицу. Повторите следующую команду несколько раз, используя разные значения, чтобы заполнить тестовую таблицу:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");Чтобы убедиться, что данные успешно сохранены в таблице, выполните:
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)Убедившись, что в вашей тестовой таблице имеются корректные данные, выйдите из консоли MySQL:
exitТеперь вы можете создать PHP-скрипт, который будет подключаться к MySQL и выполнять запросы к вашему контенту. Создайте новый PHP-файл в корневом каталоге вашего сайта, используя ваш любимый редактор:
nano /var/www/your_domain/todo_list.phpСледующий PHP-скрипт подключается к базе данных MySQL, выполняет поиск по содержимому таблицы todo_list и отображает результаты в виде списка. Он генерирует исключение, если возникает проблема с подключением к базе данных.
Добавьте этот контент в ваш скрипт todo_list.php, не забыв заменить 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();
}Сохраните и закройте файл после завершения редактирования.
Теперь вы можете получить доступ к этой странице в своем веб-браузере, введя доменное имя или публичный IP-адрес, настроенный для вашего веб-сайта, а затем /todo_list.php:
http://your_domain_or_IP/todo_list.phpНа этой веб-странице посетителю должно быть показано содержимое, которое вы включили в тестовую таблицу:
Это означает, что ваша PHP-среда готова к подключению и взаимодействию с вашим сервером MySQL.
Результат
В этом руководстве вы создали гибкую основу для предоставления посетителям веб-сайтов и приложений PHP, используя Apache в качестве веб-сервера и MySQL в качестве системы баз данных.
В качестве следующего шага вам следует обеспечить безопасность подключений к вашему веб-серверу, используя протокол HTTPS. Для этого вы можете использовать Let's Encrypt в Ubuntu 22.04 / 20.04 / 18.04, чтобы защитить свой сайт с помощью бесплатного TLS/SSL-сертификата.













