Установка и настройка LAMP-сервера на Ubuntu

Step 3 — Installing PHP

PHP is the component of your setup that will process code to display dynamic content. It can run scripts, connect to your MySQL databases to get information, and hand the processed content over to your web server so that it can display the results to your visitors.

Once again, leverage the system to install PHP. In addition to the package, you’ll also need to integrate PHP into Apache, and the package to allow PHP to connect to MySQL databases. Run the following command to install all three packages and their dependencies:

This should install PHP without any problems. We’ll test this in a moment.

Changing Apache’s Directory Index (Optional)

In some cases, you’ll want to modify the way that Apache serves files when a directory is requested. Currently, if a user requests a directory from the server, Apache will first look for a file called . We want to tell the web server to prefer PHP files over others, to make Apache look for an file first. If you don’t do that, an file placed in the document root of the application will always take precedence over an file.

To make this change, open the configuration file in a text editor of your choice. Here, we’ll use :

It will look like this:

/etc/apache2/mods-enabled/dir.conf

Move the PHP index file (highlighted above) to the first position after the specification, like this:

/etc/apache2/mods-enabled/dir.conf

When you are finished, save and close the file by pressing . Confirm the save by typing and then hit to verify the file save location.

After this, restart the Apache web server in order for your changes to be recognized. You can do that with the following command:

You can also check on the status of the service using :

Press to exit this status output.

Installing PHP Extensions (Optional)

To extend the functionality of PHP, you have the option to install some additional modules. To see the available options for PHP modules and libraries, pipe the results of into , a pager which lets you scroll through the output of other commands:

Use the arrow keys to scroll up and down, and press to quit.

The results are all optional components that you can install. It will give you a short description for each:

To learn more about what each module does, you could search the internet for more information about them. Alternatively, look at the long description of the package by typing:

There will be a lot of output, with one field called which will have a longer explanation of the functionality that the module provides.

For example, to find out what the module does, you could type this:

Along with a large amount of other information, you’ll find something that looks like this:

If, after researching, you decide you would like to install a package, you can do so by using the command like you have been doing for the other software.

If you decided that is something that you need, you could type:

If you want to install more than one module, you can do that by listing each one, separated by a space, following the command, like this:

At this point, your LAMP stack is installed and configured. Before you do anything else, we recommend that you set up an Apache virtual host where you can store your server’s configuration details.

Step 4 — Setting Up a Virtual Host (Recommended)

When using the Apache web server, you can use virtual hosts (similar to server blocks in Nginx) to encapsulate configuration details and host more than one domain from a single server. We will set up a domain called your_domain, but you should replace this with your own domain name. To learn more about setting up a domain name with DigitalOcean, see our Introduction to DigitalOcean DNS.

Apache on Ubuntu 18.04 has one server block enabled by default that is configured to serve documents from the directory. While this works well for a single site, it can become unwieldy if you are hosting multiple sites. Instead of modifying , let’s create a directory structure within for your_domain site, leaving in place as the default directory to be served if a client request doesn’t match any other sites.

Create the directory for your_domain as follows:

Next, assign ownership of the directory with the environment variable, which references the current logged user:

The permissions of your web root directory should be correct if you haven’t modified its umask value, but you can make sure by typing:

Next, create a sample page using or your favorite editor:

Inside, add the following sample HTML:

/var/www/your_domain/index.html

Save and close the file when you are finished.

In order for Apache to serve this content, it’s necessary to create a virtual host file with the correct directives. Instead of modifying the default configuration file located at directly, let’s make a new one at :

Paste in the following configuration block, which is similar to the default, but updated for our new directory and domain name:

/etc/apache2/sites-available/your_domain.conf

Save and close the file when you are finished.

Let’s enable the file with the tool:

Disable the default site defined in :

Next, let’s test for configuration errors:

You should see the following output:

Restart Apache to implement your changes:

Apache should now be serving your domain name. You can test this by navigating to , where you should see something like this:

With that, your virtual host is fully set up. Before making any more changes or deploying an application, though, it would be helpful to proactively test out your PHP configuration in case there are any issues that should be addressed.

Шаг 1 — Установка Apache и обновление брандмауэра

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

Установите Apache с помощью диспетчера пакетов в Ubuntu:

Если это первое использование в этом сеансе, вам нужно будет ввести пароль пользователя для подтверждения прав управления системными пакетами с помощью . Чтобы подтвердить установку Apache, нажмите , а затем .

После завершения установки вам нужно будет изменить настройки брандмауэра, чтобы разрешить трафик HTTP и HTTPS. Для этой цели в UFW можно использовать разные профили приложений. Чтобы вывести все доступные профили приложений UFW, запустите следующую команду:

Вывод будет выглядеть следующим образом:

Вот что означает каждый из этих профилей:

  • Apache: этот профиль открывает только порт (нормальный веб-трафик без шифрования).
  • Apache Full: этот профиль открывает порт 80 (нормальный веб-трафик без шифрования) и порт 443 (трафик с шифрованием TLS/SSL).
  • Apache Secure: этот профиль открывает только порт (трафик с шифрованием TLS/SSL).

Сейчас лучше всего разрешить только соединения на порту , поскольку мы только что установили Apache, и у нас еще нет сертификата TLS/SSL, настроенного для разрешения трафика HTTPS на нашем сервере.

Чтобы разрешить только трафик на порту , используйте профиль :

Проверить изменения можно с помощью следующей команды:

Теперь брандмауэр пропускает трафик порта .

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

Вы увидите веб-страницу по умолчанию Ubuntu 20.04 Apache, предназначенную для информационных целей и целей тестирования. Она должна выглядеть следующим образом:

Если вы видите эту страницу, ваш веб-сервер правильно установлен и доступен через ваш брандмауэр.

Как определить публичный IP-адрес сервера

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

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

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

Также можно использовать утилиту для связи с внешним устройством. Вы увидите, как это устройство видит ваш сервер. Для этого нужно запросить ваш IP-адрес у конкретного сервера:

Вне зависимости от метода получения IP-адреса введите его в адресную строку браузера для просмотра страницы Apache по умолчанию.

Установка Phpmyadmin в Ubuntu 16.04

Установка и настройка LAMP в Ubuntu 16.04 также будет включать инсталляцию Phpmyadmin. Phpmyadmin – это бесплатный инструмент с открытым исходным кодом для реализации веб-интерфейса управления базами данных MySQL. Он доступен в официальных репозиториях Ubuntu 16.04, установим его с помощью команды:

Но тут уже во время установки потребуется немного конфигурации. Сначала нужно выбрать наш веб-сервер:

Для перемещения по пунктам используйте стрелки вверх/вниз, для выбора – пробел, для переключения – Tab.

В следующем окне мастера нам предлагают настроить базу данных Рhpmyadmin, соглашаемся:

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

Подтверждение пароля:

По умолчанию в MariaDB есть плагин под названием unix_socket, он предотвращает вход под именем пользователя root в Рhpmyadmin или с помощью других TCP-интерфейсов. Для его отключения выполните:

Когда установка Рhpmyadmin в Ubuntu 16.04 будет завершена, откройте браузер и наберите в адресной строке localhost/phpmyadmin:

Всё работает, для доступа к базе данных вы можете ввести логин root и его пароль, который задали на этапе настройки MySQL:

Установка Apache

Самым сердцем LAMP-стека является серверное программное обеспечение под названием Apache. Работа веб-сервера заключается в обработке HTTP-запросов, которые используются для отправки информации через Интернет.

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

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

Перед проверкой не забудьте открыть порт HTTP, например с помощью утилиты iptables:

Перейдите в браузере по следующему адресу:

В итоге откроется следующая страница-заглушка.


Скриншот №1. Страница-заглушка

Переходим к настройке и работе с системой после её установки

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

Сразу скажем, каких-либо диалоговых окон процесс ввода пароля в системе не предполагает. Здесь просто следует ввести необходимую комбинацию и нажать Enter. Хотя внешне никаких окон и запросов нет. Сделано это разработчиками специально для безопасности — чтобы при попытке взломать пароль не было возможности видеть его длину.

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

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

Затем с помощью редактора открываем конфигурационный файл с настройками сети. Для этого вводим команду:

Следует привести этот файл к такому виду:

Выполните конфигурацию, как показано на иллюстрации

После редактирования и закрытия файла воспользуемся командой reboot для перезагрузки компьютера.

При правильном выполнении всей процедуры у системы появится интернет-доступ. Чтобы убедиться в наличии подключения к интернету, воспользуемся командой ping ya.ru

Далее уже можно переходить к установке необходимых приложений, конфигураторов, прочим настройкам с учётом своих задач и приоритетов. Также не стоит забывать о настройке серверных ролей и других опций — но всё это индивидуальные вопросы, которые требуют отдельной статьи.

Confirm partitions

With the target drive selected, the installer will calculate what partitions to create and present this information…

If this isn’t what you expected to see (e.g., you have selected the wrong drive), you should use the arrow keys and enter to select from the options at the bottom of the screen. This will take you back to the previous menu where you can select a different drive.

It is also possible to manually change the partitions here, by selecting . Obviously you should only select this if you are familiar with how partitions work.

When you are happy with the disk layout displayed, select to continue.

Откройте терминал (командную строку)

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

  • Если вы работаете в Linux (например, в Ubuntu или любом другой дистрибутиве), то вам нужно открыть терминал. Иногда это можно сделать, нажав сочетание клавиш Ctrl+Alt+T или найти в меню запуска приложений программу Терминал (Эмулятор терминала).
  • Если вы работаете в MacOS, то запустите программу Терминал из Лаунчера (из Launchpad).
  • Если вы работаете в Windows, то можно использовать штатную программу cmd.exe. Нажмите Win+r, в отрывшемся окне впишите «cmd» (без кавычек) и нажмите ОК. Вы также можете воспользоваться бесплатной программой PuTTY, которая позволяет выполнять подключение по SSH.

Установка Apache2 в Ubuntu 20.04

Первое что требуется сделать это проверить наличие обновлений пакетов с помощью команды ниже.

Во — вторых, выполните следующую команду, чтобы установить Apache версии 2 из репозитория пакетов Ubuntu.

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

После успешной установки Apache2 выполните следующую команду для просмотра версии.

Проверка версии сервера Apache

Проверка Состояния Сервера Apache2 в Ubuntu 20.04

Далее следует проверить состояние сервера Apache2, для этого выполните следующую команду.


Проверка состояния сервера Apache

По умолчанию служба Apache2 должна быть активна (запущена). Если нет, запустите службу следующей командой.

Протестируйте установленный веб-сервер Apache2

Последний шаг — это тестирование веб-сервера Apache2. Откройте веб-браузер и введите IP — адрес вашего сервера Ubuntu. Или введите localhost, если вы локально подключены к серверу.

Вы должны увидеть страницу Apache2 Ubuntu default page, как показано на рисунке ниже.


Страница Apache2 Ubuntu по умолчанию

Настройка сети через терминал в Ubuntu

Тут мы рассмотрим автоматическую настройку сети для Ubuntu 16.04 без Network Manager с помощью стандартных скриптов системы, которые остались от Upstart и пока всё ещё используются. Давайте сначала определим, какие шаги нам нужно предпринять, чтобы всё заработало:

  • Включаем сетевой интерфейс и подключаемся к сети;
  • Устанавливаем IP-адрес;
  • Получаем адреса DNS-серверов.

Собственно, готово. Эти шаги очень символичны, потом что система всё сделает за нас сама. Нам нужно только выполнить нужные настройки. Но сначала давайте посмотрим, какие сетевые интерфейсы подключены к системе. Мне нравится команда:

Но если хотите, можете использовать ifconfig:

В нашей системе только один интерфейс — это enp0s3, есть еще lo, но он виртуальный и указывает на эту машину.

Настройки сети находятся в файле /etc/network/interfaces.

Нас будут интересовать в этом файле строчки auto и iface. Первая указывает, что нужно активировать интерфейс при загрузке, вторая же определяет настройки самого интерфейса.

Настройка динамического получения IP-адреса

Добавьте в этот файл такие строки, чтобы запускать интерфейс при загрузке и получать IP-адрес автоматически по DHCP:

Синтаксис строки auto прост. Он состоит из самой команды и имени сетевого интерфейса. Рассмотрим подробнее:

$ iface интерфейс inet тип

Тип получения IP-адреса может иметь несколько значений, но нас в этой статье будут интересовать только два: dhcp и static.

После завершения настройки сохраните файл и перезапустите сетевой сервис:

Всё, если сетевой кабель подключён, и вы всё сделали правильно, Сеть будет работать.

Настройка статического адреса Ubuntu

При настройке статического IP-адреса компьютер не будет связываться с DHCP-сервером, поэтому здесь придётся указать намного больше параметров.

Содержимое нашего конфигурационного файла будет выглядеть вот так:

С первыми двумя строчками все понятно, а следующие задают параметры настройки интерфейса:

  • address — наш IP-адрес;
  • gateway — шлюз, через который будем получать доступ в интернет;
  • netmask — маска сети;
  • network — адрес сети, имеет тот же адрес, что и шлюз, только с нулем вместо единицы;
  • broadcast — широковещательный адрес сети, отправленный на него пакет придет всем компьютерам локальной сети.

Как видите, network и broadcast — это первый и последний IP-адреса сети. Теперь сохраните файл и перезапустите сеть:

Если все параметры были указаны правильно, всё будет работать. Но если допущена хоть одна ошибка, доступ к сети вы не получите.

Это была автоматическая настройка локальной сети Гbuntu, но я ещё расскажу, как всё сделать вручную, без конфигурационных файлов.

Шаг 2 – Установка MySQL

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

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

Внимание

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

Вам будет показан список пакетов, которые будут установлены, а также сколько места на диске они займут. Нажмите Y для продолжения установки.

В процессе установки ваш сервер попросит вас задать и подтвердить пароль для пользователя “root” в MySQL. Это администраторский аккаунт в MySQL, который имеет расширенные права. Рассматривайте его как аналог root-аккаунта для самого сервера (однако тот, который вы конфигурируете в данный момент, подходит только для MySQL). Задайте надёжный уникальный пароль, не оставляйте пароль не заданным.

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

Скрипт запросит пароль, который вы только что задали для root пользователя в MySQL. Далее вам будет предложено сконфигурировать плагин валидации паролей ().

Внимание: решение включать плагин валидации паролей или нет носит субъективный характер. При включении все пароли, которые не удовлетворяют определённым критериям безопасности, будут отвергаться MySQL с сообщением об ошибке

Это может вызывать проблемы, если вы используете “слабые” пароли совместно с программным обеспечением, которое конфигурирует профили пользователей MySQL, например, пакеты Ubuntu для phpMyAdmin. Вы можете оставить валидацию паролей отключенной, но в этом случае вам следует всегда использовать “сильные” уникальные пароли для пользователей базы данных.

Введите y для включения плагина или что-нибудь другое для продолжения без его включения:

Если вы включили валидацию паролей, вам будет предложено установить уровень надёжности паролей при валидации. Имейте в виду, что при выборе значения 2 (самый строгий уровень валидации), вы будете получать ошибки при попытке задать пароль без цифр, букв в верхнем и нижнем регистре, а также без специальных символов, а также при попытке использовать пароль, основанный на распространённых словах, которые уязвимы для подбора паролей по словарю.

Если вы включили валидацию паролей, вам будет показан уровень надёжности заданного вами ранее пароля root пользователя, а также вам будет предложено изменить этот пароль. Если вы не хотите менять пароль, введите n или no:

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

Теперь ваша система управления базами данных установлена и мы можем двигаться дальше.

Создание базы данных MySQL

WordPress использует базу данных MySQL для хранения всех данных, таких как записи, страницы, пользователи, плагины и настройки тем. Мы начнем с создания базы данных MySQL, учетной записи пользователя MySQL и предоставим доступ к базе данных.

Если на вашем сервере Ubuntu не установлены MySQL или MariaDB, вы можете сделать это, следуя одному из следующих руководств:

  • Установите MySQL в Ubuntu 18.04
  • Установите MariaDB в Ubuntu 18.04

Войдите в оболочку MySQL, набрав следующую команду:

Из оболочки MySQL запустите следующий оператор SQL, чтобы создать базу данных :

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

Наконец, выйдите из консоли mysql, набрав:

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

Чтобы проверить, правильно ли настроена ваша система, создайте очень простой скрипт PHP с именем .

Чтобы Apache мог найти этот файл и правильно его обслужить, он должен быть сохранен в конкретном каталоге, который называется «веб-корнем».

В Ubuntu 18.04 этот каталог находится по адресу . Создайте файл в этом месте, запустив:

Это откроет пустой файл. Добавьте следующий текст:

Когда вы закончите, сохраните и закройте файл.

Теперь вы можете проверить, может ли ваш веб-сервер правильно отображать контент, сгенерированный этим PHP-скриптом.

Посетите эту страницу в своем веб-браузере:

Эта страница содержит основную информацию о вашем сервере с точки зрения PHP. Если вы видите эту страницу в своем браузере, значит ваш PHP работает как положено.

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

Установка PHP на Ubuntu

PHP (Hypertext Preprocessor) — это язык сценариев на стороне сервера, который обеспечивает динамическую обработку веб-контента при взаимодействии с базами данных. Выполните команду ниже, чтобы установить PHP и связанные компоненты.

Проверьте установленную версию PHP с помощью:


Проверка версии PHP

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

Требуется создать index.php файл в корневом каталоге веб-сайта по умолчанию с помощью приведенной ниже команды.

Вставьте пример PHP — кода ниже в текстовый редактор.

Сохраните изменения и закройте файл.

Перезагрузите Apache2 командой:

Теперь откройте веб-браузер и посетите ServerIP/index.php. Например, 192.11.9.2/index.php.

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


Тест Apache2 PHP обработка

Отладка – та часть, которую не найдёшь в туториалах

Когда я устанавливал airflow и не указал домашнюю директорию, он всё поставил в home директорию пользователя root, что привело к дальнейшим большим проблемам – не делайте так.

Если же вы так сделали – создайте папку с нормальными правами доступа в корне и перенесите туда папку airflow.

Я пытался сначала настроить чтобы всё работало из root – даже выдал всем пользователям полный доступ до папок airflow – но видимо сыграло роль, что это был root пользователь – сервис всё-равно не мог получить доступа до нужных файлов и ругался мне в лог.

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

Так же пришлось редактировать скрипты запуска сервисов – иначе тоже постоянно были ошибки в логе.

Для настроек перейдите в папку /usr/lib/systemd/system и отредактируйте фалы таким образом, чтобы они были максимально похожи на следующие:

–pid /airflow/airflow-webserver.pid должен указывать туда, где у вас лежит файл airflow-webserver.pid – мы его указывали выше в статье.

Что ещё может потребоваться настроить:

Перейти по в папку /etc/sysconfig/ и там отредактировать файл airflow – указать в нём правильный путь AIRFLOW_CONFIG и AIRFLOW_HOME

После чего необходимо обновить и перезапустить сервисы:

И последняя проблема: после создания пользователя пытался зайти в Airflow. Говорит “login failed”.

Сначала я думал, что не создался пользователь – несколько раз его пересоздавал, проверял в БД – пользователь на месте, а с интерфейса не заходит.

Видим, что веб сервер одновременно запущен и работает, и при этом постоянно пытается запуститься ещё раз.

Но если посмотреть его статус, то видим, что он упал с ошибкой:

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

Самое удивительное было, когда я его остановил принудительно: systemctl stop airflow-webserver: статус у него был, что он остановлен, но на сайте по 8080 порту он отлично показывал веб-интерфейс.

В чём же было дело и как удалось решить эту проблему? Посмотрим, что работает по этому порту:

выяснилось, что после остановки airflow-webserver остался запущенным gunicorn, который занимал 8080 порт и отрисовывал интерфейс.

После того как убил его по ID и перезапустил веб-сервер, всё наконец заработало нормально.

Вроде всё. Если что-то забыл или возникли ещё проблемы при установке – пишите, добавлю в статью.

Поделитесь в социальных сетях:FacebookTwitterВКонтакте
Напишите комментарий