Установка Apache и PHP на Centos 8

Установка Apache:

# yum install httpd

Установка модуля SSL:

# yum install mod_ssl

Установка MPM-ITK пакета (для разграничения по пользователям):

# yum install https://disweb.ru/files/rpm/httpd-itk-2.4.7.04-31.el8.x86_64.rpm

Открыть на редактирование /etc/sysconfig/httpd и добавить:

HTTPD=/usr/sbin/httpd.itk

Открыть файл /etc/httpd/conf.modules.d/00-mpm.conf и раскоментировать:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

и закомментировать:

# LoadModule mpm_event_module modules/mod_mpm_event.so

Открыть файл /etc/httpd/conf.modules.d/01-mpm-itk.conf и раскоментировать:

<IfModule mpm_prefork_module>
    LoadModule mpm_itk_module modules/mod_mpm_itk.so
</IfModule>

Открыть на редактирование /etc/httpd/conf/httpd.conf и добавить:

<IfModule itk.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

StartServers — устанавливает число дочерних процессов сервера при запуске;
MinSpareServers — задает минимальное число свободных процессов;
MaxSpareServers — устанавливает после скольки процессов лишние будут завершаться.;
ServerLimit — верхний предел установленного количества процессов;
MaxClients — максимальное количество соединений, которые будут обрабатываться одновременно;
MaxRequestsPerChild — лимит запросов дочернего процесса. После превышения процесс умирает.

Открыть файл /etc/httpd/conf.d/mod_deflate.conf  и добавить (Включение сжатия):

<filesMatch "\.(js|html|css|svg)$">
SetOutputFilter DEFLATE
</filesMatch>

AddOutputFilterByType DEFLATE text/html application/xhtml+xml text/plain text/xml text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent env=!dont-vary

Открыть порты 80 и 433:

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=443/tcp --permanent
# firewall-cmd --reload

Открыть файл /etc/httpd/conf/httpd.conf и привести данные параметры к такому виду (иначе возникает ошибка о невозможности прочитать файл):

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<Directory "/var/www/html">
	Options Indexes FollowSymLinks
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>

При включеном SELinux установить файлам chcon:

chcon -R unconfined_u:object_r:httpd_sys_content_t:s0 .

Добавить апач в автозагрузку и запустить:

# systemctl enable httpd.service
# systemctl start httpd.service

Установка репозитория EPEL:

# yum install epel-release

Установка репозитория REMI:

# yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Указать версию PHP для установки:

# yum module enable php:remi-7.4

Для PHP 7.3 необходим пакет libedit-devel:

# dnf --enablerepo=PowerTools install libedit-devel

Установка PHP:

# yum install php php-gd  php-mbstring php-mysql php-pdo php-xml php-process php-mcrypt php-pear php-opcache php-ldap php-intl php-soap php-imap php-devel php-bcmath php-pecl-zip

Открыть файл /etc/php.ini и привети параметры к данным:

date.timezone = "Europe/Moscow"
short_open_tag = On
upload_max_filesize = 128M // Максимальный размер загружаемого файла
post_max_size = 128M // Максимальный размер POST
max_input_vars = 1000000
session.gc_maxlifetime = 86400
memory_limit = // ОЗУ

Открыть файл /etc/httpd/conf.modules.d/10-php.conf и привести к такому виду:

<IfModule prefork.c>
  LoadModule php7_module modules/libphp7.so
</IfModule>

<IfModule !prefork.c>
  LoadModule php7_module modules/libphp7-zts.so
</IfModule>

Пример конфигурации /etc/httpd/conf/httpd.conf:

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf

User apache
Group apache

ServerAdmin support@hoverhost.ru

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

DocumentRoot "/var/www/html"

<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
	Order allow,deny
	Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
	
    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on

IncludeOptional conf.d/*.conf

<IfModule itk.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

#IncludeOptional conf.domains/*.conf