Как установить стек LAMP (Apache, MySQL, PHP) на Ubuntu 20.04

Обсудить
Как установить стек LAMP

В этом руководстве мы установим стек LAMP (Linux, Apache, MySQL, PHP) на Ubuntu 20.04 и настроим веб-сервер.

Установка Apache

Первый компонент вашего стека LAMP в Ubuntu 20.04 – Apache.

Начните с обновления списков пакетов и установки Apache. Нажмите y и ENTER, когда вас попросят продолжить. Команда: 

sudo apt update && sudo apt install apache2

Установка может занять несколько минут.

Настройка брандмауэра

Настоятельно рекомендуется настроить брандмауэр для обеспечения дополнительной безопасности вашего LAMP-стека в Ubuntu 20.04.

Мы начнем с добавления правила брандмауэра для SSH. Вы же не хотите получить блокировку при включении брандмауэра, когда настраиваете сервер удаленно? 

sudo ufw allow OpenSSH

Сообщение об ошибке «ERROR: could find a profile matching openSSH» означает, что вы не настраиваете сервер удаленно. Можно игнорировать. 

Теперь мы можем добавить правила брандмауэра для Apache:

sudo ufw allow in "Apache Full"

Теперь включите брандмауэр:

sudo ufw enable

Нажмите y, если вы видите сообщение «Command may disrupt existing ssh connections».

Если брандмауэр был активирован правильно, вы должны увидеть сообщение «Брандмауэр активен и включен при запуске системы»​.

Вы также можете проверить текущее состояние брандмауэра с помощью:

sudo ufw status

Ниже мы видим, что брандмауэр активен и имеет два правила для каждой службы. v6 это сокращение от IPv6.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Apache Full                ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Apache Full (v6)           ALLOW       Anywhere (v6)

Тестовый Apache

Чтобы узнать, правильно ли установлен Apache на Ubuntu 20.04, мы можем проверить текущее состояние службы:

sudo service apache2 status

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

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

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 Sat 2020-03-31 08:44:04 CEST; 15min ago
Main PID: 5727 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
├─5727 /usr/sbin/apache2 -k start
├─5728 /usr/sbin/apache2 -k start
└─5729 /usr/sbin/apache2 -k start

Mar 31 08:44:04 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...
Mar 31 08:44:04 ubuntu2004 apachectl[5675]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1.
Mar 31 08:44:04 ubuntu2004 systemd[1]: Started The Apache HTTP Server.

Возможно, вам придется нажать кнопку q для выхода из проверки состояния сервера при использовании SSH-клиента.

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

Введите IP-адрес вашего сервера в адресную строку и нажмите ENTER.

apache2

Все готово! Вы можете найти страницу приветствия Apache в папке /var/www/html. Чтобы отредактировать этот файл, необходимо ввести:

sudo nano /var/www/html/index.html

Нажмите CTRL+X, чтобы выйти из текстового редактора nano.

Если у вас есть доменное имя, вы можете указать его в IP-адресе вашего сервера без дальнейшей настройки, так как Apache должен загрузить эту страницу по умолчанию. Но если вы хотите разместить несколько доменов на своем сервере или настроить SSL-сертификаты с помощью Let's Encrypt, вам следует настроить виртуальный хост (инструкция будет в конце этого руководства).

Установка MySQL

Следующий компонент вашего стека LAMP на Ubuntu 20.04 – MySQL.

Начните с обновления репозиториев и установки пакета MySQL. Нажмите y и ENTER при появлении запроса на установку.

sudo apt update && sudo apt install mysql-server

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

sudo service mysql status

При запуске вы увидите зеленый активный статус:

mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-04-02 02:40:59 CEST; 2min 47s ago
   Main PID: 18476 (mysqld)
     Status: "Server is operational"
      Tasks: 27 (limit: 4915)
     CGroup: /system.slice/mysql.service
             └─18476 /usr/sbin/mysqld

Apr 02 02:40:59 ubuntu2004 systemd[1]: Starting MySQL Community Server...
Apr 02 02:40:59 ubuntu2004 systemd[1]: Started MySQL Community Server.

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

Настройка безопасности MySQL

Теперь вы должны запустить mysql_secure_installation, чтобы настроить безопасность для вашего сервера MySQL на Ubuntu 20.04.

sudo mysql_secure_installation

Компонент проверки пароля (необязательно)

Вас спросят, хотите ли вы настроить плагин проверки пароля. Если вы по какой-то причине не хотите применять строгую политику паролей, эта настройка не нужна.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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:

Нажмите ENTER, если не хотите настраивать плагин проверки пароля.

Создать пароль root

Если вы еще не создали пароль root для MySQL, вы должны создать его сейчас.

Please set the password for root here.

New password:

Re-enter new password:

Создайте надежный пароль и введите его. Обратите внимание, что при вводе паролей в Linux ничего не отображается (никаких звездочек или точек тоже не будет).

Удаление анонимных пользователей

Далее вам будет предложено удалить анонимных пользователей.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

Нажмите y и ENTER, чтобы удалить анонимных пользователей.

Отключить удаленный корневой вход в систему

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

Нажмите y и ENTER, чтобы удаленно запретить вход в систему root.

Удалить тестовую базу данных

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

Нажмите y и ENTER, чтобы удалить тестовую базу данных.

Перезагрузить таблицы привилегий

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

Нажмите y и ENTER, чтобы перезагрузить таблицы привилегий.

Все готово! Основная настройка MySQL завершена. 

Тестовый сервис MySQL

Компонент MySQL вашего стека LAMP на Ubuntu 20.04 готов к работе.

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

sudo mysql

Вы увидите подобную информацию:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

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 и нажмите ENTER.

exit

Вы успешно установили и настроили MySQL для вашего стека-«фонаря»​ на Ubuntu 20.04!

Установка PHP

Последним компонентом вашего стека LAMP на Ubuntu 20.04 является PHP.

Начните с обновления репозитория и установки пакета PHP. Мы также установим пакеты libapache2-mod-php и php-mysql, которые позволят PHP взаимодействовать с базой данных MySQL.

Нажмите y и ENTER при появлении запроса на установку пакета PHP.

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

Тест PHP в командной строке

После завершения установки пакета мы можем протестировать PHP в командной строке.

php -version

Если PHP установлен правильно, вы должны увидеть нечто подобное:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Видите? Тогда все отлично!

Тест PHP для Apache

Теперь давайте протестируем PHP для Apache.

Создайте новый файл с именем info.php в корневом каталоге документа.

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

После открытия редактора nano введите следующий PHP-код:

/var/www/html / info.РНР

<?php
phpinfo();

Нужно сохранить и выйти из документа (нажмите CTRL+XY и затем ENTER).

Теперь мы можем загрузить этот файл в браузере, перейдя по http://your_ip/info.php или http://example.com/info.php.

Ниже мы видим, что страница info.php работает правильно.

PHP 7 тестовая страница на Apache и Ubuntu 20.04

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

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

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

Установка стека LAMP на Ubuntu 20.04 завершена! Если вы хотите настроить виртуальные хосты или дополнительную конфигурацию для Apache, читайте далее.

Мало кто знает, но LAMP на VDS можно установить автоматически. Такую услугу предоставляет хостинг-провайдер Timeweb. Все просто:

  1. Выберите тариф VDS.
  2. Оплатите его.
  3. При настройке сервера отметьте Ubuntu 20.04 и стек LAMP.

Через пару минут ваш сервер будет полностью готов к работе! 

Настройка виртуального узла (необязательно)

Если вы хотите разместить несколько доменов на своем ламповом сервере Ubuntu 20.04 или настроить SSL-сертификаты с помощью Let's Encrypt, вам понадобится виртуальный хост.

Если у вас пока нет доменного имени, вы можете обмануть свою ОС (Linux/Mac/Windows), чтобы разрешить перенаправление домена на IP-адрес вашего сервера с Ubuntu 20.04. Подробнее об этом поговорим далее

Создать каталог и index.html

Создайте новый каталог /var/www/ для вашего домена (замените mydomain.com на собственный).

sudo mkdir -p /var/www/mydomain.com/public_html

Создайте index.html файл для тестирования:

sudo nano /var/www/mydomain.com/public_html/index.html

Введите следующее:

<html>
   <head>
     <title>Welcome!</title>
   </head>
   <body>
      <h1>Welcome to mydomain.com!</h2>
   </body>
</html>

Сохраняем изменения и выходим (нажмите CTRL+X, Y и затем ENTER).

Создание виртуального хоста

Чтобы создать файл конфигурации виртуального хоста, замените mydomain.com на собственный домен.

sudo nano /etc/apache2/sites-available/mydomain.com.conf

Введите замену mydomain.com:

<VirtualHost *:80>
    ServerAdmin webmaster@mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраняем и выходим (CTRL+X, Y и ENTER)

Проверим наличие ошибок:

apachectl configtest

Вы можете игнорировать любую ошибку, в которой присутствует подобное сообщение: «Не удалось надежно определить полное доменное имя сервера»​.

Включите замену виртуального хоста mydomain.com (снова нужно указать собственный домен):

sudo a2ensite mydomain.com.conf

Отключите Apache по умолчанию, иначе он переопределит ваш виртуальный хост:

sudo a2dissite 000-default

Далее надо перезапустить Apache.

sudo systemctl reload apache2

Тестовый виртуальный хост

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

Теперь вам нужно перейти в настройки DNS вашего регистратора домена и указать А-запись для домена на IP-адрес вашего сервера Ubuntu 20.04 с LAMP. Как только запись станет активной (обычно это занимает от 24 до 48 часов), вы сможете увидеть тестовую страницу в браузере.

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

Редактировать файл hosts (необязательно)

Если у вас нет ни одного зарегистрированного домена и вы просто хотите загрузить mydomain.com (или другой адрес) в вашем браузере в качестве теста, можно отредактировать файл hosts в операционной системе, чтобы перенаправить этот домен на ваш сервер Ubuntu 20.04 с LAMP.

Чтобы отредактировать файл hosts в Linux или Mac, запустите sudo nano /etc/hosts в терминале. Как только файлы hosts будут открыты, введите IP-адрес вашего сервера Ubuntu 20.04, а затем доменное имя, которое вы хотите разрешить для этого IP.

x.x.x.x mytest1.com

Замените x.x.x.x на IP-адрес вашего веб-сервера.

Узнать IP-адрес вашего сервера можно с помощью команды:

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

После сохранения файла hosts в браузере откроется доступ к вашему серверу по адресу mydomain.com (или иному URL).

Настройка Apache (необязательно)

Теперь, когда у вас есть Apache, обслуживающий веб-страницы на вашем Ubuntu 20.04, могут потребоваться дополнительные настройки конфигурации. 

Отключить список каталогов и включить AllowOverride

Apache по умолчанию будет перечислять содержимое ваших каталогов без индексов (index.html, index.РНР). Это угроза безопасности, поскольку она позволяет хакерам просматривать ваш веб-сервер в поисках сценариев.

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

Откройте файл конфигурации:

sudo nano /etc/apache2/apache2.conf

Нажмите CTRL + W и найдите <Directory /var/www/>.

Блок должен выглядеть примерно так:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Удалите Indexes, чтобы остановить список каталогов Apache, и измените AllowOverride None на AllowOverride All, чтобы включить .htaccess. Теперь это должно выглядеть так:

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Сохраняем и выходим (CTRL+X, Y, ENTER).

Далее перезапускаем Apache.

sudo systemctl restart apache2

Включить mod_rewrite

Если вы хотите настроить некоторые правила .htaccess, вам, скорее всего, придется включить mod_rewrite.

sudo a2enmod rewrite

Далее нужно перезапустить Apache.

sudo systemctl restart apache2

На этом полная установка и настройка стека LAMP завершена.

В скором времени ждите материал по установке phpMyAdmin. Всех с наступающим!

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email, который Вы использовали для входа на сайт.