Установка 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