Шаг 1. Обновление пакетов программного обеспечения
Для начала по традиции подготовим ОC к установки. Обновим систему:
dnf -y update
а. После настроим межсетевой экран, установка Apache не изменяет правила брандмауэра, поэтому мы должны сделать это вручную.
Чтобы разрешить трафик через 80 порт, выполните su и выполните команду:
firewall-cmd --permanent --zone=public --add-service=http
б. Вы также можете разрешить HTTPS-трафик через порт 443 с помощью команды:
firewall-cmd --permanent --zone=public --add-service=https
Опция —permanent сделает это правило брандмауэра постоянным и переживает перезагрузку системы.
Затем перезагрузите демон брандмауэра, чтобы изменения вступили в силу.
systemctl reload firewalld
Пока всё, идём дальше.
2) Установим Apache Web Server в CentOS 8
dnf -y install httpd httpd-tools
После установки запустим Apache:
systemctl start httpd
Проверим запустился ли он:
systemctl status httpd
[root@localhost ~]# systemctl status httpd
ВЫХЛОП:
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-04-23 11:44:28 +05; 7s ago
Docs: man:httpd.service(8)
Main PID: 6298 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 23711)
Memory: 29.3M
CGroup: /system.slice/httpd.service
├─6298 /usr/sbin/httpd -DFOREGROUND
├─6299 /usr/sbin/httpd -DFOREGROUND
├─6300 /usr/sbin/httpd -DFOREGROUND
├─6301 /usr/sbin/httpd -DFOREGROUND
└─6302 /usr/sbin/httpd -DFOREGROUND
Apr 23 11:44:28 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Apr 23 11:44:28 localhost.localdomain httpd[6298]: AH00558: httpd: Could not reliably determine the server's fully qual>
Apr 23 11:44:28 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Apr 23 11:44:28 localhost.localdomain httpd[6298]: Server configured, listening on: port 80
Если всё в порядки и запуск произошел без ошибок то добавим Apache в автозагрузку,
это нужно чтоб после перезагрузки ос, нам не пришлось запускать Apache вручную:
systemctl enable httpd
(выхлоп команды)
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Чтобы проверить правильность работы веб-сервера Apache, мы создадим файл index.html. В корневом каталоге документов, по умолчанию (/var/www/html/), с помощью текстового редактора nano следующей командой :
nano /var/www/html/test.html
Скопируем и вставим текст написанный ниже:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Apache test</title>
</head>
<body>
<div style="display: flex; flex-flow: row wrap; justify-content: center; align-items: center; height: 90vh;">
<h1>Апач работает! Мир привет тебе!!!</h1>
</div>
</body>
</html>
После сохраните и выйдите (ctrl+o, ctrl+x).
Открываем браузер и:
а. вводим ip сервера если вы работаете удаленно (ip a | grep -w inet | awk ‘{ print $2}’)
б. или в браузере ОС если вы работаете локально (loclahost или 127.0.0.1)
Теперь веб-страница Apache доступна публично. Наконец, нам нужно сделать пользователя apache владельцем веб-каталога. По умолчанию он принадлежит пользователю root.
chown -R apache:apache /var/www/html/
Изменим контекст безопасности файла SELinux:
chcon -t httpd_sys_rw_content_t /var/www/html/ -R
3) Установим MariaDB Database Server on CentOS 8
Есть два способа установки:
а. Стандартный репозиторий стабильной* ветки:
dnf install mariadb-server mariadb -y
б. Последняя стабильно-рабочая* версия:
Установка MariaDB в CentOS8/RHEL 8
После установки запустим БД:
systemctl start mariadb
Проверим запустилась ли наша БД:
systemctl status mariadb
Если всё прошло без ошибок то добавим в сервис в автозагрузку:
systemctl enable mariadb
Теперь нам нужно запустить скрипт безопасности:
mysql_secure_installation
Укажем root пароль для Mariadb, удалим тестовые таблицы и запретим root доступ к Mariadb.
Теперь вы можете выполнить следующую команду и ввести корневой пароль MariaDB для входа в оболочку MariaDB. (проверка работы БД и пароля):
mysql -u root -p
Здесь предполагается что будем использовать phpMyAdmin в качестве веб-интерфейса.
а. Создадим базу данных phpMyAdmin вводим команду:
create database phpmyadmin;
Создаём пользователя базы данных phpMyAdmin и укажем пароль для него:
create user phpmyadmin@localhost identified by 'StrongP@33#';
Привяжем пользователя к базе:
grant all on phpmyadmin.* to phpmyadmin@localhost;
И предоставляем ему все права на это базу данных:
flush privileges;
б. Создадим базу данных pma вводим команду (это нужно для корректной работы phpMyAdmin):
create database pma;
Создаём пользователя базы данных pma:
create user pma@localhost identified by 'StrongP@33#';
Привяжем пользователя к базе:
grant all on pma.* to pma@localhost;
И предоставляем ему все права на это базу данных:
flush privileges;
Выйдите из базы данных:
quit
Шаг 4: Установите PHP на CentOS 8
а. Установите PHP из стандартного репозитория версии 7,2 и некоторые распространенные модули, используя следующую команду:
dnf -y install php php-pecl-apcu php-mysqlnd php-mbstring php-opcache php-common php-xml php-gd php-cli php-pear php-fpm
б. Для того что бы изменить версию на последнюю или необходимую для вашего проекта воспользуйтесь руководством:
Как установить PHP 8 на CentOS/RHEL 8
Веб-сервер Apache на CentOS 8 по умолчанию использует PHP-FPM вместо mod_php для запуска кода PHP, поэтому в приведенной выше команде мы также установили php-fpm. После того, как он установлен, нам нужно его запустить:
systemctl start php-fpm
Проверяем запуск:
systemctl status php-fpm
Если всё запустилось без ошибок добавляем в автозагрузку:
systemctl enable php-fpm
(выхлоп)
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
«Включен» означает, что автоматический запуск во время загрузки включен, и мы видим, что PHP-FPM работает. php-fpm пакет устанавливает php.conf файл в /etc/httpd/conf.d/каталоге, поэтому нам необходимо перезапустить Apache, для запуска PHP-кода:
systemctl restart httpd
Шаг 5: Тестирование PHP
Чтобы протестировать PHP-FPM с веб-сервером Apache, нам нужно создать test.php файл в корневом каталоге.
Давайте создадим его проверим работу:
nano /var/www/html/test.php
В открывшемся окне пропишем ниже следующие:
<?php phpinfo(); ?>
После сохраните и выйдите (ctrl+o, ctrl+x).
Проверка:
http://IP-server/test.php
После удаляем проверочный файл (это надо сделать обязательно):
rm /var/www/html/test.php
На этом установка закончена!
Как просмотреть файлы журнала для моего сервера Apache. Используйте команду cat или tail как показано ниже для журналов Apache/httpd на CentOS 8:
ls -l /var/log/httpd/
sudo tail -f /var/log/httpd/access_log
sudo grep 'foo' /var/log/httpd/error_log
Как мне настроить HTTPD дальше?
Все конфигурационные файлы Apache:
/etc/httpd/ — Главный каталог конфигурации Apache
/etc/httpd/conf/httpd.conf — Основной файл конфигурации Apache.
Вы можете редактировать этот файл с помощью команды:
sudo nano /etc/httpd/conf/httpd.conf
/var/log/httpd/ — ошибки Apache и доступ к файлам журнала
/etc/httpd/conf.modules.d — Apache модули (такие как прокси, PHP и многое другое) каталог конфигурации
Вывод
Это все. Вы успешно настроили сервер LAMP на CentOS 8. В следующий раз вы узнаете о защите сервера Apache с использованием TLS / SSL.
