Nginx + php-fpm на centos 7

Установка PHP-FPM

Оговорю сразу, что настравивать php-fpm мы будем через unix сокеты (unix://socket). Есть мнение что именно через сокеты php-fpm будет работать быстрее, чем через tcp/ip протокол (по умолчанию на 9000 порту). Сам я тесты не проводил, поэтому поверим на слово «бывалых».

yum -y update
# установка php-fpm
yum -y install php-fpm

Настройка PHP-FPM

Первым делом надо открыть файл /etc/php-fpm.d/www.conf и поправить в нем несколько строк:

nano /etc/php-fpm.d/www.conf

Ищем строку listen… заменяем ее на:

listen = /www/php-fpm.sock

Раскоментируем строки listen. и укажем имя пользователя, с помощью и правами которого будет создан файл сокета, при первом обращении к нему:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Аналогично устанавливаем пользователя в строках:

user = nginx
group = nginx

А также укажем путь к директории, где PHP-FPM будет хранить файлы сессии (на самом деле, данными командами мы просто перекрываем конфигурации из файла /etc/php.ini):

php_value = files
php_value = /www/php-fpm-session

Для того, чтобы вышеописанные настройки работали правильно, создадим файл соккета (по идее, он должен создасться сам при первом дергании php-fpm, но мы все же создадим его на всякий случай):

touch /www/php-fpm.sock
# назначим правильные права
chown nginx:nginx /www/php-fpm.sock
chmod 600 /www/php-fpm.sock

Далее создадим директорию для PHP сессий и назначим ей правильные права:

mkdir /www/php-fpm-session
chown -R nginx:nginx /www/php-fpm-session
chmod -R 777 /www/php-fpm-session

Правим /etc/php.ini как вам угодно, но обязательно меняем значение 1 на 0 в строке:

cgi.fix_pathinfo = 0;

В своем php.ini я также установил временную зону:

date.timezone = Europe/Kiev

Пробуем запустить PHP-FPM и добавим в автозагрузку:

systemctl start php-fpm
systemctl enable php-fpm

P.S. для того чтобы перезапустить севрис PHP-FPM выполните команду:

systemctl restart php-fpm

Если все прошло успешно — радуемся, если нет — ищем ответы в гугле, или пишем комментарии сюда :), чем смогу тем помогу.

Для того, чтобы проверить, что у нас PHP работает как надо, раскоментируем (или добавим, если их там нет) строки в файле /etc/nginx/conf.d/test.com:

# cекция "location / {"
# Default location settings
location / {
	index index.html index.htm index.php;
	try_files $uri $uri/ /index.php?$args;
	rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;
	rewrite ^/(+?)-sitemap(+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
}
# секция location ~ \.php$ {
location ~ \.php$ {
	# Prevent Zero-day exploit
	try_files $uri =404;
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	fastcgi_pass    unix:/www/php-fpm.sock;
	fastcgi_index   index.php;
	fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include         /etc/nginx/fastcgi_params;
}

и скормим последние изменения в nginx без перезапуска самого nginx:

nginx -s reload

А также создадим файл /www/test.com/public/index.php с таким вот содержимым:

<?php phpinfo(); ?>

Заходим из браузера по адресу test.com. Понятно, что доменное имя может быть каким угодно, каким вы его настроили, а если же у вас нет никакого доменного имени, то вы можете просто прописать DNS алиасы в своем hosts файле. Как настроить hosts в своей системе — ищите в гугле, или комментарий ниже.

Ротация логов виртуальных хостов

Последний штрих в настройке web сервера — ротация логов виртуальных хостов. Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла.

У нас уже будет файл конфигурации logrotate для nginx, который был создан во время установки — /etc/logrotate.d/nginx. Приведем его к следующему виду:

/var/log/nginx/*log
/web/sites/p1m2a.zeroxzed.ru/log/*log {

    create 0644 nginx nginx
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

/web/sites/hl.zeroxzed.ru/log/*log {

    create 0644 hl.zeroxzed.ru hl.zeroxzed.ru
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Это просто пример конфигурации. Все параметры вы можете поменять по своему усмотрению. Примеров конфигурации logrotate в интернете много.

На этом все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки производительного web сервера на основе nginx и php-fpm последних версий. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.

Тюнинг веб-сервера

PHP

Открываем на редактирование следующий файл:

vi /etc/php.ini

И правим следующее:

upload_max_filesize = 256M
post_max_size = 256M
short_open_tag = On
date.timezone = «Europe/Moscow»

Перезапускаем php-fpm и httpd:

systemctl restart php-fpm

systemctl restart httpd

NGINX

Открываем на редактирование следующий файл:

vi /etc/nginx/nginx.conf

И правим следующее:

worker_processes  auto;

И внутри секции http добавляем:

client_max_body_size 256M;

После перезапускаем nginx:

systemctl restart nginx

Подробнее про тюнинг NGINX в статье Практические советы по тюнингу веб-сервера NGINX.

Postfix

Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:

  1. Прописать PTR-запись.
  2. Создать запись SPF.
  3. Настроить DKIM. 

Установка PHP и PHP-FPM

Устанавливаем PHP и PHP-FPM:

apt-get install php php-fpm

Разрешаем автозапуск php-fpm и запускаем его:

systemctl enable php7.4-fpm

* обратите внимание, что мы запустили php-fpm версии 7.4. Но установлена может быть и другая версия — ее можно узнать по версии php командой php -v

Настройка связки NGINX + PHP

Открываем файл для настройки виртуального домена по умолчанию:

vi /etc/nginx/sites-enabled/default

В секции location или server редактируем параметр index на следующее значение:


index index.php index.html index.htm;

* в данном случае мы сказали серверу сначала искать индексный файл index.php, затем остальные по списку.

А внутри секции server добавим следующее:

        location ~ \.php$ {
            set $root_path /var/www/html;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param DOCUMENT_ROOT $root_path;
        }

* где /var/www/html — корневой путь хранения скриптов; /run/php/php7.4-fpm.sock — путь до сокетного файла для взаимодействия с php-fpm

Обратите еще раз внимание, что если в нашей системе будет установлена другая версия php, необходимо внести соответствующую корректировку

Пример файла default:

server {
    listen 80 default_server;
    listen :80 default_server;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;
    location / {
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        set $root_path /var/www/html;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param DOCUMENT_ROOT $root_path;
    }
}

Проверяем правильность настроек nginx:

nginx -t

И перезагружаем его:

systemctl restart nginx

Открываем конфигурационный файл PHP-FPM:

vi /etc/php/7.4/fpm/pool.d/www.conf

Проверяем, что путь до сокетного файла такой же, как мы задали в настройках NGINX:

listen = /run/php/php7.4-fpm.sock

В противном случае меняем его и перезапускаем сервис:

systemctl restart php7.4-fpm

Теперь заходим в каталог хранения настроенного сайта:

cd /var/www/html

Создаем index.php со следующим содержимым:

vi index.php

<?php phpinfo(); ?>

Открываем браузере и переходим по адресу http://<IP-адрес сервера>. Мы должны увидеть сводную информацию по PHP и его настройкам:

* в данном примере используется php версии 7.4.

Установка nginx на CentOS 7

Для установки самой свежей стабильной версии nginx на centos подключим родной репозиторий.

# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Если по какой-то причине ссылка изменится или устареет, то можно создать файл с конфигурацией репозитория nginx вручную. Для этого рисуем такой конфиг /etc/yum.repos.d/nginx.repo.

name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Устанавливаем nginx на сервер.

# yum install nginx

Запускаем nginx и добавляем в автозагрузку.

# systemctl start nginx
# systemctl enable nginx

Если страница не открывается, то скорее всего вы не настроили firewall. Свою статью по его настройке я приводил в самом начале.

Apache

Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.

Устанавливаем apache и модуль для php:

apt-get install apache2 libapache2-mod-php

Заходим в настройки портов:

vi /etc/apache2/ports.conf

И редактируем следующее:

Listen 8080
#<IfModule ssl_module>
#       Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
#       Listen 443
#</IfModule>

* мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.

Теперь открываем настройку следующего модуля:

vi /etc/apache2/mods-available/dir.conf

И добавляем впереди индексных файлов index.php:

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

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.

Открываем основной конфигурационный файл для apache:

vi /etc/apache2/apache2.conf

Рядом с опциями Directory дописываем:

<Directory /var/www/*/www>
    AllowOverride All
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
</Directory>

* где Directory указывает на путь, для которого мы хотим задать настройки; AllowOverride — позволит переопределить все настройки с помощью файла .htaccess; Options задает некоторые настройки: Indexes разрешает списки каталогов, ExecCGI разрешает запуск cgi скриптов, Require all granted — предоставляет всем доступ к сайтам в данном каталоге.

Ниже допишем:

<IfModule setenvif_module>
    SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>

* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER равную on. Данная настройки критична для функционирования некоторых CMS.

Запрещаем mpm_event:

a2dismod mpm_event

* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.

Разрешаем модуль мультипроцессовой обработки mpm_prefork:

a2enmod mpm_prefork

Разрешаем модуль php:

a2enmod php7.4

* в данном примере установлен php версии 7.4.

Разрешаем модуль setenvif:

a2enmod setenvif

Разрешаем модуль rewrite:

a2enmod rewrite

В процессе включения модулей, если мы видим «Module … already enabled», значит модуль уже включен.

Разрешаем автозапуск Apache и перезапускаем службу:

systemctl enable apache2

systemctl restart apache2

Открываем браузер и вводим в адресную строку http://<IP-адрес сервера>:8080. Мы должны увидеть привычную страницу:

* в разделе Server API мы должны увидеть Apache.

NGINX + Apache

Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:

vi /etc/nginx/sites-enabled/default

Находим наш настроенный location для php-fpm:


        location ~ \.php$ {
            set $root_path /var/www/html;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param DOCUMENT_ROOT $root_path;
        }

и меняем на:


        location ~ \.php$ {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

Проверяем и перезапускаем nginx:

nginx -t

systemctl restart nginx

Пробуем открыть в браузере http://<IP-адрес сервера> — должна открыться та же страница, что при проверке Apache (с добавлением 8080):

Apache Real IP

Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.

Создаем конфигурационный файл со следующим содержимым:

vi /etc/apache2/mods-available/remoteip.conf

<IfModule remoteip_module>
  RemoteIPHeader X-Forwarded-For
  RemoteIPTrustedProxy 127.0.0.1/8
</IfModule>

Активируем модуль:

a2enmod remoteip

Перезапускаем apache:

systemctl restart apache2

Для проверки настройки открываем браузер и вводим в адресную строку http://<IP-адрес сервера>, где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR.

Установка nginx на CentOS 7

Для установки самой свежей стабильной версии nginx на centos подключим родной репозиторий.

# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Если по какой-то причине ссылка изменится или устареет, то можно создать файл с конфигурацией репозитория nginx вручную. Для этого рисуем такой конфиг /etc/yum.repos.d/nginx.repo.

name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Устанавливаем nginx на сервер.

# yum install nginx

Запускаем nginx и добавляем в автозагрузку.

# systemctl start nginx
# systemctl enable nginx

Если страница не открывается, то скорее всего вы не настроили firewall. Свою статью по его настройке я приводил в самом начале.

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

systemctl enable php-fpm

Настройка связки NGINX + PHP

Открываем файл для настройки виртуального домена по умолчанию:

vi /etc/nginx/conf.d/default.conf

* в некоторых версиях nginx данного файла может не быть и настройка выполняется в файле /etc/nginx/nginx.conf.

В секции location редактируем параметр index на следующее значение:

    location / {
        index  index.php index.html index.htm;
    }

* добавляем index.php в начало списка. Если параметра index нет, создаем его.

А внутри секции server добавим следующее:

    location ~ \.php$ {
        set $root_path /usr/share/nginx/html;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param DOCUMENT_ROOT $root_path;
    }

* где /usr/share/nginx/html — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.

Открываем настройки php-fpm:

vi /etc/php-fpm.d/www.conf

Проверяем, что параметр listen настроен так:

listen = /run/php-fpm/www.sock

… иначе, меняем значение. После перезагружаем php-fpm:

systemctl restart php-fpm

* в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.

Проверяем правильность настроек nginx:

nginx -t

И перезагружаем его:

systemctl restart nginx

Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:

vi /usr/share/nginx/html/index.php

<?php phpinfo(); ?>

Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:

Установка phpmyadmin

Кратко расскажу про установку phpmyadmin в контексте данной статьи. Подробно не буду останавливаться на этом, так как статья и так получается очень объемная, а я еще не все рассказал. Вопрос настройки phpmyadmin я очень подробно рассмотрел отдельно. За подробностями можно сходить туда.

Устанавливаем phpmyadmin через yum. Если ранее все сделали правильно, то конфликтов с зависимостями быть не должно.

# yum install phpmyadmin

Phpmyadmin по-умолчанию сконфигурирована для работы с httpd. Для того, чтобы в будущем автоматически обновлять ее, просто сделаем символьную ссылку из директории с исходниками панели в наш виртуальный хост.

# rm -df /web/sites/p1m2a.zeroxzed.ru/www
# ln -s /usr/share/phpMyAdmin /web/sites/p1m2a.zeroxzed.ru/www

Выставляем правильные права на директорию с php сессиями. Без этого работать phpmyadmin не будет.

# chown nginx:nginx /var/lib/php/session/

Можно заходить и проверять работу phpmyadmin. Ее установка закончена.

Доступ к сайту по sftp

Настройка сервера почти завершена. Если вы администратор и единственный пользователь, то больше можно ничего не делать. Вы и так сможете загрузить на сервер все что нужно тем или иным способом. Если же вы будете передавать управление сайтами другим людям, им нужен доступ к директории с исходниками сайта. Раньше для этих целей повсеместно использовали ftp. Если вы хотите так сделать, у меня есть статья по настройке ftp сервера vsftpd.

Я же предлагаю использовать sftp по нескольким причинам:

  1. Он безопаснее.
  2. Его быстрее настроить.
  3. Не надо отдельно настраивать firewall.

Статью по настройке sftp доступа я уже тоже писал, все подробности там. Здесь без комментариев выполним необходимые действия.

Создаем пользователя для подключения к сайту. Я обычно использую имя пользователя пересекающееся с названием сайта. Так удобнее управлять.

# useradd -s /sbin/nologin hl.zeroxzed.ru
# passwd hl.zeroxzed.ru

Открываем конфиг ssh по пути /etc/ssh/sshd_config и комментируем там одну строку, добавляя далее несколько новых.

#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User hl.zeroxzed.ru
ChrootDirectory /web/sites/hl.zeroxzed.ru
ForceCommand internal-sftp

Перезапускаем службу sshd.

# systemctl restart sshd

Этого уже достаточно, чтобы вы могли подключиться к сайту, к примеру, с помощью программы winscp. Если что-то пойдет не так и будут какие-то ошибки, то смотреть подробности нужно в логе /var/log/secure. Но тут возникает много нюансов с правами к файлам и директориям. Дальше я расскажу, как их аккуратно и грамотно разрулить, чтобы у нас не было проблем с дальнейшей работой сайтов от разных пользователей.

Подготовка к установке

Технические требования к установке PhpMyAdmin

Установка phpMyAdmin на сервер возможна в случае, если на CentOS уже установлен и настроен стек LEMP  (Linux, Nginx, MariaDB и PHP). Данный комплекс программ необходим для запуска, работы и дополнительной настройки веб-интерфейса PhpMyAdmin.

Установка дополнительных репозиториев

В официальных репозиториях CentOS 7 пакет phpMyAdmin отсутствует. Проблема решается добавлением в систему дополнительного репозитория EPEL (Extra Packages for Enterprise Linux). В нем имеется огромное количество дополнительных пакетов для установки разного ПО, включая phpMyAdmin.

Установка EPEL репозитория выполняется командой:

sudo yum -y install epel-release

Настройка Nginx

К настоящему времени у вас уже должен быть установлен Nginx с SSL-сертификатом в вашей системе, если не проверены предварительные условия для этого урока.

Чтобы создать новый блок сервера для нашего экземпляра WordPress мы будем использовать рецепт Nginx с официального сайта Nginx.

Откройте ваш текстовый редактор и создайте новый блок сервера nginx:

Добавьте следующие строки:

Не забудьте заменить example.com доменом WordPress и указать правильный путь к файлам SSL-сертификатов. Все HTTP-запросы будут перенаправлены на HTTPS. Фрагменты, используемые в этой конфигурации, созданы в этом руководстве.

Перед перезапуском службы Nginx проверьте конфигурацию, чтобы убедиться в отсутствии синтаксических ошибок:

Если ошибок нет, результат должен выглядеть следующим образом:

и вы можете перезапустить Nginx, набрав:

Install Nginx

Install Nginx repository rpm to download the Nginx from the official site.

### CentOS 7 ###

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

### RHEL 7 ###

rpm -Uvh http://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm

Install Nginx using the following command.

yum -y install nginx

Start the Nginx service after the installation.

systemctl start nginx

Firewall

Run the following commands in the terminal to allow HTTP requests through the firewall.

firewall-cmd --permanent --add-service=http

firewall-cmd --reload

SELinux

Else, disable the SELinux using the following command temporarily for the current session.

setenforce 0

We recommend you to disable the SELinux permanently.

Test Nginx

Open your web browser and visit the following URL.

http://your-ip-address

You should see the following page. This page confirms that the Ngnix is successfully installed on the server.

Install Linux, Nginx, MariaDB, PHP (LEMP Stack) in CentOS 7 – Nginx Default Page

The default nginx document root on CentOS 7 is /usr/share/nginx/html/. The configuration files are found under /etc/nginx directory.

Auto-start the Nginx service at system startup.

systemctl enable nginx

Установить php (php-fpm)

Если устанавливать php из репозитория CentOS, то будет установлена старая версия. На момент написания статьи устанавливалась версия 5.4.14, при том, что уже существовала версия 7.1. Чтобы установить новую версию php, пригодится репозиторий webtatic.

Проверка:

# yum search php7

Установка:

# yum install php71w-common php71w-cli php71w-fpm php71w-gd php71w-mbstring php71w-mcrypt php71w-pdo php71w-mysqlnd php71w-opcache php71w-xml

Считаю, что полезно сразу установить php71w-opcache, в списке пакетов упомянуто.

php71w-pdo требуется для для php71w-mysqlnd, даже если не упомянуть в списке, будет установлено как зависимость.

Для php71w-mcrypt будут установлены зависимости: libmcrypt и libtool-ltdl.

Проверка:

# php -v

Ответ выглядит примерно так:

PHP 7.1.4 (cli) (built: Apr 15 2017 08:07:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
 with Zend OPcache v7.1.4, Copyright (c) 1999-2017, by Zend Technologies

Последняя строчка подтверждает, что установлено кеширование опкодов PHP — Zend OPcache.

Прописать в автозапуск:

# systemctl enable php-fpm

Запустить сейчас:

# systemctl start php-fpm

What is LEMP?

LEMP is a stack of programs that work collectively to serve dynamic websites or web applications. It consists of Linux (the server’s operating system), ENginX/Nginx (web server application), MySQL (database management system), and PHP (scripting language).

LEMP is a popular alternative to LAMP, which uses Apache instead of Nginx and focuses on serving static web pages. There are also WAMP and MAMP that replace Linux with Windows and macOS.

Before we begin the tutorial on how to install LEMP, make sure that your server or VPS is running on CentOS 7. If you’re using a Hostinger VPS plan, install CentOS from the Servers tab of hPanel.

Conclusion

LEMP (Linux, ENginx, MySQL, PHP) stack is the perfect choice to serve dynamic web pages or web applications. Fortunately, the installation process is simple. With basic knowledge of the command-line interface, you can easily set up all the required programs on your VPS.

In this article, you have learned how to install LEMP on CentOS 7. To conclude, let’s take a look at all the steps once again:

  1. Get EPEL repository and install Nginx on your server.
  2. Install and configure MariaDB
  3. Install PHP and all of its common packages.
  4. Configure Nginx to work with PHP.

Good luck and feel free to leave a comment if you have any questions!

Заключение

Тема настройки веб сервера обширна. Рассмотреть все варианты в одной статье невозможно, так как функционал будет разниться, в зависимости от назначения сервера. Тем не менее приведу еще несколько ссылок на материалы, которые имеют отношение к настройке web сервера:

  • Полный бэкап сервера или отдельных сайтов.
  • Мониторинг веб сервера и веб сайта с помощью zabbix.
  • Защита админки wordpress с помощью fail2ban.
  • Если у вас будут проблемы с ботами, то пригодится статья по блокировке доступа к сайту по странам.

Если еще что-то полезное вспомню, добавлю ссылки. Пока вроде все. Жду комментариев и отзывов. Написал все по своему опыту, как я обычно настраиваю веб сервера. Возможно что-то можно сделать более удобно и правильно.

Эта статья будет первой из цикла статей по настройке современного веб сервера. Далее мы будем защищать web сервер и готовить его к максимальным нагрузкам.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: