57 Street

Установка и настройка LAMP (Linux, Apache, MariaDB, PHP) в Fedora

Где-то на заре этого сайта я писал о том, как устанавливать и настраивать LAMP в Ubuntu. Там установка всего этого хозяйства была плевым делом, но Fedora — это другое…

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

Установка Apache

Apache находится в пакете:

Теперь нужно его запустить и включить автостарт:

systemctl start httpd.service
systemctl enable httpd.service

Проверим работоспособность, набрав в браузере адрес localhost. В случае успеха вы увидите тестовую страницу Fedora, а в случае ошибки ничего не увидите.

Установка PHP

Интересующий нас пакет:

По зависимости был установлен пакет php-cli. Он позволяет запускать PHP-код в командной строке. С его помощью мы можем протестировать работу PHP, «не отходя от кассы». Открываем «Терминал», вводим и запускаем следующее:

php -r 'print(phpinfo());'

В ответ получим информацию о PHP, если, конечно, установка прошла успешно.

Установка MariaDB

Нужные пакеты:

phpMyAdmin — программа для администрирования БД. Запуск и автозагрузка MariaDB:

systemctl start mysqld.service
systemctl enable mysqld.service

Назначить новый пароль на root-аккаунт можно командой:

mysqladmin -u root password ваш-пароль

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

mysql_secure_installation

Настройка Apache. Использование виртуальных хостов, основанных на имени

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

Сначала необходимо сделать виртуальные хосты (адреса сайтов, если хотите), на которых будут работать будущие сайты. Хосты хранятся в файле /etc/hosts. Добавим в него пару строк приблизительно следующего содержания:

127.0.0.1 имя-вашего-сайта имя-другого-сайта

Теперь свяжем адреса и файлы, которые будут там работать. Для этого создадим файл /etc/httpd/conf.d/vhosts.conf (название может быть любым, а вот расширение — только conf). Добавим в него следующие строки:

NameVirtualHost 127.0.0.1:80
ServerName localhost
AddDefaultCharset utf-8
<VirtualHost 127.0.0.1:80
    DocumentRoot /любой-каталог/имя-вашего-сайта
    ServerName имя-вашего-сайта
</VirtualHost>
<VirtualHost 127.0.0.1:80
    DocumentRoot /любой-каталог/имя-другого-сайта
    ServerName имя-другого-сайта
</VirtualHost>

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

AddDefaultCharset — устанавливает кодировку по умолчанию. В нашем случае UTF-8 (везде и всегда надо использовать UTF-8).

VirtualHost — контейнер, в котором хранятся директивы для определенного IP-адреса или хоста. В нашем случае IP-адрес должен совпадать с тем, который указан в директиве NameVirtualHost.

DocumentRoot — каталог, файлы из которого сервер будет использовать при ответе на запрос. Там, например, могут быть файлы WordPress, Drupal либо ваши собственные скрипты.

ServerName — имя сервера. Должно соответствовать тому, которое записано в файле /etc/hosts.

Apache mod_rewrite

Мод работает «из коробки», но настройки сервера не позволяют использовать его прямо сейчас. Для исправления ситуации открываем и правим главный файл конфигурации Apache — /etc/httpd/conf/httpd.conf. Меняем:

<Directory />
    Require all denied
</Directory>

на:

<Directory />
    Require all granted
</Directory>

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

systemctl restart httpd.service

Политики SELinux

Хотя мы установили и настроили всё, работать ничего не будет. Дело в том, что Fedora использует SELinux — нечто вроде дополнительного контроля доступа. Раньше, начиная с этого места, был длинный текст с разными командами и описаниями, но проще выключить весь этот SELinux. Ничего страшного в этом нет.

Права на папку с нашим профилем

Это последнее действие, которое надо сделать. Изменим права с 700 на 711, чтобы Apache мог получить доступ к файлам, которые лежат в папке нашего профиля:

chmod 711 /home/имя-вашего-профиля

Вуаля! Легко и просто (сарказм).