Создание, продвижение сайтов
40-33-54

УСТАНОВКА СТЕКА LAMP В UBUNTU 18.04

09 декабря 2019

Стек LAMP – это группа открытых программ, которая необходима серверу для поддержки динамических сайтов и веб-приложений. Акроним LAMP расшифровывается как Linux (операционная система), Apache (веб-сервер), MySQL (система управления базами данных) и PHP (серверный язык сценариев для обработки динамического контента).

На сервере уже установлен первый компонент – операционная система  Ubuntu, которая является дистрибутивом Linux. Этот мануал поможет установить остальные компоненты стека.

Требования

  • Сервер Ubuntu 18.04.
  • Пользователь с доступом к команде sudo

1: Установка Apache и настройка брандмауэра

Apache является одним из самых популярных веб-серверов в мире. Он хорошо документирован и широко используется в Интернете почти с самого начала его существования.

Установить Apache очень просто, пакеты этого веб-сервера доступны в стандартном репозитории Ubuntu. Для установки используйте пакетный менеджер apt:

 

sudo apt update sudo apt install apache2

 

Чтобы запустить команды с правами sudo, нужно предоставить пароль текущего пользователя. Получив валидный пароль, менеджер apt сообщит, какие пакеты он собирается установить и сколько дискового пространства для этого потребуется. Нажмите Y и ENTER, чтобы продолжить.

Примечание: Далее подразумевается, что вы настроили брандмауэр UFW согласно соответствующему разделу руководства по начальной настройке сервера.

Теперь нужно убедиться, что брандмауэр UFW пропускает трафик HTTP и HTTPS. Просмотрите доступные профили Apache:

 

sudo ufw app list

Available applications:

Apache

Apache Full

Apache Secure

OpenSSH

 

Профиль Apache Full разрешает трафик на порт 80 и 443.

 

sudo ufw app info "Apache Full"

Profile: Apache Full

Title: Web Server (HTTP,HTTPS)

Description: Apache v2 is the next generation of the omnipresent Apache web

server.

Ports:

80,443/tcp

 

Разрешите входящий трафик:

 

sudo ufw allow in "Apache Full"

 

Чтобы убедиться, что теперь брандмауэр поддерживает входящий трафик на порт 80 или 443, посетите внешний IP своего сервера в браузере.

 

http://your_server_IP_address

 

На экране должна появиться стандартная страница Apache для Ubuntu:

 

It works!

This is the default welcome page used to test the correct operation of the Apache2 server after installation on Ubuntu systems. …

 

Как узнать свой внешний IP-адрес

Существует несколько способов определить внешний IP-адрес сервера при помощи командной строки.

Во-первых, можно использовать инструменты iproute2:

 

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

 

Команда вернёт несколько адресов, однако сервер может использовать не все эти адреса, а только один из них; проверьте каждый полученный адрес.

Также можно запросить свой адрес у третьей стороны при помощи утилиты curl.

 

sudo apt install curl

curl http://icanhazip.com

 

2: Установка MySQL

MySQL – это реляционная система управления базами данных (СУБД), которая систематизирует и хранит данные сайта.

Эту систему также можно установить с помощью менеджера apt:

 

sudo apt install mysql-server

 

Примечание: В данном случае обновлять индекс пакетов не нужно, потому что он был обновлён перед установкой Apache.

Менеджер сообщит список пакетов, которые будут установлены, и необходимое для этого дисковое пространство.

После завершения установки нужно запустить сценарий безопасности, который удалит ненадёжные параметры  и защитит БД от несанкционированного доступа.

 

sudo mysql_secure_installation

 

Сценарий предложит указать root-пароль MySQL, а затем задаст ряд вопросов.

Примечание: Сценарий предложит включить параметр VALIDATE PASSWORD PLUGIN. Если этот параметр включен, пароли, которые не соответствуют указанным критериям, будет отклонены системой MySQL как ошибка. Это вызовет проблемы, если вы используете слабый пароль в программах, которые автоматически настраивают учетные данные пользователя MySQL (например PhpMyAdmin). Безопаснее отключить этот параметр и использовать надёжные, уникальные пароли.

Чтобы принять настройки по умолчанию, нажмите 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

 

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

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

 

Using existing password for root.

Estimated strength of the password: 100

Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

 

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

3: Установка PHP

PHP – э о серверный язык сценариев для создания динамических страниц. Он позволяет запускать сценарии, подключаться к БД MySQL и передавать обработанный контент в браузер для отображения.

PHP также можно установить с помощью менеджера apt. Чтобы установить PHP и несколько вспомогательных пакетов (для настройки взаимодействия с Apache и MySQL), введите команду:

 

sudo apt install php libapache2-mod-php php-mysql

 

В большинстве случаев рекомендуется настроить обработку файлов веб-сервером Apache при запросе каталога. На данный момент Apache сначала обслуживает index.html. Чтобы веб-сервер обслуживал PHP-файлы первыми, нужно отредактировать файл dir.conf:

 

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>

 

Как видите, файлы index.php находятся в конце строки, а значит, веб-сервер будет обслуживать их в последнюю очередь. Переместите index.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 apache2

apache2.service - LSB: Apache2 web server

Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)

Drop-In: /lib/systemd/system/apache2.service.d

└─apache2-systemd.conf

Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago

Docs: man:systemd-sysv-generator(8)

Process: 13581 ExecStop=/etc/init.d/apache2 stop (pre=exited, status=0/SUCCESS)

Process: 13605 ExecStart=/etc/init.d/apache2 start (pre=exited, status=0/SUCCESS)

Tasks: 6 (limit: 512)

CGroup: /system.slice/apache2.service

├─13623 /usr/sbin/apache2 -k start

├─13626 /usr/sbin/apache2 -k start

├─13627 /usr/sbin/apache2 -k start

├─13628 /usr/sbin/apache2 -k start

├─13629 /usr/sbin/apache2 -k start

└─13630 /usr/sbin/apache2 -k start

 

Функционал PHP можно расширить при помощи модулей. Чтобы просмотреть список доступных модулей и библиотек PHP, используйте следующую команду:

 

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

 

Данная команда вернёт объёмный вывод, включая поле Description, в котором содержится подробное объяснение работы запрашиваемого модуля.

К примеру, можно узнать больше о модуле php-cli:

 

apt show php-cli

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

 

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

 

sudo apt install package1 package2 ...

 

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

4: Тестирование стека

Сейчас нужно убедиться в том, что веб-сервер взаимодействует с PHP. Для этого нужно создать простой сценарий PHP, info.php. Чтобы веб-сервер Apache мог найти этот файл, его нужно поместить в root-каталог веб-сервера (в Ubuntu это /var/www/html/).

 

sudo nano /var/www/html/info.php

 

На экране появится пустой файл. Поместите в него такой код:

 

<?php

phpinfo();

?>

 

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

Теперь попробуйте открыть его в браузере:

 

http://server_domain_or_IP/info.php

 

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

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

 

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

 

Заключение

Теперь на сервере Ubuntu 18.04 установлен программный стек LAMP – надёжная и гибкая платформа для развёртывания сайта или приложения.

После этого вам обязательно нужно защитить соединения с вашим веб-сервером по HTTPS. Проще всего это сделать с помощью бесплатного сертификата Let’s Encrypt.

Статьи

Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.