- Introduction
- Step 1 — Install phpMyAdmin
- Step 2 — Change Login URL
- Step 3 — Setup a Web Server Authentication Gate
- Conclusion
- Предпосылки
- Шаг 1. Установка Nginx
- Шаг 2. Установка MariaDB
- Шаг 3. Установка PHP
- Шаг 4. Настройка Nginx для обработки страниц PHP
- Больше информации
- Installation of phpMyAdmin on CentOS 7
- Step 1: Install EPEL Repository
- Step 2: Install Apache Web Server
- Step 3: Installing phpMyAdmin on CentOS 7
- Step 4: Configuring and Securing phpMyAdmin
- Restrict IP Addresses
- Change Alias
- Step 5: Restart Apache
- Step 6: Verify phpMyAdmin is Working
- Устанавливаем Nginx в CentOS 7
- Шаг 1: Добавление Nginx в систему
- Шаг 2: Запуск веб-сервера
- Шаг 3: Разрешение трафика веб-сервера в брандмауэре
- Еще статьи по данной теме:
- Помогла ли Вам статья?
- Install Nginx
- Firewall
- SELinux
- Test Nginx
- Install MariaDB
- Install PHP
- PHP v5.4 (End Of Support)
- Test LEMP Stack
- Create Virtual Host
- Test Virtual host
- Conclusion
- Введение
- Установка nginx на CentOS 7
- Настройка nginx
- Установка php-fpm 7
- Настройка бесплатного ssl сертификата Lets Encrypt
- Установка mariadb 10 на CentOS 7
- Установка phpmyadmin
- Доступ к сайту по sftp
- Работа с сайтами разных пользователей на одном веб сервере
- Ротация логов виртуальных хостов
- Заключение
- Помогла статья? Подписывайся на telegram канал автора
Introduction
Step 1 — Install phpMyAdmin
The installation will now complete.
/usr/share/phpMyAdmin /usr/share/nginx/htmlFinally, restart Nginx and PHP-FPM to apply changes.
systemctl restart nginx
systemctl restart php-fpmhttp://server_domain_or_IP/phpMyAdmin
Step 2 — Change Login URL
Note: in this guide, we will name our access location /my.
/usr/share/nginx/html phpMyAdmin myhttp://server_domain_or_IP/phpMyAdmin
http://server_domain_or_IP/my
Step 3 — Setup a Web Server Authentication Gate
To provide an additional layer of security, we can set up authentication in Nginx.
Before we do this, we will create a password file that will store our authentication credentials.
htpasswd /etc/nginx/.htpasswd holu# htpasswd -c /etc/nginx/.htpasswd holuNew password:
Re-type new password:
Adding password user holuusername:.rv.fKfjbYNTUPzV.Now we are ready to modify our Nginx configuration file. Open this file in your text editor to get started:
/etc/nginx/conf.d/default.confAfter we are finished, the file should look like this:
server . location /my auth_basic auth_basic_user_file /etc/nginx/.htpassword .Save and close the file when you are finished.
To implement our new authentication gate, we must restart the web server:
http://server_domain_or_IP/my
Conclusion
License: MIT
Want to contribute?
Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!
- Устанавливаем phpMyAdmin в CentOS 7
- Вопросы и ответы

- Запустите консоль любым удобным методом, например, через меню «Приложения».
- Впишите команду
sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmдля загрузки пакета программного обеспечения из пользовательского репозитория Extra Packages for Enterprise Linux. - Для продолжения процесса введите пароль от учетной записи с рут-доступом.
- После завершения добавления пакетов следует обновить список системных библиотек командой
sudo yum -y update. - Указанная выше команда инсталлирует все доступные обновления, и после этого останется только инсталлировать сам клиент приложения через
sudo yum -y install phpmyadmin.





- Добавьте новый пакет в систему, скачав его из репозитория через
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm. - Обновите доступные системные библиотеки с помощью уже знакомой команды
sudo yum update. - Включите поддержку последней версии приложения, на данный момент это 7.1. Для этого введите
yum-config-manager --enable remi-php71. - Установите ПО
sudo yum install phpmyadmin, а подходящая версия PHP определится автоматически.





На этом добавление всех компонентов завершено, однако перед началом работы с веб-интерфейсом потребуется настроить и сам сервер. Далее мы разберем осуществление этой процедуры в двух популярных решениях — Apache и Nginx.
Первоочередно обратите внимание на то, чтобы сам веб-сервер уже добавлен в операционную систему, если это не так, поочередно впишите в консоль следующие команды:
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
После этого следуйте такой инструкции:
- Включите phpMyAdmin в директорию веб-сервера с помощью строки
sudo ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin. - После внесения изменений осуществите перезапуск, введя
sudo systemctl restart php-fpm. - Через стандартный текстовый редактор запустите конфигурационный файл
sudo vi /etc/nginx/nginx.conf. - Отыщите блок «http» и добавьте туда строку
disable_symlinks off;. - Сохраните изменения и закройте файл, после чего перезагрузите Nginx
sudo nginx -s reload.





Хоть предыдущий веб-сервер и считается лучше в некоторых аспектах, Apache все еще остается достаточно популярным решением и используется в системе программного обеспечения LAMP. Его установка в CentOS производится буквально несколькими командами:
yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service
- Задайте пароль для доступа администратора с помощью
sudo htpasswd -c /etc/httpd/passwords admin. - Запустите конфигурационный файл для дальнейшего редактирования:
vi /etc/httpd/conf.d/phpMyAdmin.conf. - Отыщите секцию «<Directory>» и вставьте такое содержимое:



Это краткое руководство покажет вам основные шаги, необходимые для установки стека LEMP на сервере CentOS 7.
Предпосылки
Пользователь, под которым вы вошли в систему, должен иметь права sudo, чтобы иметь возможность устанавливать пакеты.
Шаг 1. Установка Nginx
Nginx недоступен в репозитории CentOS 7 по умолчанию, поэтому мы будем использовать репозитории EPEL. Чтобы добавить репозиторий EPEL в вашу систему, используйте следующую команду:
sudo yum install epel-releaseТеперь, когда репозиторий EPEL включен, установите пакет Nginx с помощью:
sudo yum install nginxПосле установки запустите и включите службу Nginx, набрав:
sudo systemctl start nginxsudo systemctl enable nginx
Шаг 2. Установка MariaDB
Следующим шагом является установка пакетов MariaDB. Для этого введите:
sudo yum install mariadb-serverПосле установки сервера MariaDB запустите и включите службу с помощью:
sudo systemctl start mariadb.servicesudo systemctl enable mariadb.service
На момент написания MariaDB 5.5 доступна в официальном репозитории CentOS 7. Если вы хотите установить более новую версию, обратитесь к этому руководству . Чтобы установить MySQL вместо MariaDB, ознакомьтесь с инструкциями по установке в нашем руководстве .
Шаг 3. Установка PHP
CentOS 7 поставляется с версией PHP 5.4, которая в течение некоторого времени является EOL-ed, поэтому мы будем использовать репозиторий Remi для установки PHP 7.2.
Выполните следующую команду, чтобы добавить репозиторий Remi в вашу систему:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmПосле добавления установите пакет yum-utils и включите репозиторий remi-php72 :
sudo yum install yum-utilssudo yum-config-manager --enable remi-php72
Теперь, когда у нас включен репозиторий Remi, мы можем установить PHP FPM и несколько наиболее распространенных модулей PHP с помощью:
sudo yum install php-fpm php-opcache php-cli php-gd php-curl php-mysqlПо умолчанию PHP FPM запускается как пользовательский apache на порту 9000. Мы изменим пользователя на nginx и переключимся с сокета TCP на сокет Unix. Для этого отредактируйте строки, выделенные желтым:
sudo nano /etc/php-fpm.d/www.conf Убедитесь, что каталог /var/lib/php имеет правильные разрешения:
chown -R root:nginx /var/lib/phpСохраните файл, включите и запустите службу PHP FPM с помощью:
sudo systemctl enable php-fpmsudo systemctl start php-fpm
Шаг 4. Настройка Nginx для обработки страниц PHP
Теперь, когда у нас установлены все компоненты LEMP, мы можем отредактировать файл конфигурации блока сервера Nginx и добавить следующие строки, чтобы Nginx мог обрабатывать файлы PHP:
# other code Не забудьте перезапустить сервис Nginx, чтобы изменения вступили в силу:
sudo systemctl restart nginxБольше информации
Более подробные инструкции по каждому шагу см. В следующих руководствах.

- LAMP (Linux, Apache, MySQL, PHP) stack installed on the server.
- Access to a sudo user account with root privileges (ability to use the sudo command).
- The CentOS 7 operating system.
- The YUM update manager, which is a default component of CentOS 7.
- A command prompt with root access. To open a command prompt: Menu > Applications > Utilities > Terminal.
- A text editor. Vim is included with most Linux installations or you can use Nano.
Installation of phpMyAdmin on CentOS 7
Step 1: Install EPEL Repository
(If you’ve already installed EPEL, you can skip this step.)
sudo yum install -y epel-releaseOnce that operation finishes, it’s a good idea to refresh and update the EPEL repository:
sudo yum –y updateStep 2: Install Apache Web Server
yum install httpd -yVerify the status of Apache by running with the command:
systemctl status httpdYou can also enter your server’s IP address in a browser and a testing screen should display:

Step 3: Installing phpMyAdmin on CentOS 7
sudo yum -y install phpmyadminStep 4: Configuring and Securing phpMyAdmin
Restrict IP Addresses
sudo vim /etc/phpMyAdmin/config.inc.phpOnce you’ve made the changes, save the file.
Change Alias
sudo vim /etc/phpMyAdmin/config.inc.phpNear the top, you should see two lines:
Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdminAlias /MySecretLogin /usr/share/phpMyAdminNow, when you go to your login screen, you’ll have to type https://IP_OR_DOMAIN/MySecretLogin (or whatever you choose) to gain access.
Once you’re finished making changes, save the file.
Step 5: Restart Apache
Regardless of which configuration you use, you’ll need to restart the Apache service to see your changes:
sudo systemctl restart httpd.serviceStep 6: Verify phpMyAdmin is Working
125.0.0.2/phpmyadminNote: Fill in the location of your own public server information in place of “IP_OR_DOMAIN.” You’ll need to collect this information from your particular server configuration. It’ll usually be your domain name or the IP address of your server.

Nginx — популярный веб-сервер, активно использующийся для обслуживания сайтов и различных приложений. Это мощный бесплатный интернет, который задействуют системные администраторы при создании цепочки из компонентов, стабильно взаимодействующих друг с другом. Особенно часто Nginx инсталлируют в CentOS 7, поскольку это один из популярных серверных дистрибутивов. Сегодня мы бы хотели рассказать об инсталляции данного веб-сервера в упомянутую ОС.
Устанавливаем Nginx в CentOS 7
Все дальнейшие действия будут осуществляться через «Терминал», а в качестве источника загрузки мы выбрали официальные репозитории дистрибутива. Весь процесс будет разделен на три тематических этапа, чтобы даже самый начинающий пользователь смог быстро разобраться во всех инструкциях и без проблем справился с поставленной задачей.
Шаг 1: Добавление Nginx в систему
Начнем с самого основного шага — установки веб-сервера Nginx в операционную систему. Как уже было сказано ранее, потребуется нам для этого консоль и знание некоторых команд. Процедура выглядит следующим образом:
- Откройте «Терминал» удобным для вас образом, например, через вкладку «Избранное» в меню приложений или нажав на горячую клавишу Ctrl + Alt + T.
- Здесь следует ввести команду стандартного вида
sudo yum install epel-release, чтобы подготовить ОС для дальнейшего добавления нового пакета. - Это и все последующие манипуляции будут производиться от имени суперпользователя, поэтому их придется подтверждать, введя в новой строке соответствующий пароль.
- При появлении уведомления о необходимости добавления нового пакета epel подтвердите процедуру, выбрав вариант y.
- По завершении операции появится новая строка ввода. В ней следует написать
sudo yum install nginx, чтобы запустить инсталляцию Nginx со стандартного хранилища. - Еще раз подтвердите уведомление о добавлении пакета.
- Дополнительно будет получен и сразу же импортирован публичный ключ. Однако это осуществится только после того, как вы выберете положительный вариант ответа.







Осталось только подождать завершения инсталляции. После этого на экране появится уведомление об успешно выполненной операции, а это значит, что можно переходить к следующему этапу.
Шаг 2: Запуск веб-сервера
К сожалению, Nginx по умолчанию не добавляется в автозагрузку операционной системы, а также находится в выключенном состоянии, поэтому понадобится выполнять данные действия самостоятельно. Это не займет много времени, ведь потребуется ввести всего две команды.
- Первая имеет вид
systemctl start nginxи отвечает за запуск сервиса для текущего сеанса. - После активации команды появится всплывающее окно с подтверждением подлинности. Введите здесь пароль суперпользователя и нажмите на Enter.
- Вторая строка
systemctl enable nginxнеобходима для добавления рассматриваемого веб-сервера в автозагрузку. - Она тоже будет активирована только после ввода пароля.
- Если все прошло успешно, вы увидите информацию о том, что только что была создана символическая ссылка. Именно она и отвечает за доступ к файлу, запускающему Nginx при старте нового сеанса.






Шаг 3: Разрешение трафика веб-сервера в брандмауэре
Для настройки корректного функционирования установленного только что веб-сервера осталось отредактировать прохождение трафика в межсетевом экране операционной системы. Мы взяли за пример активный по умолчанию брандмауэр, если же вы используете альтернативу, понадобится изменить увиденные далее команды под текущие условия.
- Откройте «Терминал» и введите там
firewall-cmd --zone=public --permanent --add-service=http. - Эту команду тоже следует подтвердить, указав пароль суперпользователя.
- Теперь, когда вы увидели строку «Success», вставьте
firewall-cmd --zone=public --permanent --add-service=httpsи нажмите на Enter. - Осталось только перезагрузить брандмауэр, чтобы все изменения вступили в силу, а осуществляется это через
firewall-cmd --reload. - После появления на экране уведомления «Success» можно закрывать консоль и переходить к использованию веб-сервера.





Только что вы были ознакомлены с пошаговым руководством по инсталляции Nginx в CentOS 7. Как видите, мы не предоставили сведения о глобальной конфигурации, поскольку для всех пользователей они будут особенными и зависят от личных предпочтений. Эту информацию мы предлагаем получить, прочитав официальную документацию по следующей ссылке.
Еще статьи по данной теме:
Помогла ли Вам статья?
Nginx is a free, open-source, high-performance HTTP server. Nginx is known for its stability, rich feature set, simple configuration, and low resource consumption.
This tutorial shows you how to install Nginx on CentOS 7 / RHEL 7 with PHP support (through PHP-FPM) and MariaDB support.
PHP-FPM is an alternative PHP FastCGI implementation, and it has some additional features useful for sites of any size, especially busier sites).
Here is the article about Step by Step installation of CentOS 7 / RHEL 7.
Now you have Linux, and the next is to install Apache, MySQL, and PHP on it. Let’s install one by one.
$ su
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
yum -y install nginx
Start the Nginx service after the installation.
systemctl start nginx
Firewall
firewall-cmd --permanent --add-service=http firewall-cmd --reload
SELinux
If you get any error of SELinux on the Nginx logs, here is the tutorial on setting SELinux policy for Nginx.
setenforce 0
We recommend you to disable the SELinux permanently.
Test Nginx

Auto-start the Nginx service at system startup.
systemctl enable nginx
Install MariaDB
CentOS 7 / RHEL 7 offers MariaDB v5.5 from base OS repository, which is a bit older and going to be EOL soon. You can consider installing MariaDB v10.x or MySQL 8.x for your LEMP stack.
yum -y install mariadb mariadb-server
systemctl start mariadb
Enable the MariaDB to start automatically during system boot.
systemctl enable mariadb
Install PHP
PHP v5.4 (End Of Support)
The PHP version (v5.4) available in the CentOS base repository is already the end of support.
Remi, a third party repository which offers up to date version of PHP (v7.3). To enable the Remi repository, install the Remi repository auto-configuration package.
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Install PHP through PHP-FPM (PHP-FPM (FastCGI Process Manager) using YUM command.
yum install -y --enablerepo=remi-php73 php php-fpm php-mysqlnd php-cli
Edit file,
vi /etc/php-fpm.d/www.conf
Verify PHP-FPM listens on port 9000.
listen = 127.0.0.1:9000
[.More.] pm.min_spare_servers = 5 [.More.] pm.max_spare_servers = 35 [.More.]
Test LEMP Stack
Create Virtual Host
Create the configuration file called and Edit .
vi /etc/nginx/conf.d/virtual.conf
server { server_name ; root ; location / { index index.html index.htm index.php; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; }
}Create host entry for your domain (server.itzgeek.local) in the file.
vi /etc/hosts
Add a host entry like below.
127.0.0.1 localhost.localdomain localhost server.itzgeek.local
Create the document root directory.
mkdir /usr/share/nginx/html/itzgeek.local
Test Virtual host
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/itzgeek.local/index.php
Restart the services and Enable autostart.
systemctl restart nginx systemctl restart php-fpm systemctl enable php-fpm
Now, open up your web browser and type your domain in the address bar:
The page will look like below:

From the above screenshot, PHP is working, and it’s working through FPM/FastCGI, as shown in the Server API line.
If you scroll further down, you will see the MariaDB support information.

Conclusion
That’s All. You have successfully set up LEMP stack on CentOS 7 / RHEL 7. Additionally, you can install phpMyAdmin on CentOS 7 to manage MariaDB / MySQL databases via a web browser.
Я уже писал статью по данной теме, и она формально даже не устарела, если брать все пакеты из официальных репозиториев. Сегодня я настрою производительный веб сервер на свежих версиях nginx, php-fpm, где сам php версии 7.1. Сейчас использовать версию php54, которую предлагает CentOS по-умолчанию, очень странно, поэтому я решил актуализировать статью и все настроить в соответствии с современными реалиями.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный тест.
Данная статья является частью единого цикла статьей про сервер Centos. Если вы хотите использовать более новую версию системы, то читайте как настроить такой же web сервер на CentOS 8.
Введение
В своей тестовой среде я буду использовать следующие сущности.
Подопытным сервером будет выступать виртуальная машина от ihor, характеристики следующие:
Это кастомная настройка параметров. Они не оптимальны по цене, но мне были нужны именно такие.
Установка 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.
[nginx] 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
Проверяем, запустился ли web сервер. Для этого идем по ссылке http://95.169.190.64/. Вы должны увидеть стандартную страницу заглушку.

Если страница не открывается, то скорее всего вы не настроили firewall. Свою статью по его настройке я приводил в самом начале.
Настройка nginx
# mkdir -p /web/sites/hl.zeroxzed.ru/www && mkdir /web/sites/hl.zeroxzed.ru/log # mkdir -p /web/sites/p1m2a.zeroxzed.ru/www && mkdir /web/sites/p1m2a.zeroxzed.ru/log
Создадим конфиги nginx для этих виртуальных хостов. Я сразу буду делать их с учетом https, который мы настроим позже. Так что после создания не надо перезапускать веб сервер и проверять работу — будут ошибки. Виртуальный хост сайта показан на примере wordpress. Конфигурация собрана на основе рекомендаций из официальной документации конкретно для веб сервера nginx.
# mcedit /etc/nginx/conf.d/hl.zeroxzed.ru.conf
server { listen 80; server_name hl.zeroxzed.ru; root /web/sites/hl.zeroxzed.ru/www/; index index.php index.html index.htm; access_log /web/sites/hl.zeroxzed.ru/log/access.log main; error_log /web/sites/hl.zeroxzed.ru/log/error.log; location / { return 301 https://hl.zeroxzed.ru$request_uri; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ { return 301 https://hl.zeroxzed.ru$request_uri; } location ~ \.php$ { return 301 https://hl.zeroxzed.ru$request_uri; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { rewrite ^ /robots.txt break; allow all; log_not_found off; access_log off; } location ~ /\.ht { deny all; }
}
server { listen 80; server_name www.hl.zeroxzed.ru; rewrite ^ https://hl.zeroxzed.ru$request_uri? permanent;
}
server { listen 443 ssl http2; server_name hl.zeroxzed.ru; root /web/sites/hl.zeroxzed.ru/www/; index index.php index.html index.htm; access_log /web/sites/hl.zeroxzed.ru/log/ssl-access.log main; error_log /web/sites/hl.zeroxzed.ru/log/ssl-error.log; keepalive_timeout 60; ssl_certificate /etc/letsencrypt/live/hl.zeroxzed.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hl.zeroxzed.ru/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security 'max-age=604800'; location / { try_files $uri $uri/ /index.php?$args; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ { access_log off; expires max; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/hl.zeroxzed.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/hl.zeroxzed.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/hl.zeroxzed.ru/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param HTTPS on; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\.ht { deny all; }
}
server { listen 443 ssl http2; server_name www.hl.zeroxzed.ru; rewrite ^ https://hl.zeroxzed.ru$request_uri? permanent;
}В данной конфигурации настроены все необходимые редиректы, при этом отключен редирект файла robots.txt. Он отдельно отдается по http и https. Это требуется для яндекса во время перехода с http на https и склейки зеркал.
# mcedit /etc/nginx/conf.d/p1m2a.zeroxzed.ru.conf
server { listen 443 ssl http2; server_name p1m2a.zeroxzed.ru; root /web/sites/p1m2a.zeroxzed.ru/www/; index index.php index.html index.htm; access_log /web/sites/p1m2a.zeroxzed.ru/log/ssl-access.log main; error_log /web/sites/p1m2a.zeroxzed.ru/log/ssl-error.log; keepalive_timeout 60; ssl_certificate /etc/letsencrypt/live/p1m2a.zeroxzed.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/p1m2a.zeroxzed.ru/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security 'max-age=604800'; location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/p1m2a.zeroxzed.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/p1m2a.zeroxzed.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/p1m2a.zeroxzed.ru/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; }
}
server { listen 443 ssl http2; server_name www.p1m2a.zeroxzed.ru; rewrite ^ https://p1m2a.zeroxzed.ru$request_uri? permanent;
}
server { listen 80; server_name p1m2a.zeroxzed.ru; root /web/sites/p1m2a.zeroxzed.ru/www/; index index.php index.html index.htm; access_log /web/sites/p1m2a.zeroxzed.ru/log/access.log main; error_log /web/sites/p1m2a.zeroxzed.ru/log/error.log; location / { return 301 https://p1m2a.zeroxzed.ru$request_uri; try_files $uri $uri/ /index.php?$args; }
}Сохраняем конфиги виртуальных хостов nginx и продолжаем настройку производительного веб сервера. Более подробно о настройке Nginx читайте в отдельной статье, которая полностью посвящена только ему.
Установка php-fpm 7
Установка и настройка 7-й версии php на centos не очень простая задача. Ранее я уже рассказывал как обновить php до 7-й версии, но в итоге откатился назад. Прошло прилично времени и откатываться уже не будем, так как большинство проблем исправлены.
То же самое будет и с другими пакетами. К примеру, zabbix без плясок с бубнами скорее всего не встанет. В сторонних репозиториях есть еще одна проблема. Иногда они закрываются. И это станет для вас большой проблемой на боевом сервере. Так что к выбору репозитория нужно подходить очень аккуратно и внимательно. Я до сих пор иногда встречаю настроенные сервера centos 5 с очень популярным в прошлом репозиторием centos.alt.ru, который закрылся. Сейчас это уже не так актуально, так как таких серверов осталось мало, но некоторое время назад мне это доставляло серьезные неудобства.
Подключаем remi репозиторий для centos 7.
# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Я получил ошибку:
Retrieving http://rpms.remirepo.net/enterprise/remi-release-7.rpm warning: /var/tmp/rpm-tmp.nwcDV1: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY error: Failed dependencies: epel-release = 7 is needed by remi-release-7.3-2.el7.remi.noarch
Тут все понятно, нужен репозиторий epel. Те, кто готовили сервер по моей статье по базовой настройке сервера его уже подключили, а те кто не делали этого, подключают сейчас:
# yum install epel-release
После этого повторяем установку remi, все должно пройти нормально. Проверим список подключенных репозиториев.
# yum repolist

У меня такая картинка получилась.
Активируем репу remi-php71, для этого выполняем команду:
# yum-config-manager --enable remi-php71
Если получаете ошибку:
bash: yum-config-manager: command not found
то установите пакет yum-utils.
# yum install yum-utils
Теперь устанавливаем php7.1.
# yum install php71

Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip

Запускаем php-fpm и добавляем в автозагрузку.
# systemctl start php-fpm # systemctl enable php-fpm
Проверяем, запустился ли он.
# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9084/php-fpm: maste
Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:
;listen = 127.0.0.1:9000
Вместо нее добавляем несколько других:
listen = /var/run/php-fpm/php-fpm.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx
Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx.
user = nginx group = nginx
# systemctl restart php-fpm
Проверяем, стартовал ли указанный сокет.
# ll /var/run/php-fpm/php-fpm.sock srw-rw----. 1 nginx nginx 0 Oct 26 18:08 /var/run/php-fpm/php-fpm.sock
На текущий момент с настройкой php-fpm закончили, двигаемся дальше.
Для того, чтобы проверить работу нашего веб сервера, нужно установить ssl сертификаты. Без них nginx с текущим конфигом не запустится. Исправляем это.
Настройка бесплатного ssl сертификата Lets Encrypt
Устанавливаем пакет certbot для получения бесплатного ssl сертификата от let’s encrypt.
# yum install certbot
Запускаем программу для генерации сертификата.
# certbot certonly
Вам в консоли будут заданы несколько вопросов. Вот мои ответы, необходимые для успешного получения сертификата. Первый раз мы получим сертификаты, используя временный веб сервер самого certbot, так как наш еще не работает. Далее обновлять сертификаты будем в автоматическом режиме с помощью временной директории в корне виртуального хоста.
# certbot certonly Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? ------------------------------------------------------------------------------- 1: Spin up a temporary webserver (standalone) 2: Place files in webroot directory (webroot) ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): zeroxzed@gmail.com Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: A ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: N Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): hl.zeroxzed.ru Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for hl.zeroxzed.ru Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/hl.zeroxzed.ru/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/hl.zeroxzed.ru/privkey.pem Your cert will expire on 2018-01-24. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Для успешного создания бесплатных ssl сертификатов от lets encrypt у вас должны быть корректно настроены DNS записи для доменов, на которые выпускаются сертификаты.
Итак, сертификаты получили. Теперь можно проверить конфигурацию nginx и запустить его. Проверяем конфиг:
# nginx -t
Если получаете ошибку:
nginx: [emerg] BIO_new_file("/etc/ssl/certs/dhparam.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/ssl/certs/dhparam.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failedТо генерируете необходимый ключ:
# openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Генерация будет длиться долго (у меня 20 минут длилось на двух ядрах). Снова проверяйте конфигурацию. Если ошибок нет, то перезапустим nginx.
# systemctl restart nginx
Настройка nginx на этом завершена. Он должен корректно запуститься и работать в рабочем режиме.
Теперь сделаем так, чтобы сертификаты автоматически обновлялись перед истечением срока действия. Для этого необходимо изменить конфигурации доменов. Они располагаются в директории /etc/letsencrypt/renewal. Так как мы генерировали сертификаты с помощью временного веб сервера, наш текущий конфиг hl.zeroxzed.ru.conf выглядит вот так:
# renew_before_expiry = 30 days version = 0.18.1 archive_dir = /etc/letsencrypt/archive/hl.zeroxzed.ru cert = /etc/letsencrypt/live/hl.zeroxzed.ru/cert.pem privkey = /etc/letsencrypt/live/hl.zeroxzed.ru/privkey.pem chain = /etc/letsencrypt/live/hl.zeroxzed.ru/chain.pem fullchain = /etc/letsencrypt/live/hl.zeroxzed.ru/fullchain.pem # Options used in the renewal process [renewalparams] authenticator = standalone installer = None account = e9c86e6aa57b45f9614bc7c0015927a5
Приводим его к следующему виду:
# renew_before_expiry = 30 days version = 0.18.1 archive_dir = /etc/letsencrypt/archive/hl.zeroxzed.ru cert = /etc/letsencrypt/live/hl.zeroxzed.ru/cert.pem privkey = /etc/letsencrypt/live/hl.zeroxzed.ru/privkey.pem chain = /etc/letsencrypt/live/hl.zeroxzed.ru/chain.pem fullchain = /etc/letsencrypt/live/hl.zeroxzed.ru/fullchain.pem # Options used in the renewal process [renewalparams] authenticator = webrootinstaller = None account = e9c86e6aa57b45f9614bc7c0015927a5post_hook = nginx -s reload[[webroot_map]]www.hl.zeroxzed.ru = /web/sites/hl.zeroxzed.ru/wwwhl.zeroxzed.ru = /web/sites/hl.zeroxzed.ru/www
По аналогии делаете с остальными виртуальными хостами, для которых используете бесплатные сертификаты let’s encrypt. Осталось дело за малым — настроить автоматический выпуск новых ssl сертификатов, взамен просроченным. Для этого добавляем в /etc/crontab следующую строку:
# Cert Renewal 30 2 * * * root /usr/bin/certbot renew --post-hook "nginx -s reload" >> /var/log/le-renew.log
Все, с сертификатами закончили. Двигаемся дальше в настройке web сервера.
Установка mariadb 10 на CentOS 7
Дошла очередь до установки сервера баз данных для web сервера на CentOS 7 — MariaDB. По аналогии с другим софтом, в официальном репозитории очень старая версия mariadb — 5.5. Я же буду устанавливать последнюю стабильную версию на момент написания статьи — 10.2.
Для того, чтобы подключить репозиторий MariaDB, можно воспользоваться специальной страницей на официальном сайте, где можно задать параметры системы и получить конфиг репозитория.
В моем случае конфиг получился следующий.
# cat /etc/yum.repos.d/mariadb.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Устанавливаем последнюю версию mariadb на centos.
# yum install MariaDB-server MariaDB-client

Убедитесь, что база данных ставится из нужного репозитория.
Запускаем mariadb и добавляем в автозагрузку.
# systemctl start mariadb # systemctl enable mariadb
Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.
# /usr/bin/mysql_secure_installation
Установка phpmyadmin
# yum install phpmyadmin

# rm -df /web/sites/p1m2a.zeroxzed.ru/www # ln -s /usr/share/phpMyAdmin /web/sites/p1m2a.zeroxzed.ru/www
# chown nginx:nginx /var/lib/php/session/
Доступ к сайту по sftp
Настройка сервера почти завершена. Если вы администратор и единственный пользователь, то больше можно ничего не делать. Вы и так сможете загрузить на сервер все что нужно тем или иным способом. Если же вы будете передавать управление сайтами другим людям, им нужен доступ к директории с исходниками сайта. Раньше для этих целей повсеместно использовали ftp. Если вы хотите так сделать, у меня есть статья по настройке ftp сервера vsftpd.
Я же предлагаю использовать sftp по нескольким причинам:
- Он безопаснее.
- Его быстрее настроить.
- Не надо отдельно настраивать 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. Но тут возникает много нюансов с правами к файлам и директориям. Дальше я расскажу, как их аккуратно и грамотно разрулить, чтобы у нас не было проблем с дальнейшей работой сайтов от разных пользователей.
Работа с сайтами разных пользователей на одном веб сервере
Самый простой способ решить проблему с правами доступа, это сделать владельцем папки с сайтом пользователя, который подключается по sftp. Тогда он сможет нормально работать с файлами, загружать и удалять их. Если доступ в качестве группы установить для nginx, то в целом все будет работать. Для каких-то сайтов такой вариант может оказаться подходящим. То есть сделать надо вот так:
# chown -R hl.zeroxzed.ru:nginx /web/sites/hl.zeroxzed.ru/ # chmod -R 0775 /web/sites/hl.zeroxzed.ru/
Но при такой схеме будут проблемы с движками сайтов, которые автоматом что-то к себе загружают. Какие-то галереи не будут работать. К примеру, wordpress не сможет автоматически загружать плагины, будет просить доступ к ftp. В общем, могут возникнуть некоторые неудобства. Сейчас мы их исправим.
Еще обращаю внимание на один нюанс. Chroot доступ для sftp не будет работать, если владельцем директории, куда чрутимся, будет не root. Только что мы сделали владельцем каталога с сайтом и всего, что внутри него пользователя hl.zeroxzed.ru. Теперь надо вернуть обратно владельцем исходного каталога рута, а все, что внутри него остается как мы и хотим — будет принадлежать hl.zeroxzed.ru.
# chown root:root /web/sites/hl.zeroxzed.ru/ # chmod 0755 /web/sites/hl.zeroxzed.ru/
А теперь сделаем все красиво. Назначаем владельцем содержимого нашего сайта только отдельного пользователя.
# chown -R hl.zeroxzed.ru:hl.zeroxzed.ru /web/sites/hl.zeroxzed.ru/
Возвращаем обратно рута владельцем корня chroot.
# chown root:root /web/sites/hl.zeroxzed.ru/ # chmod 0755 /web/sites/hl.zeroxzed.ru/
Обращаю внимание, что сначала мы рекурсивно назначаем права на все содержимое директорий, а потом возвращаем владельца root только на корень.
Добавляем пользователя nginx в группу hl.zeroxzed.ru.
# usermod -aG hl.zeroxzed.ru nginx
Создаем отдельный pool для php-fpm, который будет обслуживать сайт hl.zeroxzed.ru и будет запускаться от этого пользователя. Для этого копируем существующий конфиг /etc/php-fpm.d/www.conf и изменяем в нем несколько строк.
# cd /etc/php-fpm.d && cp www.conf hl.zeroxzed.ru.conf
[hl.zeroxzed.ru] user = hl.zeroxzed.ru group = hl.zeroxzed.ru listen = /var/run/php-fpm/hl.zeroxzed.ru.sock listen.owner = hl.zeroxzed.ru listen.group = hl.zeroxzed.ru
Мы поменяли название пула, запустили его от отдельного пользователя и назначили ему отдельный сокет. Теперь идем в настройки этого виртуального хоста в nginx — /etc/nginx/conf.d/hl.zeroxzed.ru.conf и везде меняем старое значение сокета
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass unix:/var/run/php-fpm/hl.zeroxzed.ru.sock;
Перезапускаем nginx и php-fpm и проверяем работу сайта от отдельного пользователя.
# systemctl restart nginx # systemctl restart php-fpm
Я рекомендую подключиться по sftp, закинуть исходники wordpress, установить его и добавить новую тему, чтобы проверить, что все корректно работает. По аналогии проделанные выше действия повторяются для всех остальных сайтов.
Ротация логов виртуальных хостов
Последний штрих в настройке 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
}Я предлагаю ротировать файлы логов по достижению ими размера в 1Мб, сжимать после ротации и хранить 10 архивов с логом. Для виртуальных хостов, работающих от отдельного пользователя, новые логи создаются сразу с соответствующими правами, чтобы у пользователя был доступ к ним. Для всех остальных хостов можно использовать самое первое правило, просто добавляя туда новые пути для логов.
Это просто пример конфигурации. Все параметры вы можете поменять по своему усмотрению. Примеров конфигурации logrotate в интернете много.
На этом все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки производительного web сервера на основе nginx и php-fpm последних версий. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.
Заключение
Тема настройки веб сервера обширна. Рассмотреть все варианты в одной статье невозможно, так как функционал будет разниться, в зависимости от назначения сервера. Тем не менее приведу еще несколько ссылок на материалы, которые имеют отношение к настройке web сервера:
- Полный бэкап сервера или отдельных сайтов.
- Мониторинг веб сервера и веб сайта с помощью zabbix.
- Защита админки wordpress с помощью fail2ban.
- Если у вас будут проблемы с ботами, то пригодится статья по блокировке доступа к сайту по странам.
Если еще что-то полезное вспомню, добавлю ссылки. Пока вроде все. Жду комментариев и отзывов. Написал все по своему опыту, как я обычно настраиваю веб сервера. Возможно что-то можно сделать более удобно и правильно.
Эта статья будет первой из цикла статей по настройке современного веб сервера. Далее мы будем защищать web сервер и готовить его к максимальным нагрузкам.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите подробнее программу по ссылке.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

