LAMP - это самый популярный стек программного обеспечения для работы веб-сервера. Сюда входят такие программы, как Apache, PHP, MySQL, и работает всё это в Linux, отсюда и такое название. Apache - это самый популярный веб-сервер, может, он не такой производительный, как Nginx, зато очень прост в настройке. PHP - самый популярный язык программирования для веб, а без базы данных вообще сейчас мало что работает.
В этой статье мы рассмотрим, как выполняется Установка LAMP Ubuntu 18.04 несколькими способами: с помощью утилиты tasksel или вручную с помощью установщика программ.
Содержание статьи
Установка LAMP в Ubuntu
1. Установка пакетов с помощью tasksel
Tasksel - это утилита, которая позволяет устанавливать пакеты различных программ буквально в одну команду. Она разработана для Debian, но может использоваться и в Ubuntu. Для её установки выполните в терминале:
sudo apt install tasksel
Затем, чтобы установить Lamp на Ubuntu, достаточно выполнить такую команду:
sudo tasksel install lamp-server
Установка займёт кое-какое время, потому что утилите придётся скачать и настроить все пакеты, но потом вы получите полностью работающий стек LAMP.
Обратите внимание, что десктопной версии Ubuntu tasksel использовать не желательно. LAMP установится нормально, но при попытке его удаления командой tasksel remove из-за бага утилита может снести вам всю систему. Пользователи сообщают о проблемах с этой утилитой в версии Ubuntu для рабочего стола.
2. Как установить Lamp в Ubuntu вручную
Если вы не хотите использовать tasksel, вы можете установить все пакеты по отдельности и настроить их для совместной работы. Сначала установим все необходимые пакеты. Установка последней версии Apache2 из репозиториев:
sudo apt install apache2
Установка базы данных MariaDB из репозиториев:
sudo apt install mariadb-server
Или вы можете установить MySQL:
sudo apt install mysql-server
Установка интерпретатора языка программирования PHP 7.2 и расширений, необходимых для его работы с Apache и MySQL:
sudo apt install php7.2 libapache2-mod-php7.2 php-mysql
Установка дополнительных расширений для PHP, которые вам понадобятся в будущем для хостинга большинства популярных проектов:
sudo apt install php-curl php-json php-cgi php-gd php-zip php-mbstring php-xml php-xmlrpc
3. Настройка брандмауэра
По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:
sudo ufw allow in 80/tcp
4. Проверка работы LAMP
Для проверки наберите в адресной строке браузера IP-адрес сервера, куда вы устанавливали LAMP, у меня это localhost:
Работает, теперь давайте проверим, правильно ли работает PHP. Создайте файл в директории /var/www/html со следующим содержимым:
sudo vi /var/www/html/phpinfo.php
Затем откройте адрес localhost/phpinfo.php. Если всё работает, вы должны увидеть такую страничку:
Также можно проверить, работает ли MySQL: если расширение PHP для MySQL загрузилось, то на странице phpinfo будет размещена такая информация:
Готово, дальше идёт в основном настройка LAMP в Ubuntu 18.04.
5. Настройка Apache
Для обработки запросов будет использоваться модуль mpm_prefork, так как он совместим с большинством систем. Поэтому его нужно активировать, а mpm_event и mpm_worker отключить:
sudo a2dismod mpm_event
sudo a2dismod mpm_worker
sudo a2enmod mpm_prefork
Включаем mod_rewrite, который сейчас используется практически везде:
sudo a2enmod rewrite
Если вы хотите использовать файлы httaccess для настроек, то необходимо в файле /etc/apache2/apache2.conf изменить значение AllowOverride с None на All для нужных местоположений, например, для /var/www:
sudo vi /etc/apache2/apache2.conf
Далее необходимо перезапустить Apache:
sudo systemctl restart apache2
Подробнее про настройку веб-сервера читайте в отдельной статье установка и настройка Apache.
6. Настройка PHP
По умолчанию короткие теги, обрамляющие скрипты PHP, отключены. Это может привести к тому, что некоторые скрипты, использующие эти теги, могут не выполнятся. Для включения этой возможности откройте файл:
sudo vi /etc/php/7.2/apache2/php.ini
Найдите short_open_tag = Off и замените на:
Вывод ошибок в PHP по умолчанию тоже отключён. Если вы хотите разрабатывать программы на этом сервере, то вам необходимо включить ошибки, иначе вместо ошибок вы будете видеть пустой экран. Для этого найдите эти строки и приведите их к такому виду:
Или для записи ошибок в файл вы можете добавить такую строку:
После внесения всех изменений необходимо перезапустить Apache:
sudo systemctl restart apache2
Подробнее про настройку файла php.ini смотрите здесь.
7. Настройка MySQL
По умолчанию MySQL не очень хорошо настроена в плане безопасности. Нам нужно задать пароль суперпользователя и удалить гостевой доступ. Для выполнения всех этих задач запустите в терминале:
sudo mysql_secure_installation
На первом этапе утилита попросит вас ввести пароль суперпользователя, так как он ещё не задан, просто нажмите Enter:
Далее введите новый пароль:
Во всех следующих вопросах нужно отвечать утвердительно:
- Запретить удалённый вход для root;
- Запретить гостевой вход;
- Удалить временные таблицы;
- Обновить таблицы привилегий.
Готово, теперь ваша база данных защищена и готова к работе.
8. Удаление LAMP в Ubuntu
Чтобы полностью удалить LAMP из системы, достаточно удалить все пакеты, которые вы установили ранее:
sudo apt purge apache2 mariadb-server php7.2 libapache2-mod-php7.2 php-mysql php-curl php-json php-cgi php-gd php-zip php-mbstring php-xml php-xmlrpc
Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.
Если установка LAMP на Ubuntu выполнялась с помощью tasksel, то для удаления необходимо выполнить:
sudo tasksel uninstall lamp-server
Выводы
В этой статье мы разобрали, как выполняется установка Apache, PHP, MySQL на Ubuntu 18.04. Как видите, это не очень сложно и с такой задачей может справиться даже новичок, если немного попрактикуется на виртуальной машине. Фактически, уже после шага 3 установка Lamp Ubuntu 18.04 практически завершена, и уже можно работать, а дальше идёт только настройка LAMP. Если у вас остались вопросы, спрашивайте в комментариях!
А почему php 7.2, если последний стабильный релиз - 7.3?
В Репозитории php 7.2, можно поставить 7.3 из PPA.
Я попытался установить php таким образом, но сайт просто не включается через localhost
выводы? удаляю этот сайт, за ненадобностью, из избранного и закладок - НАПРОЧ
А Вы все сайты уведомляете в случае их бесполезности, конкретно для Вас?
Пользователь безполезен для этого сайта , как и для других 🙂
но , за самоустранение + 🙂
Вот не пойму... Сайт уже был у вас в закладках, вы им попользовались - теперь удаляете, потому как все получилось и заработало - ТО ЕСТЬ вы таким образом сказали автору СПАСИБО?...
А можете описать преимущества apache перед nginx. И MariaDB перед MySQL?
> short_open_tag = On
PSR - слышали?
Одним движением руки:
sudo apt install lamp-server^
А что на счет phpMyAdmin? Без нее как-то не комфортно)
Создал файл phpinfo.php но, к сожалению, не в директории /var/www/html/, как написано в статье, а в домашней. Попытался скопировать его в необходимую директорию, и мне этого не удается. Ошибка номер 13. Права у меня Root-а, но не получается. Что не так, как победить эту проблему? Спасибо.
Чем копируете?
Копировал MC
Я не пользуюсь mc, поэтому без понятия что означает эта ошибка. Попробуйте копировать утилитой cp:
sudo cp откуда куда
, и потом не забудьте дать правильные права этому файлу.Спасибо, все получилось!
sudo mc запускай, и будет тебе счастье
Уважаемый ADMIN, спасибо за ответ. Простите за возможную назойливость, но сразу спрошу, как и какие дать правильные права файлу. Благодарю.
Главное чтобы владельцем файла был тот же пользователь, от имени которого запущен веб-сервер. Обычно, это www-data.
подскажите пожалуйста. когда я пытаюсь проверить работу apache ( localhost в адресной строке), мне пишет error establishing a database connection. вроде все по инструкции ставил... mysql и php работают.буду благодарен за совет
Ваш скрипт не может подключится к базе данных. Проверьте запущена ли она, а также правильно ли указаны данные доступа (хост, имя пользователя и пароль).
сделайте пожалуйста для линукс минт 19 статью
Там все аналогично, Linux Mint это та же Ubuntu.
Здравствуйте. Действовал строго как описано в статье. Проверка апача все показала нормально. А вот проверка php выдает Not Found
The requested URL /phpinfo.php was not found on this server.
Apache/2.4.29 (Ubuntu) Server at localhost Port 80
Файл phpinfo.php создал в директории /var/www/html.
В чем может быть проблема?
Привет, ребята, читаю ваш сайт уже года два. Статьи очень интересные и полезные.
В этом тексте, по-видимому, опечатка: не npm_prefork, а mpm_prefork
Исправил.
Команда `tasksel remove lamp-server` = переустановка Ubuntu. Эта команда вместе с lamp сносит половину системы и установленных программ. Здесь народ жалуется - https://raboj.su/%D0%B1%D0%BB%D0%BE%D0%B3/ubuntu/98-tasksel-kill-ubuntu-18-04.html, а я вчера влипла.
Добавил информацию в статью.
Добрый день!
Пожалуй стоит поднять эту информацию повыше в статью, перед командой установки. Тоже влип ))
Уже собирался установить по инструкции, как прочел: "...если немного попрактикуется на виртуальной машине".
Несерьезное отношение к статьям.
Для удаления если устанавливали через tasksel
sudo tasksel remove lamp-server
отличное средство чтобы лишиться волос
Спасибо, всё получилось и работает.
Благодарю за проделанную работу.
Сделайте пожалуйста пост о связке nginx+apache2
Спасибо!
забудте про phpMyAdmin это лучше: https://www.adminer.org/
Спасибо огромное за кучу сэкономленных нервов и времени! Отличный гайд!
ЛУЧШЕЕ руководство который я видел. Кому что не нравиться, как говорят у на в Украине: поцілуйте себе в носик:)))
Автору спасибо!!!
Добрый день, в пункте 7 столкнулся с такой проблемой:
Я ввел команду как в инструкции и вместо пароля нажал enter в результате выводит ошибку, я попробовал поискать решение в интернете, но к сожаление все используемые мною методы не помогли.
dmitry@dmitry-System-Product-Name:~$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Enter current password for root (enter for none):
Aborting!
Добавьте возможность удалять комментарии.
Короче говоря я переустановил ubuntu с 19.10 на 18 lts и все заработало
Спасибо огромное авторам за подробную статью. У меня есть такое правило если сайт мне был полезен я отключаю блокировщик рекламы и перехожу рекламе (-мам)
Привет когда первый раз ввожу команду sudo mysql_secure_installation
нажимаю Enter как в инструкции, второй раз entert мне не предлогает вввести новый пароль а выскакивает такая ошибка:( C чем она связана Ubuntu server 18.04
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")