- Introduction
- Общая настройка системы
- Время
- Настройка безопасности
- Установите PHP 7. 4 на CentOS 7
- Шаг 2. Добавьте репозиторий EPEL и REMI.
- Шаг 3. Установка PHP 7. 4 на CentOS 7.
- Шаг 4. Протестируйте установку PHP.
- Установка PHP 8 на CentOS 7
- Шаг 2. Установка PHP 8 на CentOS 7.
- Шаг 3. Установка расширений PHP 8.
- Шаг 4. Протестируйте PHP.
- Choose PHP Version to Install
- Enable Additional Software Repositories
- Enable Repository For PHP Version
- Install PHP and its Dependencies
- PHP Modules
- Додать EPEL и REMI репозиторий
- Установка MariaDB
- Как установить Apache на CentOS 7
- Установка и настройка FTP-сервера
- Установка phpMyAdmin
- Step 1 — Install Apache
- Создание первого сайта
- Step 2 — Install MySQL (MariaDB)
- Настройка apache
- Подключение новой версии PHP к httpd
- Настройка виртуальных доменов
- Создание тестового сайта и проверка настроек
- Установка MariaDB или MySQL
- PHP + MariaDB (MySQL)
- Verify PHP Version
- Postfix
- Установка PHP и PHP-FPM
- Настройка связки NGINX + PHP
- Установка Memcached
- Сервис memcached
- Модуль для php
- Step 3 — Install PHP
- Install PHP Modules
- Apache (httpd)
- NGINX + Apache
- Apache Real IP
- Установка xCache
- Prerequisites
- Установка еще одной версии PHP
- Ошибки установки и их устранение
- Ошибки зависимостей
- Индивидуальные ошибки
- Тюнинг веб-сервера
- Step 4 — Test PHP Processing on your Web Server
- Установка NGINX
- Conclusion
Introduction
A «LAMP» stack is a group of open source software that is typically installed together to enable a server to host dynamic websites and web apps. This term is actually an acronym which represents the Linux operating system, with the Apache web server. The site data is stored in a MySQL database (using MariaDB), and dynamic content is processed by PHP.
First of all we need to know that LAMP means:
- Linux: the exploitation system
- Apache: the web server
- MariaDB: the server’s database (Fork of MySQL)
- PHP: the script language
Using a LAMP we can set up a web server, hosting a dynamic site written in PHP, searching the data in a MariaDB database.
Тематические термины: PHP, Apache, CentOS, веб-сервер.
В большинстве случаев, для индивидуального использования веб-сервера, достаточно одной версии PHP. Но на хостингах или при ведении нескольких проектов, написанных на разных версиях PHP, необходимо, чтобы виртуальные домены сервера могли поддерживать разные версии интерпретатора.
В данной инструкции рассмотрена настройка на примере веб-сервера Apache, работающего на операционной системе Linux CentOS 7. Подразумевается, что сам веб сервер настроен, например, по статье Как настроить полноценный веб-сервер на CentOS. После конфигурирования у нас будет две версии php на одном сервере Apache.
Добавление новой версии PHP
Настройка веб-сервера
Подключение php
Настройка виртуальных доменов
Тестирование
php_value в .htaccess
В этой статье мы расскажем, как происходит настройка и установка Apache на CentOS 7, как установить PHP и базы данных MariaDB на Apache.
Важным элементом интернет-системы является web-сервер. Он передаёт данные от физического сервера, где лежат все файлы сайта, на компьютер пользователя. Пользователь вводит в браузере доменное имя сайта, веб-сервер мчится за файлами этого сайта и затем передаёт их пользователю. Таким образом с помощью веб-сервера конечный потребитель получает контент.
Apache ― это программное обеспечение с открытым исходным кодом для создания веб-сервера, разработанное для UNIX (например, Linux) и Windows.
Облачные серверы нового поколения
Виртуализация KVM, почасовая оплата, резервные копии, готовые шаблоны, 10 доступных ОС на выбор!
Общая настройка системы
1. Обновляем CentOS:
2. Устанавливаем репозиторий EPEL и пакет для загрузки:
yum install epel-release wget
Время
1. Устанавливаем часовой пояс:
timedatectl set-timezone Europe/Moscow
* данной командой мы установим часовой пояс по московскому времени.
2. Устанавливаем и запускаем службу для автоматической синхронизации времени:
yum install chrony
systemctl enable chronyd —now
Настройка безопасности
1. Отключаем SELinux:
sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config
* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.
2. Открываем необходимые порты в брандмауэре:
* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.
Недорогой хостинг для сайтов
В этом руководстве мы покажем вам, как установить и настроить PHP 7.4 на CentOS 7. Для тех из вас, кто не знал, PHP (PHP: препроцессор гипертекста) — это язык сценариев на стороне сервера, предназначенный для веб-разработки, но также используется как язык программирования общего назначения. Код PHP интерпретируется веб-сервером с модулем процессора PHP, который генерирует результирующую веб-страницу: команды PHP могут быть встроены непосредственно в исходный документ HTML, а не вызывать внешний файл для обработки данных.
В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста. Я покажу вам пошаговую установку PHP 7.4 на сервере CentOS 7 Linux.
Установите PHP 7. 4 на CentOS 7
sudo yum -y update
sudo yum -y install yum-utils
Шаг 2. Добавьте репозиторий EPEL и REMI.
Выполните следующие команды, чтобы добавить необходимые репозитории:
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Шаг 3. Установка PHP 7. 4 на CentOS 7.
Выполните следующую команду, чтобы включить репозиторий PHP 7.4 Remi:
sudo yum-config-manager —enable remi-php74
Затем установите PHP 7.4 на CentOS 7, используя следующую команду:
sudo yum update
sudo yum install php php-cli
Вам также может потребоваться установить дополнительные модули PHP в зависимости от требований вашего приложения. Используйте следующую команду для установки дополнительных пакетов:
sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
Чтобы проверить версию PHP, используйте следующую команду:
Чтобы просмотреть включенные модули, запустите:
Шаг 4. Протестируйте установку PHP.
Для проверки функциональности PHP создайте файл следующего содержания:
Затем откройте в веб-браузере:
Поздравляю! Вы успешно установили PHP 7 . Благодарим за использование этого руководства для установки PHP 7.4 в вашей системе CentOS 7. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт PHP .
В этом руководстве мы покажем вам, как установить PHP 8 на CentOS 7. Для тех из вас, кто не знал, PHP является наиболее часто используемым языком сценариев для веб-разработки, как для веб-сайтов, так и для веб-приложений, таких как блоги, форумы и т. Д. -коммерция и др. Первоначально он был создан Расмусом Лердорфом в 1994 году.
В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ ‘ к командам для получения привилегий root. Я покажу вам пошаговую установку PHP 8 на CentOS 7.
Установка PHP 8 на CentOS 7
sudo clean all
sudo yum update
sudo yum install yum-utils
Шаг 2. Установка PHP 8 на CentOS 7.
Теперь мы добавляем репозиторий EPEL и REMI для установки PHP 8 в системе CentOS 7 Linux:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
После этого включите поток модуля для PHP 8:
sudo yum-config-manager —disable ‘remi-php*’
sudo yum-config-manager —enable remi-php80
sudo yum update
Наконец, выполните следующую команду, чтобы установить PHP 8:
После успешной установки вы можете убедиться, что в вашей системе установлена последняя стабильная версия PHP 8, используя команду:
$ php -v
Шаг 3. Установка расширений PHP 8.
Установить расширения PHP просто со следующим синтаксисом:
sudo yum install php-(extension_name)
Например, установите некоторые из часто используемых с помощью следующей команды:
Шаг 4. Протестируйте PHP.
Чтобы протестировать PHP, создайте текстовый файл с именем, указанным ниже:
Вставьте следующий код:
Поздравляю! Вы успешно установили PHP . Благодарим за использование этого руководства для установки PHP 8.0 в вашей системе CentOS 7. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт PHP .
PHP is a programming language often used to automate server tasks. It is part of the LAMP (Linux, Apache, MySQL, PHP) stack, which is a bundle of software used for running internet servers and services. PHP handles dynamic content, database requests, and processing and displaying data.

- Access to a terminal window/command-line
- The yum package manager, included by default
- A third-party software repository, detailed below
How to Install PHP 7.2 with Apache on CentOS
Choose PHP Version to Install
The newest stable release version of PHP is PHP 7.3.1. However, some software repositories default to older versions of the software.
One advantage of using an older release is its high stability and reliability. Newer releases may include more features, but are often more experimental and could cause system instability. If you cannot decide which version is right for you, version 7.2 is a great place to start.
Enable Additional Software Repositories
By default, the yum package manager does not include access to the repositories that store the PHP packages. Therefore, you need to enable access to these software packages.
sudo yum install yum-utils –y
sudo yum install epel-release –y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Enable Repository For PHP Version
Next, use the yum-config-manager to point your installer to the repository of the PHP version you want to install:
sudo yum-config-manager ––enable remi–php70
sudo yum-config-manager ––enable remi–php71
Likewise, replace the last two characters with 72 to install PHP 7.2.
Install PHP and its Dependencies
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql –y
As you see, the line includes many of the modules and add-ons that help PHP integrate with your local server configuration.
The output will also indicate which dependencies have been installed.

PHP Modules
You may have noticed that the installation script included more than just the base PHP package. Many of these are modules that provide basic functionality to PHP. Installing this set helps ensure that your PHP installation meets your expectations for usage.
Like many other Linux applications, you can enhance your system’s PHP functionality using modules.

Установка PHP 7.4 в CentOS 7 Linux. Эта версия RPM доступна в репозитории remi-php74 для Fedora ≥ 29 и Enterprise Linux ≥ 7 (RHEL, CentOS), а также в виде Коллекции программного обеспечения в репозитории remi-safe (или remi для Fedora). Версия PHP 7.4.0 была выпущена в фазе стабилизации для разработчиков и для тестирования пользователями. Это не рекомендуется запускать в Production, пока стабильная версия PHP 7.4 не станет доступной для широкой публики. Ожидаемая официальная дата релиза — 28 ноября 2019 года .
Для RHEL 8 / CentOS 8: Как установить PHP 7.4 на CentOS 8 / RHEL 8
PHP 7.4 поставляется с замечательным количеством новых функций.
Додать EPEL и REMI репозиторий
Запустите команды ниже, чтобы добавить необходимые репозитории.
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Теперь мы можем включить репозиторий PHP 7.4 Remi и установить PHP 7.4 в CentOS 7.
sudo yum -y install yum-utils
sudo yum-config-manager —enable remi-php74
Установка PHP 7.4 на CentOS 7.
Примите запрос на установку.
sudo yum install php-xxx
sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
Для просмотра включенных модулей выполните:
$ php —modules
YВы успешно установили PHP 7.4 на CentOS 7. Наслаждайтесь вашими разработками / тестами PHP с этим выпуском и не забудьте оставить отзыв команде разработчиков.
Установка PHP 7.4 в других системах Linux:
Как установить PHP 7.4 на Fedora
Установка PHP 7.4 на Debian 10 / Debian 9
Установка PHP 7.4 в Ubuntu
Установка MariaDB
MariaDB ― программа для хранения и получения данных с помощью SQL-запросов.
При работе с Apache можно использовать стандартную базу данных MySQL. Однако в MariaDB встроен оптимизатор запросов, безопасная репликация, высокая скорость перекодировки символов, что сильно влияет на производительность программы.
Краткое руководство по установке MariaDB:
- Установите базы данных MariaDB:yum -y install mariadb mariadb-server
- Запустите сервис MariaDB:sudo systemctl start mariadb
- Разрешите автозагрузку MariaDB:sudo systemctl enable mariadb.service
Готово, базы данных MariaDB установлены.
Как установить Apache на CentOS 7
Чтобы поставить на VPS Apache:
- Обновите пакет Apache httpd:
- Установите пакеты Apache:
- Разрешите HTTP и HTTPS-трафик на брандмауэре:sudo firewall-cmd —permanent —add-service=http
sudo firewall-cmd —permanent —add-service=https
- sudo firewall-cmd —reload
- sudo systemctl start httpd
- Разрешите автозагрузку Apache:sudo systemctl enable httpd
- Проверьте статус службы Apache:sudo systemctl status httpdОн должен быть active: Настройка Apache (CentOS 7)
- Перейдите в браузере по адресу http://имя_сервера_или_IP/. Если по адресу откроется стартовая страница CentOS Apache, то установка выполнена верно:
Готово, веб-сервер Apache установлен.
Установка и настройка FTP-сервера
В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей. Для его установки вводим следующую команду:
Создаем каталог для хранения настроек:
Создаем виртуального пользователя:
ftpasswd —passwd —file=/etc/proftpd.d/ftpd.passwd —name=ftpwww —uid=48 —gid=48 —home=/var/www —shell=/sbin/nologin
Открываем на редактирование конфигурационный файл proftpd:
И редактируем следующее (комментируем):
В конце файла добавим следующее:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
* где 60000 — 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd —now
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
Установка phpMyAdmin
Однако, если мы устанавливали php версии 7 и выше, необходимо указать репозиторий, который мы использовали для этого, например:
* в данном примере предполагается, что мы использовали репозиторий remi-php74.
Это необходимо для корректной установки расширений PHP.
Теперь создадим для него отдельный виртуальный домен в NGINX:
И добавим в него следующее содержимое:
systemctl reload nginx
Также нужно перезапустить php-fpm, так как в процессе установки был добавлен модуль mbstring:
systemctl restart php-fpm
Step 1 — Install Apache
The Apache web server is currently the most popular web server in the world, which makes it a great default choice for hosting a website.
For our purposes, we can get started by typing these commands:
yum install httpd
Afterwards, your web server is installed.
Once it installs, you can start Apache on your VPS:
systemctl start httpd.service
You can do a spot check right away to verify that everything went as planned by visiting your server’s public IP address in your web browser (see the note under the next heading to find out what your public IP address is if you do not have this information already):
You will see the default CentOS 7 Apache web page, which is there for informational and testing purposes. It should look something like this:
If you see this page, then your web server is now correctly installed.
systemctl enable httpd.service
How To Find your Server’s Public IP Address
If you do not know what your server’s public IP address is, there are a number of ways you can find it. Usually, this is the address you use to connect to your server through SSH.
From the command line, you can find this a few ways. First, you can use the iproute2 tools to get your address by typing this:
This will give you one or two lines back. They are both correct addresses, but your computer may only be able to use one of them, so feel free to try each one.
An alternative method is to use an outside party to tell you how it sees your server. You can do this by asking a specific server what your IP address is:
Regardless of the method you use to get your IP address, you can type it into your web browser’s address bar to get to your server.
Создание первого сайта
Задаем переменную, значение которой будет домен сайта:
* где site1 — имя домена. Нам будет намного удобнее копировать и вставлять команды с переменной (не придется править после копипасты).
Создаем новый файл виртуального домена NGINX:
* обязательно на конце должен быть .conf, так как только такие файлы веб-сервер подгружает в конфигурацию.
И добавляем следующее содержимое.
access_log /var/www/site1/log/nginx/access_log;
error_log /var/www/site1/log/nginx/error_log;
gzip on;
gzip_disable «msie6»;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
root $root_path;
* где site1.local — домен, для которого создается виртуальный домен; /var/www/site1 — каталог, в котором будет размещаться сайт.
** все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
*** обратите внимание на выделения полужирным — здесь нужно подставить свои данные.
server_name site1.local www.site1.local;
set $root_path /var/www/site1/www;
* в первой секции server мы перенаправляем все запросы по незащищенному http на https.
** ssl_certificate и ssl_certificate_key — пути к публичному и приватному ключам соответственно.
*** для получения бесплатного сертификата читайте статью Получение бесплатного SSL сертификата Let’s Encrypt.
Теперь создаем виртуальный домен в Apache:
Создаем каталоги для сайта:
Создаем индексный файл со следующим содержимым:
Задаем права на папки:
chown -R apache:apache /var/www/$TMP_SITE
chmod -R 775 /var/www/$TMP_SITE
Проверяем корректность настроек конфигурационных файлов:
systemctl reload httpd
Открываем сайт в браузере.
При необходимости, создаем базу данных.
mysql -uroot -p
Step 2 — Install MySQL (MariaDB)
Now that we have our web server up and running, it is time to install MariaDB, a MySQL drop-in replacement. MariaDB is a community-developed fork of the MySQL relational database management system. Basically, it will organize and provide access to databases where our site can store information.
Again, we can use yum to acquire and install our software. This time, we’ll also install some other «helper» packages that will assist us in getting our components to communicate with each other:
yum install mariadb-server mariadb
systemctl start mariadb
Now that our MySQL database is running, we want to run a simple security script that will remove some dangerous defaults and lock down access to our database system a little bit. Start the interactive script by running:
Enter current password for root (enter for none):
Setting the root password ensures that nobody can log into the MariaDB
New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
systemctl enable mariadb.service
At this point, your database system is now set up and we can move on.
Настройка apache
Для настройки веб-сервера необходимо подключить к нему нашу новую версию php и настроить виртуальные домены. В нашем примере мы настроим один виртуальный домен для php 5.4.16, второй — 5.2.17.
Подключение новой версии PHP к httpd
Устанавливаем mod_fcgid для httpd:
yum install mod_fcgid
Создаем каталог /usr/lib/cgi-bin:
#!/bin/sh
PHPRC=»/opt/php-5.2.17/»
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php-5.2.17/bin/php-cgi
* где /opt/php-5.2.17 — путь, по которому была установлена дополнительная версия PHP. Он будет зависеть от версии программного продукта.
Разрешаем запуск его на исполнение:
chmod +x /usr/lib/cgi-bin/php$PHP_VER-cgi
Создаем конфигурационный файл для httpd:
ScriptAlias /php5.2.17-cgi /usr/lib/cgi-bin/php5.2.17-cgi
Action application/x-httpd-php5.2.17 /php5.2.17-cgi
AddHandler application/x-httpd-php5.2.17 .php
Настройка виртуальных доменов
Создаем первый виртуальный домен:
Создаем второй виртуальный домен:
* обратите внимание, что для первого хоста мы используем php, который используется в нашей системе по умолчанию. Для второго домена мы подключаем конфигурационный файл php5-2-17.conf. Также мы будем использовать одну и туже директорию для DocumentRoot — для тестовых задач этого достаточно.
Проверяем конфигурацию Apache:
systemctl restart httpd
Создание тестового сайта и проверка настроек
Создаем каталог для нашего тестового сайта:
Создаем сайт, содержимое которого — один единственный скрипт:
На рабочем компьютере открываем файл hosts:
- Для Linux: /etc/hosts
- Для Windows: WindowsSystem32driversetchosts
Укажем, что тестовые домены — это наш веб-сервер:
192.168.0.15 test-php5-4-16.local
192.168.0.15 test-php5-2-17.local
Открываем браузер и заходим на два наших домена:
- http://test-php5-4-16.local/
- http://test-php5-2-17.local/
Мы должны увидеть сводку php с разными версиями:


Установка MariaDB или MySQL
В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.
Устанавливаем MariaDB следующей командой:
* будет установлена mariadb версии 5.5. Если нужна другая, то читаем подробнее в инструкции Установка MariaDB на CentOS или Ubuntu.
** для установки mysql выполняем команду yum install mysql
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb —now
* для работы с mysql меняем mariadb на mysql.
Сразу создаем пароль для учетной записи root:
PHP + MariaDB (MySQL)
Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:
Если мы установили php5, также ставим php-mysql:
yum install php-mysql
После перезагружаем php-fpm:
И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:

* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.
Verify PHP Version
Finally, verify your installation was successful. Check which version of PHP you are running with the command:

Postfix
В CentOS postfix уже установлен и запущен. Нам необходимо сделать несколько простых настроек:
myorigin = $mydomain
smtp_generic_maps = hash:/etc/postfix/generic_map
* где myhostname — имя узла для почтового сервера (его он будет использовать в представлениях другим почтовым серверам); mydomain — домен сервера; myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; smtp_generic_maps указывает на карту с общими правилами пересылки.
Открываем карту пересылки:
Для применения настроек перезагружаем почтовый сервер:
systemctl restart postfix
Установка PHP и PHP-FPM
Устанавливаем PHP и php-fpm следующей командой:
yum install php php-fpm
* В CentOS 7 будет установлена php версии 5.4. Если необходимо установить PHP 7, читайте статью Как установить PHP 7 на CentOS 7.
Запускаем php-fpm и разрешаем его автозапуск:
systemctl enable php-fpm —now
Настройка связки NGINX + PHP
Открываем файл для настройки виртуального домена по умолчанию. В зависимости от версии CentOS 7 пути могут различаться:
а) вариант 1:
б) вариант 2:
в) вариант 3:
В секции location редактируем параметр index на следующее значение:
* добавляем index.php в начало списка. Если параметра index нет, создаем его.
А внутри секции server добавим следующее:
Открываем настройки php-fpm:
Проверяем, настройки параметров:
* listen должен иметь значение /run/php-fpm/www.sock (путь до сокетного файла, который мы указали в конфигурационном файле nginx); listen.group указывает, какую группу назначить сокетному файлу.
* в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.
Проверяем правильность настроек nginx:
И перезагружаем его:
systemctl restart nginx
Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:

Установка Memcached
Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.
Сервис memcached
После разрешаем автозапуск и запускаем сервис кэширования:
systemctl enable memcached —now
Модуль для php
Установить компонент из репозитория:
После устаноки модуля перезапускаем php-fpm:
Чтобы проверить, что модуль memcached работаем, открываем наш сайт в браузере — в phpinfo должна появиться новая секция:

Мы должны получить:
После запуска двух версий php, мы вскоре можем заметить, что вторая (та, что не по умолчанию) не воспринимает настройки php_value из файла .htaccess. Эта проблема связана с тем, что вторичные php мы запустили через php-cgi. Для того, чтобы нужные параметры могли задаваться с помощью htaccess, необходимо установить расширение htscanner.
Установим пакет, необходимый для компиляции расширений php:
yum install autoconf
Заходим на страницу проекта и копируем ссылку на последнюю стабильную версию:

С помощью ссылки загружаем на сервер исходник:
tar -xvzf htscanner-*.tgz
* обратите внимание, что мы запускаем phpize из каталога той версии php, которую ставили дополнительно.
./configure —enable-htscanner —with-php-config=/opt/php-5.2.17/bin/php-config
Собираем его и устанавливаем:
Установка должна выполниться быстро, а после мы должны увидеть что-то на подобие:
* в данном примере нужный нам модуль был скопирован в каталог /opt/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/
Отредактируем или создадим файл php.ini для новой версии PHP:
* где /opt/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/ — путь, который мы получили после установки htscanner.
Готово — в phpinfo должен появиться модуль htscanner и php_value с php_flag должны передаваться с помощью htaccess.
Step 3 — Install PHP
PHP is the component of our setup that will process code to display dynamic content. It can run scripts, connect to our MySQL databases to get information, and hand the processed content over to our web server to display.
We can once again leverage the yum system to install our components. We’re going to include the php-mysql package as well:
yum install php php-mysql
This should install PHP without any problems. We need to restart the Apache web server in order for it to work with PHP. You can do this by typing this:
systemctl restart httpd.service
Install PHP Modules
To enhance the functionality of PHP, we can optionally install some additional modules.
To see the available options for PHP modules and libraries, you can type this into your system:
yum search php-*
The results are all optional components that you can install. It will give you a short description for each:
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
To get more information about what each module does, you can either search the internet, or you can look at the long description in the package by typing:
yum info package_name
There will be a lot of output, with one field called Description which will have a longer explanation of the functionality that the module provides.
For example, to find out what the php-fpm module does, we could type this:
yum info php-fpm
Along with a large amount of other information, you’ll find something that looks like this:
Summary : PHP FastCGI Process Manager
URL : http://www.php.net/
License : PHP and Zend and BSD
Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
: implementation with some additional features useful for sites of
: any size, especially busier sites.
If, after researching, you decide you would like to install a package, you can do so by using the yum install command like we have been doing for our other software.
If we decided that php-fpm is something that we need, we could type:
yum install php-fpm
At this point, your LAMP stack is installed and configured. We should still test out our PHP though.
Apache (httpd)
Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает только Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
И так, устанавливаем httpd:
Заходим в настройки:
И редактируем следующее:
* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html
Проверяем синтаксис конфигурационного файла httpd:
Разрешаем автозапуск и запускаем службу:
systemctl enable httpd —now
Создаем php-файл со следующим содержимым:

NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
и меняем на:
Проверяем и перезапускаем nginx:
Apache Real IP
Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:
yum install httpd-devel gcc unzip
Переходим в каталог /usr/local/src:
Переходим в распакованный каталог:
Собираем модуль и устанавливаем его:
* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой yum install which.
Создаем конфигурационный файл со следующим содержимым:
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off
Для проверки настройки открываем на редактирование созданный index-файл для httpd:
И редактируем содержимое на:
Установка xCache
xCache не поддерживается в php7. Если мы установили именно эту версию, пропускаем установку данного пакета.
Запускаем установку xCache следующей командой:
yum install php-xcache
В phpinfo должно появиться следующее:

Prerequisites
You can enable Remi’s PHP 7.3 repository the same way you enabled other repositories in Step 3. However, this installation may fail if you have extensions that are not compatible with PHP 7.3.
sudo yum-config-manager ––enable remi–php73
Установка еще одной версии PHP
Предположим, на нашем сервере уже установлен PHP версии 5.4.16. Добавим PHP 5.2.17 (также протестировано с версией 7.4.30).
Устанавливаем пакеты, которые нам понадобятся для сборки интерпретатора:
yum install wget libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel bzip2-devel freetype-devel aspell-devel uw-imap-devel libmcrypt-devel libmhash-devel mysql-devel postgresql-devel gcc
* данный набор пакетов не является полным. Например, для PHP версии 7 или для установки дополнительных модулей могут потребоваться другие пакеты. Тут уже нужно ориентироваться по ситуации — получив ошибку при конфигурировании, найти описании проблемы и выполнить соответствующую установку.
Создаем каталог для исходников:
Заходим на страницу загрузки PHP. В зависимости от версии, это будут разные ссылки. Для устаревших версий:
Для актуальных версий — php.net/downloads.
Так как в нашем примере мы устанавливаем PHP 5, переходим по соответствующей ссылке и копируем путь для загрузки исходника:

* если CentOS вернет ошибку, необходимо установить wget командой yum install wget.
Для удобства, сохраняем устанавливаемую версию PHP в переменную:
Создаем каталог для установки PHP:
Распаковываем скачанный исходник:
tar zxvf php-*.tar.gz
После переходим в каталог с распакованными файлами:
./configure —prefix=/opt/php-$PHP_VER —with-config-file-path=/opt/php-$PHP_VER —with-pdo-pgsql —with-zlib-dir —with-freetype-dir —enable-mbstring —with-libxml-dir=/usr —enable-soap —enable-calendar —with-curl=/usr/bin —with-mcrypt —with-zlib —with-gd —with-pgsql —disable-rpath —enable-inline-optimization —with-bz2 —with-zlib —enable-sockets —enable-sysvsem —enable-sysvshm —enable-pcntl —enable-mbregex —with-mhash —enable-zip —with-pcre-regex —with-mysql —with-pdo-mysql —with-mysqli —with-jpeg-dir=/usr/lib64 —with-libdir=lib64 —with-png-dir=/usr —enable-gd-native-ttf —with-openssl —enable-ftp —with-imap —with-imap-ssl —with-kerberos —with-gettext —enable-cli —enable-fastcgi —enable-discard-path —enable-force-cgi-redirect —enable-cgi —enable-bcmath
* при конфигурировании, мы можем получить различные ошибки, связанные с нехваткой компонентов. Для решения данного типа проблем, необходима установка дополнительных пакетов. Что это за пакеты — необходимо разобраться самостоятельно.
Также мы, скорее всего, столкнемся с предупреждением configure: WARNING: unrecognized options. Это значит, что некоторые опции не отработали. Такое случается, так как от версии к версии некоторые из них больше не работают или имеют немного другое написание, например не —with-gd, а —enable-gd. Изучите предупреждение и исправьте недочеты.
Собираем пакет и устанавливаем его:
Ошибки установки и их устранение
Во время ручной сборки и установки пакетов, как правило, возникают проблемы. Попробуем описать алгоритм их диагностики и решения.
Ошибки зависимостей
Проще всего решить те, которые связаны с зависимостями — для этого нужно просто установить недостающий компонент. Такие проблемы возникают на стадии конфигурирования (./configure). Например, для PHP версии 7 в нашем примере может появиться ошибка:
No package ‘oniguruma’ found
Она говорит о том, что для сборки в системе нет dev-пакета с библиотеками регулярных выражений Oniguruma. Для решения ставим пакет:
yum install oniguruma-devel
Индивидуальные ошибки
yum install patch
patch -p0 < php-5.2.17.patch
После команда make отработала.
Таким образом, обработка ошибок носит индивидуальный характер. Как правило искать решение необходимо в Интернете.
Тюнинг веб-сервера
Открываем на редактирование следующий файл:
И правим следующее:
upload_max_filesize = 256M
post_max_size = 256M
short_open_tag = On
date.timezone = «Europe/Moscow»
Перезапускаем php-fpm и httpd:
И внутри секции http добавляем:
После перезапускаем nginx:
Подробнее про тюнинг NGINX в статье Практические советы по тюнингу веб-сервера NGINX.
Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:
Step 4 — Test PHP Processing on your Web Server
In order to test that our system is configured properly for PHP, we can create a very basic PHP script.
We will call this script info.php. In order for Apache to find the file and serve it correctly, it must be saved to a very specific directory, which is called the «web root».
In CentOS 7, this directory is located at /var/www/html/. We can create the file at that location by typing:
When you are finished, save and close the file.
firewall-cmd —permanent —zone=public —add-service=http
firewall-cmd —permanent —zone=public —add-service=https
firewall-cmd —reload
Now we can test whether our web server can correctly display content generated by a PHP script. To try this out, we just have to visit this page in our web browser. You’ll need your server’s public IP address again.
The address you want to visit will be:
The page that you come to should look something like this:

This page basically gives you information about your server from the perspective of PHP. It is useful for debugging and to ensure that your settings are being applied correctly.
If this was successful, then your PHP is working as expected.
You can always recreate this page if you need to access the information again later.
Установка NGINX
yum install nginx
Внесем небольшую корректировку в файл nginx.conf:
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Разрешаем автозапуск сервиса и запустим его:
systemctl enable nginx —now

* обратите внимание, что данное приветствие может иметь и другой вид.
Для настройки http/2 читайте соответствующую статью.
PHP ― язык программирования, который позволяет генерировать HTML-страницы на веб-сервере и работать с базами данных. Он облегчает взаимодействие с Apache.
Как установить PHP на Apache пошагово:
- Установите пакеты PHP и другие модули, требуемые для работы:yum install php php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
- sudo systemctl restart httpd
Готово, PHP установлен.
Для нативной версии PHP установка расширений может быть выполнена с помощью пакетного менеджера yum. Но для добавленной версии это не поможет — нам нужно пересобрать интерпретатор с нужными опциями. Это не так сложно. Например, добавим к нашей дополнительной версии PHP расширение iconv.
Еще раз создаем переменную с нужной версией PHP (для удобства дальнейшей работы):
* в нашем примере это версия 5.2.17.
Переходим в каталог и исходником. В нашем примере это:
* если исходника нет, просто скачиваем его еще раз, как делали во время установки.
Смотрим, с какими опциями была сконфигурирована наша дополнительная версия PHP:
Выполняем конфигурирование с этими же опциями и добавляем расширение:
* напомним, что от версии к версии PHP набор опций и способ включения расширения могут отличаться. Внимательно смотрим статус конфигурирования по его окончании.
Выполняем сборку и устанавливаем наш интерпретатор:
Проверяем, что наше расширение подключено. Это можно сделать с помощью вывода phpinfo из командной строки:
Conclusion
Now that you have a LAMP stack installed, you have many choices for what to do next. Basically, you’ve installed a platform that will allow you to install most kinds of websites and web software on your server.

