Step 4 – Installing MySQL
The default Ubuntu repositories contain MySQL 8.0. Which can be directly installed using the package manager. To install the available MySQL server version, execute the following command.
Once the installation is finished, you can secure the MySQL server by executing the following command.
This will ask for a few questions to secure the MySQL server.
- Press ‘y’ to enable validate password plugin. This will allow you to set a strict password policy for user accounts.
VALIDATE PASSWORD COMPONENT 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 component? Press y|Y for Yes, any other key for No: y
- Chose the password complexity level. Read all 3 options and choose one. For production servers we recommend to choose STRONG 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
- Enter a new password and re-enter it. Make sure it matches the complexity level as described above.
New password: ************* Re-enter new password: *************
- Press ‘y’ to continue with provided password.
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
- Remove default anonymous users from MySQL server:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
- Disable root login from remote systems
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
- Remove test database form MySQL created by default during installation.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Reload all privileges to apply above changes immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
You have secured the MySQL server in the LAMP stack on Ubuntu 22.04 Linux system.
Remember that the above password set for the root accounts is used for remote users only. To log in from the same system, just type mysql on terminal.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 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>
Type ‘quit’ to exit from the MySQL shell and return to the system terminal.
Установка СУБД
В данной статье мы установим MariaDB. Установка выполняется следующей командой:
apt install mariadb-server
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb
Зададим пароль для учетной записи mysql-root:
mysqladmin -u root password
Входим в SQL-оболочку:
mysql -uroot -p
Задаем пароль для пользователя root@localhost:
> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);
> flush privileges;
* где New_Password — пароль, который мы хотим установить для учетной записи root.
Выходим из sql-консоли:
> quit
PHP + MariaDB
Для возможности подключаться к базе данных скриптами PHP, необходимо установить следующие модули:
apt install php-mysql php-mysqli
После перезагружаем php-fpm:
systemctl restart php7.4-fpm
* несмотря на то, что мы установили mariadb, в заголовке мы видим mysql. Так и должно быть.
Step 3 — Testing the PHP Environment
To test that your system is configured correctly for PHP, you can create and run a basic PHP script. Call this script :
This will open a blank file. Put the following text, which is valid PHP code, inside the file:
hello.php
Once you’ve added the text, save and close the file. You can do this by holding down the key and pressing the key. Then choose and press .
Now you can test to make sure that PHP processes your script correctly. Type to tell PHP to process the file, followed by the name of the file:
If the PHP is processed properly, you will see only the characters within the quotes:
PHP has successfully processed the script, meaning that your PHP environment is successfully installed and you’re ready to continue your programming journey.
Проверка работы PHP
Теперь проверим, что PHP успешно работает с веб-сервером Apache. Для этого мы создадим файл test.php, в котором выполним некоторый PHP код. Файл мы разместим в директории /var/www/html
Директория /var/www/html используется веб-сервером Apache по умолчанию для сайта (хоста), который доступен по IP-адресу вашего сервера. То есть, когда вы набираете в браузере адрес http://ip.адрес.вашего.сервера, то Apache обращается к каталогу /var/www/html
Воспользуемся консольным редактором nano. Скорее всего он уже установлен на вашем сервере. Если нет, то для установки выполните команду:
Создадим файл и откроем его в редакторе nano, выполнив команду:
Введите следующий текст файла.
<?php phpinfo();?&rt;
Сохраните изменения и закройте редактор. Для этого нажмите сочетание клавиш Ctrl+X, далее нажмите клавишу y и Enter.
Мы создали PHP-файл test.php, который внутри себя вызывает PHP-функцию phpinfo(). Данная функция выводит подробную информацию о текущей конфигурации PHP.
Обратимся к файлу test.php из браузера. Переходим в браузере по адресу http://ip.адрес.вашего.сервера/test.php В результате в браузере должна отобразится страница следующего вида:
Чтобы злоумышленник не смог получить информацию о конфигурации вашего сервера, крайне рекомендуется удалить данный файл. Для этого выполните команду:
Шаг 1 — Установка Apache и настройка файрвола
Веб-сервер Apache в настоящее время является одним из самых популярных веб-серверов в мире. Он хорошо документирован и используется значительную часть времени с момента создания сети Интернет, что делает его прекрасным выбором для хостинга веб-сайта.
Установим Apache используя менеджер пакетов Ubuntu :
Поскольку мы используем команду , эти команды будут выполняться с привилегиями root. В процессе установки операционная система запросит ваш пароль пользователя.
После ввода пароля сообщит, какие пакеты будут установлены и сколько места они займут на диске. Нажмите и для продолжения установки.
Настройка файрвола для разрешения веб-трафика
Теперь убедимся, что ваш файрвол пропускает HTTP и HTTPS трафик. Мы будем исходить из предположения, что вы уже выполнили инструкции по первичной настройке сервера и включили файрвол UFW. Для начала убедимся, что UFW имеет профиль для Apache следующей командой:
Проверим настройку профиля , она должна разрешать трафик для портов и :
Разрешим входящий HTTP и HTTPS трафик для этого профиля:
Проверить результат установки можно набрав в вашем веб-браузере публичный IP адрес вашего сервера (если вы еще не знаете, как найти публичный IP адрес вашего сервера, смотрите следующий раздел этой статьи):
Вы увидите страницу Apache, отображаемую по умолчанию для информации и целей тестирования. Она должна выглядеть похожим образом:
Если вы видите эту страницу, ваш веб-сервер корректно установлен и доступен через файрвол.
Как найти публичный IP адрес вашего сервера
Если вы не знаете публичный IP адрес вашего сервера, его можно определить несколькими способами. Обычно, это адрес, который вы используете для соединения с вашим сервером по SSH.
Определить этот адрес можно с помощью командной строки. Сначала используйте инструмент для получения вашего адреса набрав следующую команду:
Результатом выполнения этой команды будут две или три строки, содержащие корректный адрес. Ваш компьютер, возможно, сможет использовать только один из них, поэтому попробуйте каждый вариант.
В качестве альтернативы можно узнать, как видит ваш сервер. Это можно сделать следующим образом:
В независимости от метода, который вы использовали для получения своего IP адреса, вы можете использовать этот IP адрес для доступа к серверу через адресную строку веб-браузера.
How to Uninstall PHP on Ubuntu
To uninstall PHP from Ubuntu, follow the instructions below:
1. Run the following command in the terminal:
For example, if you installed the PHP 7.4 FPM version, run:
2. Remove the orphaned packages with:
3. Lastly, check the PHP version to confirm the uninstall worked:
If the output does not show the version, the uninstall removed everything correctly.
Conclusion
After reading this article, you should have successfully installed PHP 7.4 or 8.1 with Apache or Nginx on your Ubuntu 20.04 and 22.04 system.
One important thing to remember is that PHP works in tandem with an existing server, so you need to install it specifically to your server software. Alternatively, you can always install a stable version from the default Ubuntu software repositories.
Шаг 4 — Создание файлов нового виртуального хоста
Файлы виртуальных хостов задают их конфигурацию, и определяют, как именно веб-сервер Apache будет отвечать на запросы к разным доменам.
Apache имеет файл виртуального хоста по умолчанию , который мы можем использовать в качестве отправной точки. Мы собираемся скопировать его, чтобы создать файлы виртуального хоста для каждого из наших доменов.
Мы начнем с одного домена, сконфигурируем его, скопируем для другого домена, и затем снова сделаем необходимые правки. Конфигурация Ubuntu по умолчанию требует, чтобы каждый файл виртуального хоста заканчивался расширением .
Создание файла первого виртуального хоста
Начнем с копирования файла для первого домена:
Откройте новый файл в редакторе с root-правами:
Файл будет похож на этот (мы удалили комментарии, чтобы сделать его более читабельным):
/etc/apache2/sites-available/example.com.conf
Как видите, файл совсем небольшой. Мы поправим его для нашего первого домена и добавим некоторые новые директивы. Эта секция конфигурации виртуального хоста относится к любом запросам, которые сделаны по 80 порту (порт по умолчанию для HTTP).
Прежде всего, мы должны изменить директиву на адрес электронной почты, на который администратор сайта будет получать электронные письма.
Затем мы должны добавить две новые директивы. Первая, , устанавливает основной домен, который должен соответствовать названию виртуального хоста. Это должно быть ваше доменное имя. Вторая, , определяет другие имена, которые должны интерпретироваться так, как будто это основной домен. Это удобно для использования дополнительных доменных имен, например, с использованием :
Единственная вещь, которую нам осталось изменить в базовом файле виртуального хоста, это расположение корневого каталога этого домена. Мы уже создали нужную директорию, так что нам осталось изменить директиву так, чтобы она ссылалась на созданную нами директорию:
Теперь наш файл виртуального хоста должен выглядеть следующим образом:
/etc/apache2/sites-available/example.com.conf
Сохраните и закройте файл.
Копирование первого виртуального хоста и настройка для второго домена
Теперь, когда у нас есть готовый первый виртуальный хост, мы можем создать второй, скопировав файл и поправив его там, где это необходимо.
Начните с копирования:
Откройте новый файл в редакторе с правами root-пользователя:
Теперь вам нужно поправить всю необходимую информацию для второго домена. Когда вы закончите, файл должен выглядеть похожим образом:
/etc/apache2/sites-available/test.com.conf
Сохраните и закройте файл после внесения правок.
Откройте терминал (командную строку)
Все действия, описанные ниже, мы будем выполнять из командной строки, подключившись к серверу по SSH.
- Если вы работаете в Linux (например, в Ubuntu или любом другой дистрибутиве), то вам нужно открыть терминал. Иногда это можно сделать, нажав сочетание клавиш Ctrl+Alt+T или найти в меню запуска приложений программу Терминал (Эмулятор терминала).
- Если вы работаете в MacOS, то запустите программу Терминал из Лаунчера (из Launchpad).
- Если вы работаете в Windows, то можно использовать штатную программу cmd.exe. Нажмите Win+r, в отрывшемся окне впишите «cmd» (без кавычек) и нажмите ОК. Вы также можете воспользоваться бесплатной программой PuTTY, которая позволяет выполнять подключение по SSH.
Шаг 5 — Создание файла PHP для проверки настроек
Теперь ваш стек LEMP должен быть полностью готов к работе. Мы можем проверить, что Nginx корректно передаёт файлы нашему обработчику PHP.
Для этого создадим тестовый PHP файл в корневой директории веб-сервера. Откройте файл с именем в корневой директории веб-сервера с помощью текстового редактора:
Наберите или введите следующие строки в этот новый файл. Этот код PHP возвращает информацию о нашем сервере:
/var/www/html/info.php
После внесения изменений сохраните и закройте файл.
Теперь мы можем проверить, может ли веб-сервер корректно отображать контент, сгенерированный PHP скриптом. Для проверки нам просто нужно открыть данную страницу в веб-браузере. Вам снова потребуется публичный IP-адрес сервера.
Откроем этот адрес:
Страница, на которую вы попадёте, должна выглядеть похожим образом:
Если вы видите эту страницу, вы успешно настроили обработку PHP с помощью Nginx.
После того, как мы убедились, что всё работает, удалим этот файл, чтобы не давать неавторизованным пользователям возможности узнать дополнительную информацию о вашем сервере. При необходимости, вы всегда можете создать этот файл заново.
Удалим файл командой:
Выбор версии PHP по умолчанию
Вы можете выбрать какую версию php нужно использовать по умолчанию с помощью утилиты update-alternatives. Сначала смотрим доступные версии:
После этого следует ввести номер версии, которую вы хотите использовать по умолчанию:
Или можно сразу установить php ubuntu по умолчанию:
Чтобы используемая версия обновилась в Apache нужно подключить правильный модуль и перезагрузить веб-сервер. Например, для того чтобы отключить 7.4 и включить 5.6 выполните:
Установка php 8 Ubuntu выполняется так же. Теперь вы знаете как переключить версию php Ubuntu. Установка и настройка PHP вместе с Nginx отдельная обширная тема и она описана в статье про настройку PHP-FPM.
×
Установка расширений PHP
Не зависимо от того какую версию PHP вы установили, обычно для полноценной работы программ необходимо ещё установить расширения. Вот основные расширения, которые требуются чаще всего:
- php-curl — поддержка библиотеки CURL для отправки сетевых запросов;
- php-memcached — кэширование с помощью Memcache;
- php-mysql — поддержка баз данных MySQL и MariaDB;
- php-pgsql — поддержка PostgreSQL;
- php-gd — обработка графики с помощью библиотеки GD;
- php-imagick — обработка графики с помощью библиотеки ImageMagick;
- php-intl — локализация и интернационализация;
- php-mcrypt — шифрование;
- php-xml — работа с XML файлами и DOM;
- php-zip — работа с ZIP архивами;
- php-mbstring — работа со строками содержащими UTF-8 символы, в том числе и кириллицу.
Для того чтобы установить все эти расширения для версии PHP по умолчанию выполните такую команду:
Если надо установить расширения PHP для определённой версии, то следует указать эту версию в названии пакета:
Аналогично можно установить расширения для PHP 5.6 или 8.0.
Установка Nginx на Ubuntu 20.04
Установить Nginx можно двумя способами. Первый способ заключается в установки пакета из официального репозитория Ubuntu. На момент написания статьи (1 августа 2021 года) актуальной версией Nginx присутствующей в репозитории Ubuntu была версия 1.18.0. Данная версия считается устаревшей. Актуальной же версией считается 1.20.1 (по состоянию на 1 августа 2021 года).
1. Официальные репозитории Ubuntu
Если вы хотите установить версию Nginx из репозиториев Ubuntu необходимо выполнить следующие действия. Для начала обновляем списки пакетов при помощи команды:
Для того, чтобы установить Nginx, достаточно выполнить команду:
После этого программу можно использовать. Проверка и настройка программы будет описана в разделах ниже.
2. Официальные репозитории Nginx
Второй способ заключается в установке последней версии Nginx из официальных репозиториев, которые предоставляют разработчики Nginx. Если вы хотите использовать данный метод установки, для начала необходимо обновить списки пакетов при помощи команды:
Установите необходимые пакеты:
Далее у вас на выбор есть два пути – подключить репозиторий со стабильной версией nginx или подключить репозиторий с основной версией. Стабильная версия является более проверенной и работоспособной. Эту версию можно использовать, как и в тестовых средах так и на производственных. Основная версия не такая стабильная и может содержать ошибки. Данную версию не рекомендуется использовать в производственных средах.
Для подключения репозитория со стабильной версией nginx, выполните следующую команду:
Для подключения репозитория с основной версией nginx, выполните следующую команду:
Следующие шаги необходимо выполнять вне зависимости от выбранного репозитория. Импортируйте официальный ключ, используемый пакетным менеджером для проверки подлинности пакетов:
Проверьте, верный ли ключ был загружен:
Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:
Переместите ключ в каталог доверенных ключей apt:
Чтобы установить nginx, выполните следующие команды:
Версия Nginx от разработчиков немного отличается от версии из официальных репозиториев. Все дополнительные конфигурационные файлы здесь находятся в папке /etc/nginx/conf.d. Если вы хотите использовать папки sites-available и sites-enabled, то необходимо их создать:
Затем добавьте следующую строчку в конец секции http файла /etc/nginx.conf для того чтобы из папки /etc/nginx/sites-enabled загружалась конфигурация сайтов:
Затем перезапустите Nginx:
3. Запуск Nginx
После установки пакета, проверяем что Nginx успешно запустился при помощи команды:
Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:
Так же обратите внимание, что вы не можете запускать Apache и Nginx на одном порту. В таком случае вы получите ошибку nginx address already in use 80. Для корректной работы Nginx, необходимо будет отключить веб-сервер Apache (если он у вас используется) или изменить его порт с 80 (который используется по умолчанию) на другой свободный порт
4. Настройка брандмауэра
По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:
5. Проверка работы Nginx
После того, как Nginx будет запущен, он будет доступен по адресу сервера, на который он устанавливался. Вы можете проверить, всё ли работает, просто перейдя по адресу сервера, введя его в браузере. Для примера Nginx был установлен на localhost:
Если вы увидите приветственное сообщение как на скриншоте выше это означает что Nginx успешно установлен и запущен.
Шаг 3 – Установка PHP и настройка Nginx для использования процессора PHP
Теперь у вас есть Nginx для обслуживания ваших страниц и MySQL для хранения и управления данными, однако у вас до сих пор не установлено ПО, которое может генерировать динамический контент. Для этого требуется установить PHP.
Поскольку Nginx не поддерживает нативную обработку PHP, как некоторые другие веб-серверы, вам потребуется установить , т.е. «менеджер процессов fastCGI». Мы укажем Nginx передавать запросы PHP в это программное обеспечение для обработки.
Примечание. В зависимости от поставщика облачных услуг вам может потребоваться установить хранилище Ubuntu , которое включает бесплатное программное обеспечение и программное обеспечение с открытым исходным кодом, поддерживаемое сообществом Ubuntu, прежде чем устанавливать пакет . Для этого можно ввести следующую команду:
Установите модуль с дополнительным вспомогательным пакетом , который позволит PHP взаимодействовать с серверной частью вашей базы данных. При установке будут загружены необходимые файлы ядра PHP. Введите следующее:
Теперь у вас установлены все требуемые компоненты набора LEMP, однако вам нужно внести еще несколько изменений конфигурации, чтобы Nginx использовал процессор PHP для динамического контента.
Это изменение конфигурации выполняется уровне блока сервера (блоки сервера похожи на виртуальные хосты в Apache). Откройте новый файл конфигурации блока сервера в каталоге . В этом примере новый файл конфигурации блока сервера имеет имя , хотя вы можете использовать любое желаемое имя:
Если вам потребуется восстановить конфигурацию по умолчанию, вы можете отредактировать новый файл конфигурации блока сервера, а не изменять используемый по умолчанию файл.
Добавьте в новый файл конфигурации блока следующее содержимое, которое взято с некоторыми модификациями из файла конфигурации блока сервера по умолчанию:
/etc/nginx/sites-available/example.com
Ниже описано действие этих директив и блоков расположения:
- — определяет, что будет прослушивать порт Nginx. В данном случае он будет прослушивать порт , используемый по умолчанию для протокола HTTP.
- — определяет корневой каталог документа, где хранятся файлы, обслуживаемые сайтом.
- — задает для Nginx приоритет обслуживания файлов с именем (при наличии) при запросе файла индекса.
- — определяет, какой серверный блок должен использоваться для заданного запроса вашего сервера. Эта директива должна указывать на доменное имя или публичный IP-адрес вашего сервера.
- — первый блок расположения включает директиву , которая проверяет наличие файлов, соответствующих запросу URI. Если Nginx не сможет найти соответствующий файл, будет возвращена ошибка 404.
- — этот блок расположения отвечает за фактическую обработку PHP посредством указания Nginx на файл конфигурации и файл file, который объявляет, какой сокет ассоциирован с .
- — последний блок расположения отвечает за файлы , которые Nginx не обрабатывает. При добавлении директивы из файлов в корневой каталог документа они не будут выводиться посетителям.
После добавления этого содержания следует сохранить и закрыть файл. Для активации нового серверного блока создайте символическую ссылку от нового файла конфигурации серверного блока (в каталоге ) на каталог :
Затем уберите ссылку на файл конфигурации по умолчанию из каталога :
Примечание. Если вам потребуется восстановить конфигурацию по умолчанию, вы можете сделать это посредством воссоздания символической ссылки:
Протестируйте новый файл конфигурации на ошибки синтаксиса:
При появлении сообщений о каких-либо ошибках, вернитесь и повторно проверьте ваш файл, прежде чем продолжать.
Когда вы будете готовы, перезагрузите Nginx для внесения необходимых изменений:
Это завершает установку и настройку набора LEMP. Однако будет разумно убедиться, что все компоненты могут связываться друг с другом.