Установка LAMP (Linux, Apache, MySQL, PHP)

Сервер Mint (но так же должно работать и на Ubuntu, Debian)

Установка Apache

через консоль

sudo apt install apache2

Устанавливается хорошо, только если у вас не стояли до этого XAMPP, MAMP и прочее. Они забивают порт 80, поэтому их необходимо выгрузить из памяти. Для этого можно найти их PID lsof -i :80   и убить процесс kill 9999 , где 9999 — номер процесса, найденного при вызове lsof

Если уже установили, а Apache так и не запустился, можно переустановить:

sudo apt install —reinstall apache2

Тестируем Apache

Открываем http://localhost вы должны увидеть стандартную страницу apache2-default с фразой ‘It works!»

Устанавливаем PHP

Заходим в консоль опять и оттуда:

sudo apt install php libapache2-mod-php

Установит последнюю версию php

Затем перезагрузим Apache

sudo systemctl restart apache2

Тестируем PHP

Создадим файл в /var/www/html/test.php

sudo gedit /var/www/html/test.php

и напишем там

<?php phpinfo();

Сохранить закроем. Зайдем теперь по адресу http://localhost/test.php

и вы должны увидеть страницу, на которой логотип PHP и все служебные параметры и настройки php

Установка MySQL

sudo apt install mysql-server

хоть и mint спрашивает пароль при установке mysql, иногда этого не случается, поэтому теперь нужно сменить пароль. Для этого можно запустить mysql от root

sudo mysql

и в mysql уже сменить пароль (тут описано как)

коротко оттуда:

mysql> use mysql;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root';
mysql> set password for 'root'@'localhost'='root';

Устанавливаем phpmyadmin

В силу того, что phpmyadmin является наиболее уязвимым и наиболее атакуемым приложением, поэтому не стоит открывать phpmyadmin в сеть
sudo apt install phpmyadmin php-mbstring php-gettext
В процессе установки будет задано несколько вопросов по конфигурации.
ОБЯЗАТЕЛЬНО Отметьте APACHE2, изначально он подсвечен, но не выбран. Иначе все пойдет не так.
  • При выборе сервера, выберите apache2
  • Ответьте yes на вопрос, хотите ли вы использовать dbconfig-common для настройки базы данных
  • Будет запрошен пароль администратора базы данных
  • Далее будет предложено ввести и повторить пароль для самого phpMyAdmin
Далее в директорию /etc/apache2/conf-enabled будет добавлен файл конфигурации phpMyAdmin для Apache
теперь нам осталось включить расширения PHP mcrypt и  mbstring, для этого
sudo phpenmod mcrypt
sudo phpenmod mbstring
Перезапустим Apache
sudo systemctl restart apache2

Зайдем теперь в веб-интерфейс phpMyAdmin

http://localhost/phpmyadmin
теперь можно через интерфейс зайти от root с паролем, указанным ранее и желательно добавить пользователя (пользователей)

Настройка Apache для разрешения использования .htaccess

Сначала включим возможность использования файла .htaccess в конфигурационном файле Apache.

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Добавим директиву AllowOverride All в секцию <Directory /usr/share/phpmyadmin>

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

Сохраняем и перезапускаем Apache

sudo systemctl restart apache2

Добавляем виртуальные хосты (virtual-hosts)

Заходим в /etc/apache2/sites-available/example.com.conf (можно для начала скопировать его из папки /etc/apache2/sites-available/ или /etc/apache2/sites-enabled)

Открываем новый файл с root правами, будет что-то типа:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Таких можно создать несколько. Подключим доступные сайты:

sudo a2ensite example.com.conf

 

и перезагрузим Apache

sudo service apache2 restart

Модуль mod_rewrite

Если возникает ошибка с правилами в htaccess, то это скорей всего не работает (или не подключен) модуль mod_rewrite

sudo a2enmod rewrite

и перезапускаем опять Apache

Создаем файл .htaccess

Теперь когда мы разрешили использовать htaccess, необходимо создать этот файл

sudo nano /usr/share/phpmyadmin/.htaccess

Запишем туда следующее

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Введённые нами строки означают следующее:

  • AuthType Basic: Эта строка задаёт тип авторизации. Указанный тип (Basic) означает, что авторизация будет осуществляться на основе пароля и файла пароля.
  • AuthName: Эта строка задаёт текст приветствия в диалоге авторизации. Используйте общие слова и фразы в этой строке, чтобы злоумышленникам было сложнее определить, что за система скрывается за диалогом авторизации.
  • AuthUserFile: Эта строка задаёт адрес файла пароля, который используется для авторизации. Файл должен находиться в недоступной для внешнего мира директории. Чуть далее мы создадим этот файл.
  • Require valid-user: Эта строка означает, что только аутентифицированные пользователи могут осуществлять доступ к защищаемой системе.

После ввода указанных строк, сохраните и закройте файл.

Создание файла пароля .htpasswd для аутентификации

Теперь, когда мы задали путь для нашего файла пароля в директиве AuthUserFile в нашем файле .htaccess, нам необходимо создать этот файл.

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

sudo apt-get install apache2-utils

Теперь нам доступна утилита htpasswd.

Указанный нами ранее путь выглядел следующим образом: /etc/phpmyadmin/.htpasswd. Создадим этот файл и добавим в него первого пользователя следующей командой:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd 

Вам будет предложено выбрать и подтвердить пароль для созданного пользователя. После этого файл будет создан и в него будет добавлен хэш указанного вами пароля.

Для добавления нового пользователя выполните следующую команду без флага -c:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Теперь, когда вы настроили доступ к поддиректории phpMyAdmin, при попытке входа в phpMyAdmin вам будет предложено ввести логин и пароль пользователя:

https://доменное_имя_или_IP_адрес/phpmyadmin

Вход в phpMyAdmin на настроенной базовой авторизацией

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

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.