SSH

Настройки удаленных подключений

HTTP-редиректы в Nginx
Полное руководство по настройке переадресаций в Nginx.
SWAP в Linux
Руководство по созданию и настройке SWAP раздела на Linux.
Заглушка сайта
Как убрать заглушку на сайте
Защита SSH средствами iptables
Примеры использования iptables для защиты SSH-доступа.
Защита от сканирования портов с помощью Iptables
Использование пользовательских цепочек для ограничения доступа к сервисам.
Защита папок от выполнения сторонних скриптов
Как запретить выполнение PHP в уязвимых директориях сайта.
Импорт и экспорт базы данных MySQL через SSH
Как загрузить и выгрузить базу данных с помощью терминальных команд.
Использование robots.txt
Как настроить индексирование сайта с помощью файла robots.txt.
Как добавить публичный SSH-ключ на сервер
Пошаговая инструкция по добавлению публичного SSH-ключа для подключения на сервер.
Как работать в консоли с альтернативными версиями PHP
Как использовать альтернативные версии PHP в консоли
Как узнать версию PHP и другого ПО по SSH
Проверка версий установленных сервисов на VPS и выделенном сервере.
Кэширование в Nginx
Как настроить кэширование страниц для ускорения сайта и снижения нагрузки.
Лимит на загрузку файлов
Как отредактировать php.ini, чтобы увеличить лимит загрузки файлов.
Настройка аутентификации по SSH-ключу на сервере
Руководство по созданию и управлению SSH-ключами для безопасного входа на сервер.
Настройка кэширования и сжатия статических файлов в Nginx
Как ускорить загрузку сайта и снизить нагрузку на сервер.
Обработка PHP в HTML-файлах
Как включить выполнение PHP-кода в файлах с расширением .html и .htm.
Ограничение доступа к сайту через Nginx
Как настроить фильтрацию по IP, парольную защиту и блокировку нежелательных запросов.
Основные команды Linux
Полезный справочник по самым нужным командам в консоли.
Ошибка 500 в режиме suPHP: права на файлы и папки (chmod)
Что такое Internal Server Error в режиме suPHP и как правильно настроить права доступа.
Ошибки Nginx и как их исправить
Как исправить ошибки Nginx: 502, 504, 413.
Первоначальная настройка сервера c Ubuntu 16.04
Руководство по начальной настройке безопасности и удобства использования вашего сервера
Подключение к VPS или выделенному серверу по SSH в Windows
Инструкция по использованию PuTTY для подключения к серверу по SSH в Windows.
Подключение к VPS или выделенному серверу по SSH на macOS
Инструкция по использованию встроенного SSH-клиента на macOS.
Проксирование портов с помощью Rinetd
Перенаправления TCP-трафика на VPS и выделенных серверах.
Путь к исполняемому файлу
Как найти полный путь к исполняемому файлу на сервере.
Редирект с помощью .htaccess
Руководство по настройке перенаправлений с помощью конфигурационного файла .htaccess.
Режимы работы интерпретатора PHP
Сравнение режимов запуска PHP-скриптов: mod_php, CGI, FastCGI и LSPHP.
Смена пароля root в MySQL
Пошаговое руководство по изменению и сбросу пароля root-пользователя MySQL.
Создание FTP-учётной записи по SSH
Руководство по настройке отдельного FTP-пользователя на сервере.
Управление логами с помощью logrotate на CentOS 7
Настройка logrotate для контроля над системными и прикладными журналами.
Управление логами с помощью logrotate на Debian 9
Настройка logrotate для управления системными и прикладными журналами.
Управление логами с помощью logrotate на Ubuntu 16.04
Настройка logrotate для управления системными и прикладными журналами.
Управление почтовой очередью Exim
Как работать с очередью почты, просматривать и удалять сообщения.
Что такое php.ini?
Как создать и использовать собственный файл php.ini на виртуальном хостинге (suPHP).
Что такое SSH?
Описание защищенной оболочки SSH для удаленного управления сервером.
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам
основного сервера добавьте:\r\n```nginx\r\nlocation ~ \\.php$ {\r\n fastcgi_pass unix:/run/php/php8.1-fpm.sock; # или ваш сокет\r\n fastcgi_index index.php;\r\n include fastcgi_params;\r\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n\r\n fastcgi_cache fcgi_cache;\r\n fastcgi_cache_valid 200 301 302 60m; # кэшируем успешные ответы на 60 минут\r\n fastcgi_cache_valid 404 1m;\r\n fastcgi_cache_bypass $http_cookie; # не кэшируем при наличии куки\r\n fastcgi_no_cache $http_cookie; # не сохраняем в кэш при наличии куки\r\n}\r\n```\r\n\r\n### Полезные замечания\r\n- Кэширование не должно применяться к страницам с авторизацией, личным кабинетом, корзиной — используйте `fastcgi_cache_bypass` и `fastcgi_no_cache` для таких URI.\r\n- Для динамических сайтов (Bitrix, WordPress) часто кэшируют только GET-запросы без куки.\r\n- После изменений перезапустите NGINX:\r\n```Bash\r\nsudo nginx -t # проверка конфигурации\r\nsudo systemctl reload nginx\r\n```\r\n\r\n- Очистка кэша вручную (если требуется):\r\n```Bash\r\nsudo rm -rf /var/cache/nginx/*\r\nsudo rm -rf /var/cache/nginx-fcgi/*\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-04T17:19:01+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/91/change/"},{"id":340,"title":"Лимит на загрузку файлов","slug":"download-limit","priority":0,"summary":"Как отредактировать php.ini, чтобы увеличить лимит загрузки файлов.","tags":[{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"По умолчанию на большинстве серверов установлен лимит загрузки файлов в **2 МБ**. Чтобы его увеличить, достаточно создать пользовательский файл `php.ini` в директории `/public_html/`.\r\n\r\n### Изменение лимита загрузки\r\nСоздайте файл `php.ini` в папке `/public_html/` и добавьте в него следующие строки:\r\n\r\n- **`upload_max_filesize`** `= 8M` — максимальный размер одного загружаемого файла\r\n- **`post_max_size`** `= 8M` — максимальный объём данных, передаваемых методом POST\r\n- **`memory_limit`** `= 32M` — максимальный объём оперативной памяти, доступный PHP-скрипту\r\n\r\nЭти значения позволяют загружать файлы размером до **8 МБ**. Если нужно больше — просто замените `8M` на другое значение, например `16M` или `64M`.\r\n\r\n!!! Info Важно\r\n Значение `memory_limit` всегда должно быть больше `post_max_size`, иначе PHP упрётся в лимит памяти раньше, чем в лимит загрузки.\r\n\r\n### Применение настроек ко всему аккаунту\r\nПо умолчанию пользовательский `php.ini` действует только в той директории, где он находится. Чтобы настройки применялись ко всему аккаунту, добавьте следующие строки в **начало** файла `.htaccess` в папке `/public_html/`. Если файл отсутствует — создайте его.\r\n```apache\r\nsuPHP_ConfigPath /home/user/public_html\r\n\r\n\r\norder allow,deny\r\ndeny from all\r\n\r\n```\r\n\r\nЗамените `user` на ваше реальное имя пользователя в cPanel.\r\n\r\nБлок `` также защищает файл `php.ini` от прямого доступа через браузер.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Проверка конфигурации PHP\r\nЧтобы убедиться, что изменения вступили в силу, создайте файл `info.php` в папке `/public_html/` со следующим содержимым:\r\n```php\r\n\r\n```\r\n\r\nЗатем откройте браузер и перейдите по адресу:\r\n```\r\nвашсайт.ru/info.php\r\n```\r\n\r\nВы увидите полную информацию о текущей конфигурации PHP. Найдите нужную директиву — например `memory_limit` или `upload_max_filesize` — и проверьте, что новые значения применились.\r\n\r\n> **Не забудьте удалить `info.php` после проверки** — этот файл раскрывает чувствительную информацию о конфигурации сервера и не должен быть публично доступен.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-26T17:50:45+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/340/change/"},{"id":190,"title":"Настройка аутентификации по SSH-ключу на сервере","slug":"authorization-ssh-key","priority":0,"summary":"Руководство по созданию и управлению SSH-ключами для безопасного входа на сервер.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"Настройка аутентификации по SSH-ключам — самый надёжный способ подключения к [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенному серверу](https://fornex.com/ru/dedicated-servers/). Публичный ключ размещается на сервере, приватный остаётся только у вас на компьютере — это полностью исключает перехват пароля и повышает безопасность.\r\n\r\n- [Отдельная инструкция по подключению на macOS/Linux с помощью SSH](https://fornex.com/ru/help/ssh-to-vps-mac/)\r\n- [Отдельная инструкция по подключению на Windows OC с помощью SSH](https://fornex.com/ru/help/ssh-to-vps/)\r\n\r\n### Генерация пары ключей\r\n1. Откройте терминал на вашем компьютере (macOS/Linux — Терминал, Windows — PowerShell или Git Bash).\r\n2. Выполните команду для создания ключей (рекомендуется современный алгоритм Ed25519):\r\n```bash\r\nssh-keygen -t ed25519 -C \"your_email@example.com\"\r\n```\r\n\r\n!!! info Примечание\r\n Если ваша система не поддерживает Ed25519 (очень старые ОС), используйте RSA: `ssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"`\r\n\r\n3. Программа предложит указать путь сохранения (по умолчанию ~/.ssh/id_ed25519 — нажмите Enter).\r\n4. Введите passphrase (секретную фразу) или оставьте пустой (Enter два раза).\r\n5. Ключи будут созданы в папке `~/.ssh`:\r\n - `id_ed25519` — приватный ключ (никому не передавайте!).\r\n - `id_ed25519.pub` — публичный ключ (его копируем на сервер).\r\n\r\n### Копирование публичного ключа на сервер\r\n1. Подключитесь к серверу по SSH (пока с паролем):\r\n```bash\r\nssh root@ваш_IP\r\n```\r\n\r\n2. Создайте папку `.ssh` (если её нет):\r\n```bash\r\nmkdir -p ~/.ssh\r\nchmod 700 ~/.ssh\r\n```\r\n\r\n3. Добавьте публичный ключ в файл `authorized_keys`:\r\n```bash\r\necho \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com\" >> ~/.ssh/authorized_keys\r\n```\r\n\r\nИли скопируйте ключ одной командой с вашего компьютера (рекомендуется):\r\n```bash\r\nssh-copy-id -i ~/.ssh/id_ed25519.pub root@ваш_IP\r\n```\r\n\r\n### Настройка сервера OpenSSH\r\n1. Откройте конфигурационный файл:\r\n```bash\r\nnano /etc/ssh/sshd_config\r\n```\r\n\r\n2. Убедитесь, что включена авторизация по ключам и отключена по паролю (рекомендуется):\r\n```ini\r\nPubkeyAuthentication yes\r\nAuthorizedKeysFile %h/.ssh/authorized_keys\r\nPasswordAuthentication no\r\n```\r\n\r\n3. Сохраните изменения (Ctrl+O → Enter → Ctrl+X).\r\n4. Установите правильные права на файлы:\r\n```Bash\r\nchmod 600 ~/.ssh/authorized_keys\r\nchmod 700 ~/.ssh\r\nchown root:root ~/.ssh/authorized_keys\r\n```\r\n\r\n5. Перезапустите SSH-сервер:\r\n```Bash\r\nsystemctl restart sshd\r\n```\r\n\r\n### Настройка SSH-клиента (для удобства)\r\n1. Создайте или отредактируйте файл ~/.ssh/config на вашем компьютере:\r\n```ini\r\nHost my-server\r\n HostName ваш_IP\r\n User root\r\n IdentityFile ~/.ssh/id_ed25519\r\n Port 22\r\n```\r\n\r\n2. Установите права:\r\n```Bash\r\nchmod 600 ~/.ssh/config\r\n```\r\n\r\nТеперь подключение упрощается до:\r\n```Bash\r\nssh my-server\r\n```\r\n\r\n### Проверка\r\nПопробуйте подключиться без пароля:\r\n```Bash\r\nssh root@ваш_IP\r\n```\r\n\r\nЕсли вход произошёл без запроса пароля — авторизация по ключу настроена успешно.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-10T14:14:00+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/190/change/"},{"id":90,"title":"Настройка кэширования и сжатия статических файлов в Nginx","slug":"caching-static-files-nginx","priority":0,"summary":"Как ускорить загрузку сайта и снизить нагрузку на сервер.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"Правильная настройка кэширования и сжатия статических файлов (изображения, CSS, JavaScript) позволяет значительно ускорить загрузку страниц, уменьшить потребление трафика и снизить нагрузку на сервер.\r\n\r\nВ этой статье мы разберём два важных механизма Nginx: \r\n- Директиву **expires** (управление временем кэширования в браузере) \r\n- Включение **GZIP-сжатия** для текстовых файлов\r\n\r\n### 1. Настройка кэширования с помощью expires\r\n\r\nДиректива `expires` указывает браузеру, сколько времени файл можно хранить в кэше без повторного запроса к серверу.\r\n\r\nОткройте конфигурационный файл вашего сайта (обычно `/etc/nginx/conf.d/vhost.conf` или аналогичный) и добавьте блок `location` для статических файлов:\r\n\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {\r\n expires 30d; # кэш на 30 дней\r\n add_header Cache-Control \"public\";\r\n access_log off; # отключаем логи для статики (экономия ресурсов)\r\n}\r\n```\r\n\r\n**Рекомендуемые значения** expires:\r\n- Изображения, шрифты, иконки: `30d` или `1y`\r\n- CSS и JavaScript: `7d` — `30d` (если часто меняются — меньше)\r\n- Файлы, которые почти не меняются: `1y`\r\n\r\n### 2. Включение GZIP-сжатия\r\nGZIP значительно уменьшает размер текстовых файлов (HTML, CSS, JS, SVG и др.).\r\nДобавьте следующие строки в блок `server {}` вашего виртуального хоста:\r\n```nginx\r\nserver {\r\n ...\r\n\r\n gzip on;\r\n gzip_disable \"msie6\";\r\n gzip_vary on;\r\n gzip_proxied any;\r\n gzip_comp_level 6; # уровень сжатия (1-9)\r\n gzip_buffers 16 8k;\r\n gzip_http_version 1.1;\r\n gzip_min_length 256;\r\n gzip_types\r\n text/plain\r\n text/css\r\n text/xml\r\n text/javascript\r\n application/javascript\r\n application/json\r\n application/xml\r\n application/rss+xml\r\n image/svg+xml;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 3. Применение настроек для всех сайтов (шаблон)\r\nЕсли вы хотите автоматически применять эти настройки ко всем виртуальным хостам, создайте файл шаблона:\r\n```nginx\r\nsudo nano /usr/local/ispmgr/etc/server.templ\r\n```\r\n\r\nДобавьте в него:\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {\r\n expires 30d;\r\n add_header Cache-Control \"public\";\r\n access_log off;\r\n}\r\n```\r\n\r\nПосле изменения шаблона перезапустите Nginx:\r\n```nginx\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные советы\r\n- После изменения конфигурации всегда проверяйте синтаксис: `sudo nginx -t`\r\n- Для максимальной производительности комбинируйте `expires` с заголовком `Cache-Control: public`.\r\n- Не ставьте слишком большой `expires` (больше года) на часто обновляемые файлы (CSS/JS), иначе пользователи долго не увидят изменения.\r\n- На VPS и выделенных серверах вы можете дополнительно настроить browser caching, FastCGI cache и proxy_cache для ещё большей оптимизации.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-01T16:36:29+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/90/change/"},{"id":261,"title":"Обработка PHP в HTML-файлах","slug":"processing-php-html","priority":0,"summary":"Как включить выполнение PHP-кода в файлах с расширением .html и .htm.","tags":[{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"По умолчанию сервер обрабатывает как PHP только файлы с расширением `.php` и `.phtml`. Если вам нужно, чтобы PHP-код выполнялся и в файлах `.html` или `.htm`, это можно настроить через `.htaccess`.\r\n\r\n### Настройка\r\nОткройте файл `.htaccess` в корневом каталоге сайта или создайте его, если он отсутствует. Добавьте в начало файла следующие строки:\r\n```apache\r\n# php -- BEGIN cPanel-generated handler, do not edit\r\n\r\n AddType application/x-httpd-ea-php70___lsphp .php .php7 .phtml .htm .html\r\n\r\n# php -- END cPanel-generated handler, do not edit\r\n```\r\n\r\nВ этом примере используется PHP **7.0**. Чтобы задать другую версию, замените `ea-php70` на соответствующее значение:\r\n\r\n| Версия PHP | Значение |\r\n|---|---|\r\n| PHP 7.2 | `ea-php72` |\r\n| PHP 7.0 | `ea-php70` |\r\n| PHP 5.6 | `ea-php56` |\r\n| PHP 5.3 | `ea-php53` |\r\n\r\nПример для PHP 5.6:\r\n```apache\r\n# php -- BEGIN cPanel-generated handler, do not edit\r\n\r\n AddType application/x-httpd-ea-php56___lsphp .php .php5 .phtml .htm .html\r\n\r\n# php -- END cPanel-generated handler, do not edit\r\n```\r\n\r\nПосле сохранения файла все документы с расширением `.html` и `.htm` будут обрабатываться сервером как PHP.\r\n\r\n> **Важно:** если вы меняете версию PHP через дашборд или cPanel — настройку необходимо повторить, обновив значение в `.htaccess` в соответствии с новой версией.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-31T15:01:39+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/261/change/"},{"id":69,"title":"Ограничение доступа к сайту через Nginx","slug":"deny-allow-nginx","priority":0,"summary":"Как настроить фильтрацию по IP, парольную защиту и блокировку нежелательных запросов.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером важно контролировать, кто и к каким ресурсам имеет доступ. Nginx предоставляет гибкие инструменты для решения этой задачи: от простой блокировки по IP до комбинированной защиты с аутентификацией.\r\n\r\n!!! Info Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы полностью управляете конфигурацией Nginx и можете применять любые из описанных ниже методов.\r\n\r\n### 1. Ограничение доступа к файлам\r\nЧтобы закрыть доступ к служебным директориям, например `.svn`:\r\n```nginx\r\nlocation ~ /.svn/ {\r\n deny all;\r\n}\r\n```\r\n\r\n### 2. Разграничение доступа по IP\r\nДирективы `allow` и `deny` позволяют задать белый список IP-адресов для конкретного раздела сайта:\r\n```nginx\r\nlocation /server-status {\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n}\r\n```\r\n\r\n### 3. Защита паролем (Basic Auth)\r\nДля закрытых разделов можно включить запрос логина и пароля:\r\n```nginx\r\nlocation /admin/ {\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n### 4. Комбинированная защита: IP + пароль\r\nДиректива `satisfy any` позволяет пропускать пользователя, если он прошёл хотя бы одну проверку — либо по IP, либо по паролю:\r\n```nginx\r\nlocation /admin/ {\r\n satisfy any;\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 5. Защита от запросов к несуществующим файлам\r\nВозвращает `404` при обращении к статическим файлам, которые не существуют на диске:\r\n```nginx\r\nlocation ~ \\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {\r\n try_files $uri =404;\r\n}\r\n```\r\n\r\n### 6. Перенаправление по IP\r\nNginx может выполнять редирект в зависимости от IP-адреса посетителя:\r\n```nginx\r\nlocation / {\r\n if ($remote_addr != 111.111.111.111) {\r\n return 301 https://$host$request_uri;\r\n }\r\n}\r\n```\r\n\r\n> Все посетители, кроме запросов с IP `111.111.111.111`, будут перенаправлены на `https://$host$request_uri`.\r\n\r\n### 7. Защита от перебора с помощью iptables\r\nЕсли количество запросов с одного IP превышает допустимый порог, iptables временно блокирует его:\r\n```bash\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --set\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --update --seconds 120 \\\r\n --hitcount 360 -j DROP\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT\r\n```\r\n\r\n> В данном примере блокируются IP-адреса, с которых поступило более 360 новых соединений за 120 секунд.\r\n\r\n### Применение изменений\r\nПосле редактирования конфигурации Nginx необходимо выполнить перезагрузку:\r\n```bash\r\nsystemctl reload nginx\r\n# или\r\nservice nginx reload\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-23T12:00:00+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/69/change/"},{"id":101,"title":"Основные команды Linux","slug":"linux-commands","priority":0,"summary":"Полезный справочник по самым нужным командам в консоли.","tags":[{"id":1,"name":"Основы","slug":"basics","icon":null},{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null}],"body":"Статья содержит наиболее часто используемые команды Linux, которые помогут вам быстро и эффективно работать с сервером.\r\n\r\n### Системная информация\r\n\r\n```bash\r\nuname -r # версия ядра Linux\r\nuname -a # подробная информация о системе\r\narch # архитектура процессора\r\ncat /proc/cpuinfo # информация о процессоре\r\ncat /proc/meminfo # информация об оперативной памяти\r\ncat /proc/swaps # информация о swap\r\nfree -h # использование памяти (удобный формат)\r\ndf -h # использование дискового пространства\r\nlsblk # список дисков и разделов\r\ndmidecode -q # информация об аппаратных компонентах\r\nlspci -tv # PCI-устройства в виде дерева\r\nlsusb -tv # USB-устройства в виде дерева\r\ndate # текущая дата и время\r\n```\r\n\r\n### Перезагрузка и выключение\r\n\r\n```bash\r\nreboot # перезагрузить систему\r\nshutdown -h now # выключить сервер\r\nshutdown -r now # перезагрузить сервер\r\nshutdown -h 22:00 # выключить в 22:00\r\nshutdown -c # отменить запланированное выключение\r\n```\r\n\r\n### Работа с файлами и директориями\r\n\r\n```bash\r\npwd # показать текущую директорию\r\nls # содержимое текущей директории\r\nls -la # показать все файлы, включая скрытые\r\nls -lh # показать размеры файлов в удобном формате\r\ncd /path/to/dir # перейти в указанную директорию\r\ncd .. # перейти на уровень выше\r\ncd ~ # перейти в домашнюю директорию\r\ncd - # вернуться в предыдущую директорию\r\n\r\nmkdir folder # создать директорию\r\nmkdir -p /path/to/folder # создать директорию с промежуточными папками\r\n\r\ncp file1 file2 # копировать файл\r\ncp -r dir1 dir2 # копировать директорию рекурсивно\r\n\r\nmv file1 file2 # переименовать или переместить\r\nrm file # удалить файл\r\nrm -rf folder # удалить директорию и всё её содержимое (осторожно!)\r\n\r\nln -s file link # создать символическую ссылку\r\n```\r\n\r\n### Поиск файлов и содержимого\r\n\r\n```bash\r\nfind / -name filename # поиск файла по имени\r\nfind /var/www -name \"*.php\" # поиск всех php-файлов в директории\r\n\r\ngrep \"text\" file # поиск строки в файле\r\ngrep -r \"text\" /path # рекурсивный поиск по всем файлам в директории\r\n\r\nlocate filename # быстрый поиск по базе (обновляется командой updatedb)\r\nwhereis command # поиск исполняемого файла, исходников и документации\r\nwhich command # путь к исполняемому файлу\r\n```\r\n\r\n### Работа с дисками и файловыми системами\r\n\r\n```bash\r\ndf -h # использование дисков\r\ndu -sh /path # размер директории\r\nlsblk # список дисков и разделов\r\nmount # список смонтированных файловых систем\r\numount /dev/sda1 # размонтировать раздел\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Пользователи и группы\r\n\r\n```bash\r\nwhoami # текущий пользователь\r\nid # информация о текущем пользователе\r\ncat /etc/passwd # список всех пользователей\r\ncat /etc/group # список всех групп\r\n\r\nuseradd username # создать пользователя\r\npasswd username # задать пароль\r\nuserdel -r username # удалить пользователя и его домашнюю директорию\r\n\r\ngroupadd groupname # создать группу\r\nusermod -aG group username # добавить пользователя в группу\r\n```\r\n\r\n### Сеть\r\n\r\n```bash\r\nip addr # информация о сетевых интерфейсах\r\nip route # таблица маршрутизации\r\nping host # проверка доступности\r\ncurl -I domain.com # проверка заголовков HTTP\r\nwget url # скачать файл\r\nnetstat -tuln # активные соединения и слушающие порты\r\nss -tuln # современная альтернатива netstat\r\n```\r\n\r\n### Полезные советы\r\n- Используйте `man команда` или `команда --help`, чтобы получить справку по любой команде.\r\n- Для просмотра длинного вывода используйте `| less` или `| more`.\r\n- Многие команды можно комбинировать через пайп (`|`).\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-14T17:49:45+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/101/change/"},{"id":201,"title":"Ошибка 500 в режиме suPHP: права на файлы и папки (chmod)","slug":"error500-suphp-chmod","priority":0,"summary":"Что такое Internal Server Error в режиме suPHP и как правильно настроить права доступа.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"**500 Internal Server Error** — код статуса HTTP, означающий, что сервер работает, но столкнулся с критической ошибкой, которая не позволяет обработать запрос.\r\n\r\n### Зачем нужен suPHP\r\nВ стандартном режиме **mod_php** Apache всегда работает от одного общего пользователя — `nobody`. Это небезопасно: неправильно настроенные права доступа могут позволить другим пользователям на том же сервере читать или даже изменять ваши файлы. Вдобавок, когда скрипты создают или изменяют файлы от имени `nobody`, эти файлы становится невозможно удалить или отредактировать через FTP.\r\n\r\n**suPHP** решает обе проблемы, запуская каждый процесс от имени реального владельца аккаунта. Ваши файлы остаются вашими.\r\n\r\n### Правильные права доступа\r\n| Права | Применяется к | Значение |\r\n|---|---|---|\r\n| `644` | Файлы | Владелец может писать, остальные — только читать (по умолчанию) |\r\n| `444` | Файлы | Только чтение для всех, включая собственные скрипты |\r\n| `755` | Папки | Стандартные права для папок (по умолчанию, менять не нужно) |\r\n\r\nНесколько важных правил:\r\n\r\n- **`755`** должны быть установлены на папку `/public_html/ваш_домен`\r\n- **Никогда не меняйте права** на системные папки и файлы: `stats`, `logs`, `.htpasswd` и директорию `/domains`\r\n- Все изменения прав должны касаться только `/public_html/ваш_домен` и её содержимого\r\n- **Никогда не выставляйте `666` или `777`** на файлы и папки — скрипты с такими правами работать не будут, а безопасность вашего аккаунта окажется под угрозой\r\n\r\n!!! Info Примечание\r\n При правах `644` запись в файлы разрешена только скриптам, работающим в рамках вашего аккаунта. Никто другой записать ничего не сможет. Для дополнительной защиты можно установить `444` — тогда даже ваши собственные скрипты не смогут изменять файлы, хотя это необязательно.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Частые причины ошибки 500 Internal Server Error\r\nВ режиме suPHP ошибка 500 почти всегда означает, что сервер заблокировал выполнение скрипта по одной из следующих причин:\r\n\r\n- На файл установлены права, отличные от `644` или `444` — например, `666`\r\n- На папку установлены права, отличные от `755` — например, `777`\r\n- В файле `.htaccess` присутствуют директивы, которые suPHP не поддерживает\r\n\r\n### Неподдерживаемые директивы .htaccess в режиме suPHP\r\nsuPHP **не поддерживает** PHP-директивы внутри `.htaccess`, в том числе `php_flag`, `php_admin_flag`, `php_value` и подобные. Если ваш `.htaccess` содержит что-то вроде:\r\n```apache\r\nphp_flag register_globals On\r\n```\r\n\r\nили даже просто:\r\n```apache\r\ndisplay_errors Off\r\n```\r\n\r\nСервер немедленно вернёт **500 Internal Server Error**. Удалите эти строки и настройте параметры PHP через пользовательский файл `php.ini`.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-27T17:52:23+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/201/change/"},{"id":87,"title":"Ошибки Nginx и как их исправить","slug":"nginx-errors","priority":0,"summary":"Как исправить ошибки Nginx: 502, 504, 413.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером Nginx иногда возникают ошибки, которые мешают корректной работе сайта. В этой статье мы разберём наиболее распространённые из них: **502 Bad Gateway**, **504 Gateway Time-out** и **413 Request Entity Too Large**, и покажем, как их устранять на [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенных серверах](https://fornex.com/ru/dedicated-servers/).\r\n\r\n### 502 Bad Gateway\r\n**Что значит**: Nginx не может получить ответ от бэкенда (PHP-FPM, Apache, Node.js, uWSGI и т.д.). \r\n**Самые частые причины**:\r\n- Сервис бэкенда выключен или упал\r\n- Неправильный путь к сокету или порт в конфиге\r\n- Проблемы с правами доступа к сокету\r\n- Недостаточно памяти/процессов у PHP-FPM\r\n\r\n**Как исправить**:\r\n1. Проверьте статус PHP-FPM (или другого бэкенда):\r\n```bash\r\nsudo systemctl status php-fpm\r\n# или для конкретной версии\r\nsudo systemctl status php8.1-fpm\r\n```\r\n\r\n2. Перезапустите сервис:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n# или php8.1-fpm\r\n```\r\n\r\n3. Проверьте путь к сокету в конфиге Nginx и PHP-FPM:\r\n - Nginx: `fastcgi_pass unix:/run/php/php8.1-fpm.sock;`\r\n - PHP-FPM (/etc/php/8.1/fpm/pool.d/www.conf): `listen = /run/php/php8.1-fpm.sock`\r\n\r\n4. Убедитесь в правильных правах:\r\n```bash\r\nsudo chown www-data:www-data /run/php/php8.1-fpm.sock\r\nsudo chmod 660 /run/php/php8.1-fpm.sock\r\n```\r\n\r\n5. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n### 504 Gateway Time-out\r\n**Что значит**: Nginx ждал ответа от бэкенда слишком долго и прервал соединение. \r\n**Самые частые причины**:\r\n- Долгая обработка PHP-скрипта\r\n- Медленная база данных\r\n- Большая загрузка сервера\r\n\r\n**Как исправить**:\r\n1. Увеличьте таймауты в конфиге сайта (в блоке server или location):\r\n```nginx\r\nproxy_connect_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nfastcgi_read_timeout 300s; # для PHP\r\n```\r\n\r\n2. Оптимизируйте PHP-FPM (в `/etc/php/8.1/fpm/pool.d/www.conf`):\r\n```ini\r\npm.max_children = 50 # увеличьте по необходимости\r\npm.start_servers = 10\r\npm.min_spare_servers = 5\r\npm.max_spare_servers = 20\r\nrequest_terminate_timeout = 300\r\n```\r\n\r\n3. Перезапустите сервисы:\r\n```bash\r\nsudo systemctl restart php-fpm\r\nsudo systemctl reload nginx\r\n```\r\n\r\n4. Если проблема в конкретном скрипте — оптимизируйте запросы к БД или кэшируйте тяжёлые страницы.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 413 Request Entity Too Large\r\n**Что значит**: Клиент пытается загрузить файл больше лимита, установленного в Nginx. По умолчанию — 1 МБ. \r\n**Причины**: загрузка больших файлов (фото, видео, бэкапы, архивы).\r\n\r\n**Как исправить**:\r\n1. В конфиге сайта (или в `/etc/nginx/nginx.conf` в блоке http) увеличьте лимит:\r\n```nginx\r\nclient_max_body_size 64M; # или 128M, 512M, 1G и т.д.\r\n```\r\n\r\n2. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n3. Для PHP также увеличьте лимиты в php.ini (`/etc/php/8.1/fpm/php.ini`):\r\n```ini\r\nupload_max_filesize = 64M\r\npost_max_size = 64M\r\n```\r\n\r\nПерезапустите PHP-FPM:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n```\r\n\r\n### Как перезагрузить Nginx правильно\r\n- Проверка конфигурации (всегда перед перезапуском):\r\n```bash\r\nsudo nginx -t\r\n```\r\n\r\n- Плавная перезагрузка (без прерывания соединений):\r\n```bash\r\nsudo systemctl reload nginx\r\n```\r\n\r\nили\r\n```bash\r\nsudo nginx -s reload\r\n```\r\n\r\nПолный перезапуск (если reload не помог):\r\n```bash\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные замечания\r\n- Всегда делайте бэкап конфигов перед изменениями: `sudo cp /etc/nginx/nginx.conf` `/etc/nginx/nginx.conf.bak`\r\n- После любых изменений проверяйте логи: `/var/log/nginx/error.log` и `/var/log/nginx/access.log`\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-04T17:18:27+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/87/change/"},{"id":549,"title":"Первоначальная настройка сервера c Ubuntu 16.04","slug":"initial-setup-ubuntu-16-04","priority":0,"summary":"Руководство по начальной настройке безопасности и удобства использования вашего сервера","tags":[],"body":"Чтобы выполнить вход на ваш сервер, вам необходимо знать публичный IP-адрес сервера. Вам также потребуется пароль учетной записи пользователя **root**.\r\nДанные для доступа, вы найдете в Биллинге:\r\n\r\n![file](/media/article/img/Снимок_экрана_2020-04-24_в_15.18.38.png)\r\n\r\nДля входа используйте команду:\r\n```.shell\r\nssh root@IP_адрес_сервера\r\n```\r\nЗавершите процесс входа, приняв предупреждение о подлинности хоста (host authenticity), если оно возникнет, а затем идентифицируя себя как **root** пользователя.\r\nПользователь **root** является администратором в среде Linux и имеет очень широкий набор привилегий (прав).\r\n\r\nВыполнив вход с помощью учетной записи **root-пользователя** вы можете создать новую учетную запись, которую можно будет использовать для входа на сервер в дальнейшем.\r\n\r\n```.shell\r\nadduser имя пользователя\r\n```\r\n```.shell\r\nroot@kvmde67-19464:~# adduser test\r\nAdding user `test' ...\r\nAdding new group `test' (1001) ...\r\nAdding new user `test' (1001) with group `test' ...\r\nCreating home directory `/home/test' ...\r\nCopying files from `/etc/skel' ...\r\nEnter new UNIX password: \r\nRetype new UNIX password: \r\npasswd: password updated successfully\r\nChanging the user information for test\r\nEnter the new value, or press ENTER for the default\r\n\tFull Name []: \r\n\tRoom Number []: \r\n\tWork Phone []: \r\n\tHome Phone []: \r\n\tOther []: \r\nIs the information correct? [Y/n] y\r\n```\r\nПосле ввода команды вы увидите несколько вопросов, первым из которых будет пароль для новой учетной записи.\r\n\r\nУкажите надёжный пароль и, по желанию, заполните дополнительную информацию. Вводить дополнительную информацию не обязательно, вы можете нажать **ENTER** в любом поле, которое хотите пропустить.\r\n\r\nТеперь у нас есть новая учетная запись со стандартными привилегиями. Однако иногда нам может потребоваться выполнять задачи с привилегиями администратора.\r\n\r\nВо избежание необходимости выхода из-под учетной записи обычного пользователя и входа с учетной записью root-пользователя, мы можем настроить возможность использования режима так называемого “супер-пользователя”, в котором наша обычная учетная запись временно получает привилегии root-пользователя. Это позволит нашему обычному пользователю выполнять команды с привилегиями администратора с помощью добавления слова sudo перед каждой командой.\r\n\r\nИз-под root-пользователя выполните следующую команду для добавления вашего нового пользователя в группу **sudo**:\r\n```.shell\r\nusermod -aG sudo имя учетной записи\r\n```\r\nВаш пользователь c привилегиями супер-пользователя.\r\n\r\n-------------------\r\n\r\nНастройка авторизации по открытому ключу для вашего нового пользователя, которая повысит безопасность вашего сервера, требуя закрытый SSH ключ для входа.\r\n\r\nСоздание пары ключей:\r\nЕсли у вас ещё нет пары SSH-ключей, которая состоит из открытого и закрытого ключей, вам необходимо её создать. \r\n\r\nДля создания пары ключей, выполните следующую команду в терминале на вашем компьютере:\r\n```.shell\r\nssh-keygen\r\n```\r\nНажмите **ENTER**, чтобы согласиться с адресом и именем файла (или введите другой адрес/имя файла).\r\n\r\nДалее вам будет предложено ввести кодовую фразу для защиты ключа. Вы можете ввести кодовую фразу или оставить ее пустой.\r\n\r\nОбратите внимание: Если вы оставите кодовую фразу пустой, вы сможете использовать закрытый ключ для авторизации без ввода кодовой фразы. \r\nЕсли вы зададите кодовую фразу, вам потребуется и закрытый ключ и кодовая фраза для входа. \r\nДобавление кодовой фразы к ключам является более безопасным, но оба метода имеют свои области применения и являются более безопасными, чем базовая авторизация паролем.\r\n\r\nВ результате этого, в поддиректории .ssh домашней директории пользователя localuser будет создан закрытый ключ **id_rsa** и открытый ключ **id_rsa.pub**. \r\nНе передавайте закрытый ключ никому, кто не должен иметь доступ к вашим серверам!\r\n\r\nПосле создания пары SSH-ключей, вам необходимо скопировать открытый ключ на ваш сервер. \r\nЕсли на вашей локальной машине установлен скрипт ssh-copy-id, вы можете установить ваш открытый ключ для любого пользователя, для которого вы знаете логин и пароль.\r\n\r\nЗапустите скрипт **ssh-copy-id**, указав имя пользователя и IP-адрес сервера, на который вы хотите установить ключ:\r\n```.shell\r\nssh-copy-id test@IP_адрес_вашего_сервера\r\n```\r\nПосле того, как вы введёте пароль, ваш открытый ключ будет добавлен в файл **.ssh/authorized_keys** на вашем сервере. \r\n\r\n-------------------\r\n\r\nТеперь, когда вы можете использовать SSH-ключи для входа на сервер, мы можем ещё больше обезопасить сервер путём отключения аутентификации по паролю. \r\nВ результате этого осуществлять доступ к серверу по SSH можно будет только с использованием вашего открытого ключа. \r\n\r\nДля отключения аутентификации по паролю откройте конфигурационный файл в текстовом редакторе под пользователем root или пользователем с правами sudo:\r\n```.shell\r\nsudo nano /etc/ssh/sshd_config\r\n```\r\nНайдите строку с **PasswordAuthentication**, раскомментируйте её, удалив **#** в начале строки, затем измените значение на **no**:\r\n\r\n```.shell\r\nPasswordAuthentication no\r\n```\r\n\r\nВ этом же файле две другие настройки, необходимые для отключения аутентификации по паролю, уже имеют корректные настройки по умолчанию, не изменяйте эти настройки, если вы ранее не изменяли этот файл:\r\n\r\n```.shell\r\nPubkeyAuthentication yes\r\nChallengeResponseAuthentication no\r\n```\r\nПосле внесения изменений в этот файл, сохраните и закройте его (CTRL-X, затем Y, далее ENTER)\r\n\r\nПерезапустите демон SSH:\r\n```.shell\r\nsudo systemctl reload sshd\r\n```\r\nAутентификация по паролю отключена.","images":[{"id":3217,"file":"https://fornex.com/media/article/img/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2020-04-24_%D0%B2_15.18.38.png","created":"2020-04-24T15:19:26+03:00"}],"updated_at":"2025-10-22T12:04:53+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/549/change/"},{"id":170,"title":"Подключение к VPS или выделенному серверу по SSH в Windows","slug":"ssh-to-vps","priority":0,"summary":"Инструкция по использованию PuTTY для подключения к серверу по SSH в Windows.","tags":[{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":62,"name":"Windows","slug":"windows","icon":null},{"id":71,"name":"PuTTY","slug":"putty","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"PuTTY — популярный бесплатный SSH-клиент для Windows. Он позволяет подключаться к [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенному серверу](https://fornex.com/ru/dedicated-servers/) и управлять ими из командной строки.\r\n\r\nСкачать русифицированную версию PuTTY можно [на официальном сайте](https://putty.org.ru/download.html).\r\n\r\n## Подключение по логину и паролю\r\n1. Запустите PuTTY.\r\n2. На главной вкладке «Session» заполните поля:\r\n - **Host Name (or IP address)** — IP-адрес или hostname вашего сервера.\r\n - **Port** — 22 (стандартный порт SSH).\r\n - **Connection type** — SSH.\r\n\r\n![Основные настройки PuTTY](/media/article/img/ssh-windows-setup.webp \"Основные настройки PuTTY\")\r\nОсновные настройки сеанса PuTTY\r\n\r\n3. (Опционально) В поле **Saved Sessions** введите название подключения (например, «My VPS») и нажмите **Save** — так настройки сохранятся для будущего использования.\r\n4. Нажмите **Open**.\r\n\r\nПри первом подключении появится предупреждение о неизвестном ключе сервера:\r\n\r\n![PuTTY Security Alert](/media/article/img/ssh-windows-accept.webp \"PuTTY Security Alert\")\r\nПредупреждение о ключе сервера\r\n\r\nНажмите **Accept** (принять ключ навсегда) или **Connect Once** (только на этот раз).\r\n\r\n5. В открывшемся окне введите логин (обычно `root`) и нажмите Enter.\r\n6. Введите пароль от учётной записи и нажмите Enter.\r\n - При вводе пароля символы не отображаются на экране — это сделано для безопасности. Просто введите пароль и нажмите Enter.\r\n\r\nПосле успешного ввода вы окажетесь в командной строке сервера (обычно bash).\r\n\r\n### Подключение по SSH-ключу (без пароля)\r\n1. Сгенерируйте пару ключей в PuTTYgen (идёт в комплекте с PuTTY):\r\n - Запустите PuTTYgen.\r\n - Нажмите **Generate** и двигайте мышью для создания случайности.\r\n - Сохраните приватный ключ - нажмите Save private key.\r\n - Скопируйте публичный ключ из верхнего поля (начинается с `ssh-rsa` или `ssh-ed25519`).\r\n\r\n2. Добавьте публичный ключ на сервер в файл `/root/.ssh/authorized_keys`:\r\n - Подключитесь по паролю (как в предыдущем разделе).\r\n - Создайте папку `.ssh` (если нет):\r\n```bash\r\nmkdir -p ~/.ssh\r\nchmod 700 ~/.ssh\r\n```\r\n - Откройте файл:\r\n ```bash\r\n nano ~/.ssh/authorized_keys\r\n ```\r\n - Вставьте скопированный публичный ключ в новую строку.\r\n - Сохраните (Ctrl+O → Enter → Ctrl+X).\r\n - Установите права:\r\n ```bash\r\n chmod 600 ~/.ssh/authorized_keys\r\n chmod 700 ~/.ssh\r\n chown root:root ~/.ssh/authorized_keys\r\n ```\r\n Подробнее о настройке входа по ключу - в инструкции: [Настройка аутентификации по SSH-ключу на сервере](https://fornex.com/ru/help/authorization-ssh-key/).\r\n\r\n3. В PuTTY укажите приватный ключ: в **разделе Connection → SSH → Auth** нажмите **Browse** и выберите сохранённый приватный ключ (`.ppk`).\r\n\r\n![Настройка приватного ключа в PuTTY](/media/article/img/ssh-windows-key.webp \"Настройка приватного ключа в PuTTY\")\r\nНастройка приватного ключа в PuTTY\r\n\r\n4. Сохраните сессию и нажмите **Open** — подключение произойдёт без запроса пароля.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-01-22T17:54:04+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/170/change/"},{"id":472,"title":"Подключение к VPS или выделенному серверу по SSH на macOS","slug":"ssh-to-vps-mac","priority":0,"summary":"Инструкция по использованию встроенного SSH-клиента на macOS.","tags":[{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":60,"name":"MacOS","slug":"macos","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"SSH (Secure Shell) — защищённый протокол для удалённого доступа к серверу. Он позволяет управлять вашим [VPS](https://fornex.com/ru/virtual-private-servers/), [выделенным сервером](https://fornex.com/ru/dedicated-servers/) или [виртуальным хостингом](https://fornex.com/ru/web-hosting/): устанавливать ПО, настраивать сервисы, просматривать логи и выполнять любые команды прямо из терминала.\r\n\r\nВ macOS SSH-клиент встроен в систему — ничего дополнительно устанавливать не нужно.\r\n\r\n## Быстрая настройка\r\n1. Откройте **Терминал**.\r\n2. Введите команду:\r\n```bash\r\nssh username@ваш_IP\r\n```\r\n - **username** — имя пользователя на сервере (обычно `root`).\r\n - **ваш_IP** — IP-адрес или hostname сервера.\r\n\r\nПри первом подключении появится предупреждение о неизвестном ключе сервера:\r\n```bash\r\nThe authenticity of host 'ваш_IP (ваш_IP)' can't be established.\r\nED25519 key fingerprint is SHA256:...\r\nAre you sure you want to continue connecting (yes/no/[fingerprint])?\r\n```\r\n\r\nВведите `yes` и нажмите Enter — ключ сервера сохранится в файл `known_hosts`.\r\n\r\n3. Введите пароль (root или вашего пользователя):\r\n```bash\r\nroot@ваш_IP's password:\r\n```\r\n\r\n!!! warning Внимание\r\n При вводе пароля символы не отображаются на экране — это нормально и сделано для безопасности. Просто введите пароль и нажмите Enter.\r\nПосле успешного ввода вы окажетесь в командной строке сервера.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n## Полезные советы\r\n- Если часто подключаетесь к одному серверу, создайте алиас в файле `~/.zshrc` (или `~/.bash_profile`):\r\n```bash\r\nalias myserver=\"ssh root@ваш_IP\"\r\n```\r\n\r\nПосле этого подключение будет одной командой: `myserver`.\r\n\r\n- Для входа по SSH-ключу (без пароля) — настройте ключи по инструкции: [Настройка аутентификации по SSH-ключу на сервере](https://fornex.com/ru/help/authorization-ssh-key/).\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-15T17:47:05+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/472/change/"},{"id":512,"title":"Проксирование портов с помощью Rinetd","slug":"proxy-rinetd","priority":0,"summary":"Перенаправления TCP-трафика на VPS и выделенных серверах.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null}],"body":"**Rinetd** — это минималистичный TCP-прокси, который перенаправляет соединения с одного IP-адреса и порта на другой. Он идеально подходит для [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверов](https://fornex.com/ru/dedicated-servers/), когда нужно:\r\n- пробросить порт с публичного IP на внутренний сервер\r\n- запустить несколько сервисов на одном порту\r\n- организовать доступ к сервисам за NAT или в локальной сети\r\n- быстро настроить прокси без сложных iptables-цепочек\r\n\r\nRinetd работает как один процесс с неблокирующим I/O, поэтому выдерживает большое количество одновременных подключений без заметной нагрузки на сервер.\r\n\r\n### Установка Rinetd\r\n**Ubuntu / Debian**:\r\n```bash\r\nsudo apt update\r\nsudo apt install rinetd -y\r\n```\r\n\r\n**CentOS / RHEL / AlmaLinux / Rocky**:\r\n```bash\r\nsudo yum install rinetd -y\r\n# или\r\nsudo dnf install rinetd -y\r\n```\r\n\r\n### Настройка перенаправления портов\r\n1. Откройте конфигурационный файл:\r\n```bash\r\nsudo nano /etc/rinetd.conf\r\n```\r\n\r\n2. Добавьте в конец файла строки в формате:\r\n```text\r\npublic_IP external_port internal_IP internal_port\r\n```\r\n\r\nПример (перенаправление с публичного IP на несколько внутренних серверов):\r\n```text\r\n85.85.85.85 12341 192.168.1.5 1234\r\n85.85.85.85 12342 192.168.1.6 1234\r\n85.85.85.85 12343 192.168.1.7 1234\r\n85.85.85.85 12344 192.168.1.8 1234\r\n85.85.85.85 12345 192.168.1.9 1234\r\n```\r\n\r\n- 1-й столбец — публичный IP сервера (или `0.0.0.0` для всех интерфейсов)\r\n- 2-й столбец — внешний порт, который слушает rinetd\r\n- 3-й столбец — внутренний IP, куда перенаправляем\r\n- 4-й столбец — внутренний порт назначения\r\n\r\nСохраните файл (Ctrl+O → Enter → Ctrl+X).\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n3. Перезапустите rinetd:\r\n```bash\r\nsudo systemctl restart rinetd\r\n# или\r\nsudo service rinetd restart\r\n```\r\n\r\n### Проверка работы\r\n1. Убедитесь, что служба запущена:\r\n```bash\r\nsudo systemctl status rinetd\r\n```\r\n\r\n2. Посмотрите, какие порты слушает rinetd:\r\n```bash\r\nsudo ss -tuln | grep rinetd\r\n```\r\n\r\nили\r\n```bash\r\nsudo netstat -tuln | grep rinetd\r\n```\r\n\r\n3. Протестируйте подключение:\r\n - с внешнего IP на порт 12341 → должен прийти трафик на 192.168.1.5:1234\r\n - используйте `telnet`, `nc` или любой клиент для проверки.\r\n\r\n### Полезные замечания\r\n- Rinetd не поддерживает логирование по умолчанию. Для логов добавьте в конфиг по пути `/etc/rinetd.conf`:\r\n```text\r\nlog /var/log/rinetd.log\r\n```\r\n\r\n- Если нужно разрешить доступ только с определённых IP — используйте `iptables` или `firewall-cmd` перед rinetd.\r\n- Для высокой нагрузки (тысячи соединений) rinetd может потреблять много памяти — мониторьте через `top` или `htop`.\r\n- Альтернативы: socat, iptables DNAT, HAProxy, nginx stream — но rinetd проще и легче всего.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-05T18:03:26+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/512/change/"},{"id":160,"title":"Путь к исполняемому файлу","slug":"path-to-executable-file","priority":0,"summary":"Как найти полный путь к исполняемому файлу на сервере.","tags":[{"id":1,"name":"Основы","slug":"basics","icon":null},{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":71,"name":"PuTTY","slug":"putty","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"Полный путь к исполняемому файлу может понадобиться, например, при настройке конфигурационного файла CMS или создании задания cron.\r\n\r\nПодключитесь к серверу по [SSH](/help/ssh/) и выполните команду:\r\n\r\n```bash\r\nwhereis имя_приложения\r\n```\r\n\r\nНапример, чтобы найти путь к исполняемому файлу PHP:\r\n\r\n```bash\r\nwhereis php\r\n```\r\n\r\nВывод команды:\r\n@@\r\nphp: /usr/bin/php /usr/share/man/man1/php.1.gz\r\n@@\r\n\r\nВ данном случае `/usr/bin/php` — это и есть полный путь к исполняемому файлу PHP.\r\n\r\n[Подробнее о работе в консоли](/help/linux-commands/)\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-22T11:33:32+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/160/change/"},{"id":231,"title":"Редирект с помощью .htaccess","slug":"http-https-htaccess","priority":0,"summary":"Руководство по настройке перенаправлений с помощью конфигурационного файла .htaccess.","tags":[{"id":5,"name":"Apache","slug":"apache","icon":null}],"body":"Файл `.htaccess` позволяет настроить редиректы (перенаправления) на уровне сайта без изменения кода. Он находится в корневой папке сайта (обычно `/public_html` или аналогичной). Если файла нет — создайте его (начинается с точки).\r\n\r\nВсе правила начинаются с включения модуля mod_rewrite:\r\n```\r\nRewriteEngine On\r\n```\r\n\r\n### Редирект с HTTP на HTTPS\r\nСамый распространённый вариант:\r\n```\r\nRewriteEngine On\r\nRewriteCond %{HTTPS} off\r\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\r\n```\r\n\r\nАльтернативный вариант (если сервер использует заголовок X-HTTPS):\r\n```\r\nRewriteEngine On\r\nRewriteCond %{HTTP:X-HTTPS} !1\r\nRewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]\r\n```\r\n\r\n### Редирект с HTTPS на HTTP\r\n```\r\nRewriteEngine on\r\nRewriteCond %{HTTPS} on\r\nRewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}\r\n```\r\n\r\n### Редирект с одной страницы на другую\r\n```\r\nRedirect 301 /test-1/ http://site.ru/test-2/\r\n```\r\n\r\nИли через Rewrite:\r\n```\r\nRewriteCond %{REQUEST_URI} ^/test/$\r\nRewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]\r\n```\r\n\r\n### Редирект с www на без www (главное зеркало – без www)\r\n```\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)$ http://%1/$1 [L,R=301]\r\n```\r\n\r\n### Редирект с без www на www (главное зеркало – с www)\r\n```\r\nRewriteCond %{HTTP_HOST} ^([^www].*)$\r\nRewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]\r\n```\r\n\r\n### Редирект со страниц со слешем на без слеша (весь сайт)\r\n```\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} ![^\\/]$\r\nRewriteRule ^(.*)\\/$ /$1 [R=301,L]\r\n```\r\n\r\n### Редирект со страниц без слеша на со слешем (часто в CMS системах устанавливается автоматически)\r\n```\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteRule ^(.*[^\\/])$ /$1/ [R=301,L]\r\n```\r\n\r\n### Один редирект: без www + со слешем на конце страницы\r\n```\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)$ http://%1/$1/ [L,R=301]\r\n\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteCond %{HTTP_HOST} ^([^www].*)$\r\nRewriteRule ^(.*)$ http://%1/$1/ [L,R=301]\r\n```\r\n\r\n### Один редирект: с www + со слешем на конце страницы\r\n```\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]\r\n\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteCond %{HTTP_HOST} ^([^www].*)$\r\nRewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]\r\n```\r\n\r\n### Один редирект: с www + без слеша на конце страницы\r\n```\r\nRewriteCond %{REQUEST_URI} ^\\/$\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)$ http://%1/$1 [L,R=301]\r\n\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} \\/$\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)\\/$ http://%1/$1 [L,R=301]\r\n\r\nRewriteCond %{REQUEST_URI} !\\?\r\nRewriteCond %{REQUEST_URI} !\\&\r\nRewriteCond %{REQUEST_URI} !\\=\r\nRewriteCond %{REQUEST_URI} !\\.\r\nRewriteCond %{REQUEST_URI} !\\/$\r\nRewriteCond %{HTTP_HOST} ^www\\.(.*)$\r\nRewriteRule ^(.*)$ http://%1/$1 [L,R=301]\r\n```\r\n\r\n### Редирект index.php на главную (без GET-параметров)\r\n```\r\nRewriteCond %{REQUEST_URI} /index.php\r\nRewriteCond %{QUERY_STRING} ^\\z\r\nRewriteRule ^(.*)$ http://site.ru/? [R=301,L]\r\n```\r\n\r\n### Редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)\r\nПример: site.ru/index.php?n=1 на site.ru/?n=1\r\n```\r\nRewriteCond %{REQUEST_URI} /index.php\r\nRewriteRule ^(.*)$ http://site.ru/ [R=301,L]\r\n```\r\n\r\n### Массовый редирект index.php / index.html / index.htm на главную (для Joomla и подобных)\r\n```\r\nRewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\\ /index\\.(php|html|htm)\\ HTTP/ \r\nRewriteRule ^(.*)index\\.(php|html|htm)$ http://site.ru/$1 [R=301,L]\r\n```\r\n\r\n### Редирект динамического URL с GET-параметром на статический\r\nПростой вариант:\r\n```\r\nRewriteCond %{QUERY_STRING} ^id=229\r\nRewriteRule ^.*$ /supermodel/? [R=301,L]\r\n```\r\nСо страницы:\r\n```\r\nRewriteCond %{REQUEST_URI} /test/\r\nRewriteCond %{QUERY_STRING} ^id=229\r\nRewriteRule ^.*$ /supermodel/? [R=301,L]\r\n```\r\n\r\n### Редирект всего сайта на другой домен (все страницы на главную)\r\n```\r\nRewriteCond %{REQUEST_URI} (.*)\r\nRewriteRule ^(.*)$ http://site.ru/ [L,R=301]\r\n```\r\n\r\n### Редирект всего сайта с сохранением структуры страниц\r\n```\r\nRewriteCond %{REQUEST_URI} (.*)\r\nRewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]\r\n```\r\n\r\n::: front-promo-main-services\r\n:::","images":[],"updated_at":"2026-01-21T16:14:34+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/231/change/"},{"id":154,"title":"Режимы работы интерпретатора PHP","slug":"mode-php","priority":0,"summary":"Сравнение режимов запуска PHP-скриптов: mod_php, CGI, FastCGI и LSPHP.","tags":[{"id":1,"name":"Основы","slug":"basics","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"### PHP как модуль Apache (mod_php)\r\n\r\nВ этом режиме модуль `mod_php` подключается непосредственно к веб-серверу Apache, и каждый процесс Apache включает его в себя. Подходит для небольших сайтов с низкой посещаемостью.\r\n\r\nПреимущества:\r\n\r\n- наибольшая скорость выполнения скриптов по сравнению с другими режимами;\r\n- простота настройки — сервер обрабатывает скрипты самостоятельно;\r\n- единый конфигурационный файл `php.ini` для всех скриптов;\r\n- возможность задавать параметры PHP через конфигурацию Apache или `.htaccess`.\r\n\r\nНедостатки:\r\n\r\n- все скрипты выполняются с правами веб-сервера, поэтому для записи в директории необходимо открывать к ним доступ для всех;\r\n- при запуске сторонних процессов (например, почтовой рассылки) невозможно определить, какой пользователь инициировал процесс;\r\n- обработка скриптов создаёт дополнительную нагрузку на Apache и может замедлить отдачу статических файлов;\r\n- ошибки в скриптах способны привести к неработоспособности всего веб-сервера.\r\n\r\n### PHP как CGI\r\n\r\nВ этом режиме для каждого запроса запускается отдельный процесс `php-cgi`. Подходит для сайтов с преимущественно статическим содержимым: интерпретатор загружается только по необходимости, что экономит оперативную память. Однако запуск нового процесса при каждом запросе замедляет выполнение скриптов.\r\n\r\nПреимущества:\r\n\r\n- скрипты выполняются с правами пользователя — владельца домена;\r\n- возможность индивидуальной настройки PHP для каждого пользователя;\r\n- меньший расход оперативной памяти по сравнению с `mod_php`;\r\n- ошибки в скриптах не приводят к падению веб-сервера.\r\n\r\nНедостатки:\r\n\r\n- возможны проблемы с PHP-авторизацией через `Header()` из-за того, что часть серверных переменных не передаётся PHP-скрипту.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### PHP как FastCGI\r\n\r\nFastCGI — компромисс между `mod_php` и CGI: сочетает достоинства обоих режимов и устраняет основной недостаток CGI. В оперативной памяти постоянно работает процесс-обработчик, поэтому при каждом запросе не нужно запускать новый процесс. По скорости FastCGI сопоставим с `mod_php`. Оптимален для высоконагруженных сайтов со стабильным потоком запросов.\r\n\r\nПреимущества:\r\n\r\n- за счёт кэширования промежуточных данных скрипты не интерпретируются заново при каждом запросе, что даёт более высокую скорость по сравнению с CGI;\r\n- скрипты выполняются с правами пользователя — владельца домена.\r\n\r\nНедостатки:\r\n\r\n- процесс `php-cgi` остаётся в памяти после первого обращения.\r\n\r\n### LSPHP\r\n\r\nLiteSpeed PHP (LSPHP) реализован в виде модуля `mod_lsapi` для Apache и является наиболее производительным вариантом запуска PHP на серверах под управлением cPanel.\r\n\r\nПреимущества:\r\n\r\n- более высокая скорость обработки PHP-скриптов;\r\n- отсутствие ошибки 500 при наличии директив `php_flag` и аналогичных в `.htaccess` — актуально при переезде с хостинга, работавшего на `mod_php`;\r\n- меньшее потребление ресурсов;\r\n- повышенная эффективность Opcode Cache.\r\n\r\n### Установка модулей PHP\r\n\r\nМодули PHP устанавливаются через панель ISPmanager в разделе **PHP**.\r\n\r\n### Запуск PHP-скрипта из cron\r\n\r\nЧтобы запустить PHP-скрипт через планировщик cron, укажите полный путь к интерпретатору перед адресом скрипта:\r\n\r\n```bash\r\n/usr/bin/php-cgi /(путь)/script.php\r\n```\r\n\r\nСкрипт может находиться в любой директории, в том числе недоступной через FTP.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-22T11:36:32+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/154/change/"},{"id":319,"title":"Смена пароля root в MySQL","slug":"root-password-mysql","priority":0,"summary":"Пошаговое руководство по изменению и сбросу пароля root-пользователя MySQL.","tags":[{"id":2,"name":"MySQL","slug":"mysql","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"Работа с базами данных MySQL часто требуется при администрировании сайтов и приложений на [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенных серверах](https://fornex.com/ru/dedicated-servers/). Важно уметь изменить пароль root-пользователя или восстановить доступ, если он утерян.\r\n\r\n### Изменение пароля root MySQL (если пароль известен)\r\n1. Подключитесь к серверу по [SSH](https://fornex.com/ru/help/ssh-to-vps/).\r\n2. Войдите в MySQL от имени root:\r\n```bash\r\nmysql -u root -p\r\n```\r\n\r\nВведите текущий пароль и нажмите Enter.\r\n\r\n3. Выполните команду для смены пароля (замените `newpass` на новый пароль):\r\n```SQL\r\nSET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');\r\nFLUSH PRIVILEGES;\r\nquit\r\n```\r\n\r\nПароль успешно изменён.\r\n\r\n### Сброс пароля root MySQL (если пароль утерян)\r\nЕсли пароль неизвестен, запустите MySQL в безопасном режиме без проверки аутентификации.\r\n\r\n**Ubuntu / Debian**\r\n1. Остановите сервис MySQL:\r\n```bash\r\nsudo systemctl stop mysql\r\n```\r\n\r\n2. Создайте каталог для PID-файла (если его нет):\r\n```bash\r\nsudo mkdir -p /var/run/mysqld\r\nsudo chown mysql:mysql /var/run/mysqld\r\n```\r\n\r\n3. Запустите MySQL в безопасном режиме:\r\n```bash\r\nsudo mysqld_safe --skip-grant-tables --skip-networking &\r\n```\r\n\r\n4. Подключитесь без пароля:\r\n```bash\r\nmysql -u root\r\n```\r\n\r\n5. Сбросьте пароль (замените `new_root_password` на новый пароль):\r\n```bash\r\nFLUSH PRIVILEGES;\r\nUSE mysql;\r\nUPDATE user SET authentication_string=PASSWORD('new_root_password') WHERE User='root';\r\nUPDATE user SET plugin='mysql_native_password' WHERE User='root';\r\nFLUSH PRIVILEGES;\r\nquit\r\n```\r\n\r\n6. Остановите безопасный режим и перезапустите MySQL:\r\n```bash\r\nsudo pkill mysqld\r\nsudo systemctl start mysql\r\n```\r\n\r\n7. Проверьте вход с новым паролем:\r\n```bash\r\nmysql -u root -p\r\n```\r\n\r\n**CentOS 7 / RHEL 7**\r\n1. Остановите сервис MySQL:\r\n```bash\r\nsudo systemctl stop mysql\r\n```\r\n\r\n2. Запустите MySQL в безопасном режиме:\r\n```bash\r\nsudo mysqld_safe --skip-grant-tables &\r\n```\r\n\r\n3. Подключитесь без пароля:\r\n```bash\r\nmysql -u root\r\n```\r\n\r\n4. Сбросьте пароль (замените `new_root_password` на новый пароль):\r\n```bash\r\nUSE mysql;\r\nUPDATE user SET password=PASSWORD('new_root_password') WHERE User='root';\r\nFLUSH PRIVILEGES;\r\nquit\r\n```\r\n\r\n5. Перезапустите MySQL:\r\n```bash\r\nsudo systemctl stop mysqld\r\nsudo systemctl start mysqld\r\n```\r\n\r\n6. Проверьте вход:\r\n```bash\r\nmysql -u root -p\r\n```\r\n\r\n### Полезные замечания\r\n- После сброса пароля рекомендуется сразу сменить его в панели управления или в приложении на более надёжный.\r\n- Если вы используете MySQL 8.0+ — вместо `PASSWORD()` применяйте `ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';`.\r\n- Всегда делайте бэкап базы перед изменениями.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-03T15:37:22+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/319/change/"},{"id":188,"title":"Создание FTP-учётной записи по SSH","slug":"ftp-user-ssh","priority":0,"summary":"Руководство по настройке отдельного FTP-пользователя на сервере.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":44,"name":"FTP","slug":"ftp","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"По умолчанию на сервере доступен только суперпользователь **root**. Подключение по FTP под root запрещено по соображениям безопасности (пароль передаётся в открытом виде). \r\nЕсли на сервере нет панели управления (cPanel, aaPanel, CloudPanel и т.д.), создать отдельного FTP-пользователя можно вручную через SSH.\r\n\r\n### 1. Установка ProFTPD (если ещё не установлен)\r\n**Ubuntu / Debian:**\r\n```bash\r\nsudo apt update\r\nsudo apt install proftpd-basic -y\r\n```\r\n\r\n**CentOS / Rocky / AlmaLinux:**\r\n```bash\r\nsudo yum install proftpd -y\r\n```\r\n\r\nПосле установки запустите и добавьте сервис в автозагрузку:\r\n```bash\r\nsudo systemctl start proftpd\r\nsudo systemctl enable proftpd\r\n```\r\n\r\n### 2. Ограничение пользователей домашним каталогом (рекомендуется)\r\nОткройте конфигурационный файл:\r\n- Ubuntu/Debian: `sudo nano /etc/proftpd/proftpd.conf`\r\n- CentOS/Rocky: `sudo nano /etc/proftpd.conf`\r\n\r\nДобавьте в конец файла строку:\r\n```bash\r\nDefaultRoot ~\r\n```\r\n\r\nСохраните и перезапустите ProFTPD:\r\n```bash\r\nsudo systemctl restart proftpd\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n\r\n### 3. Создание нового FTP-пользователя\r\nДля безопасности FTP-пользователю **не нужен** доступ к командной оболочке.\r\n\r\n1. Добавьте `/bin/false` в список разрешённых оболочек (если ещё нет):\r\n```bash\r\necho '/bin/false' | sudo tee -a /etc/shells\r\n```\r\n\r\n2. Создайте пользователя:\r\n```bash\r\nsudo useradd ftpuser -d /home/ftpuser -m -s /bin/false\r\n```\r\n\r\n3. Установите пароль:\r\n```bash\r\nsudo passwd ftpuser\r\n```\r\nГде:\r\n- `ftpuser` — имя пользователя (можно любое)\r\n- `/home/ftpuser` — домашняя директория (будет создана автоматически)\r\n\r\n### 4. Настройка прав доступа\r\nОграничьте права пользователя, чтобы он не мог выходить за пределы своей папки:\r\n```bash\r\nsudo chmod 555 /home/ftpuser\r\nsudo mkdir /home/ftpuser/upload\r\nsudo chown ftpuser:ftpuser /home/ftpuser/upload\r\n```\r\n\r\nТеперь пользователь сможет загружать файлы только в папку `upload`.\r\n\r\n### Полезные замечания\r\n- Для повышения безопасности рекомендуется использовать SFTP вместо обычного FTP.\r\n- Никогда не используйте root для FTP-подключений.\r\n- После создания пользователя сразу проверьте подключение в FTP-клиенте (FileZilla, WinSCP и т.д.).\r\n- Если нужно создать много пользователей — удобнее использовать панель управления (aaPanel, BeAdmin, CloudPanel, cPanel и другие).\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-25T17:48:13+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/188/change/"},{"id":562,"title":"Управление логами с помощью logrotate на CentOS 7","slug":"logrotate-centos-7","priority":0,"summary":"Настройка logrotate для контроля над системными и прикладными журналами.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null}],"body":"**Logrotate** — один из тех инструментов, которые незаметно поддерживают порядок на сервере. Он не даёт лог-файлам бесконтрольно разрастаться и съедать дисковое пространство — а это особенно критично на [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/), где каждый гигабайт на счету.\r\n\r\n### Проверка установки\r\n\r\nПрежде чем переходить к настройке, убедитесь, что logrotate установлен. На CentOS 7 он присутствует по умолчанию, но лишняя проверка не помешает:\r\n```bash\r\nlogrotate --version\r\n```\r\n\r\nЕсли в ответ отображается номер версии — например, `logrotate 3.18.0` — утилита готова к работе.\r\n\r\n### Структура конфигурации\r\n\r\nКонфигурация logrotate хранится в двух местах:\r\n\r\n- **`/etc/logrotate.conf`** — основной файл с глобальными параметрами по умолчанию\r\n- **`/etc/logrotate.d/`** — каталог с отдельными файлами конфигурации для конкретных сервисов\r\n\r\nВместе они определяют, какие логи ротируются, с какой периодичностью, сколько архивных копий хранить и нужно ли их сжимать.\r\n\r\n### Основной файл конфигурации\r\n\r\nОткройте `/etc/logrotate.conf` в любом текстовом редакторе — например, в [vi](https://fornex.com/ru/help/text-editor-vi/):\r\n```bash\r\nvi /etc/logrotate.conf\r\n```\r\n\r\nТипичное содержимое файла выглядит так:\r\n```\r\n# Ротация раз в неделю\r\nweekly\r\n\r\n# Хранить 4 архивных копии\r\nrotate 4\r\n\r\n# Создавать новый пустой файл после ротации\r\ncreate\r\n\r\n# Добавлять дату в имя архивных файлов\r\ndateext\r\n\r\n# Сжимать старые логи (раскомментируйте при необходимости)\r\n#compress\r\n\r\n# Подключать конфигурации из /etc/logrotate.d\r\ninclude /etc/logrotate.d\r\n\r\n# Настройки системных логов\r\n/var/log/wtmp {\r\n monthly\r\n create 0664 root utmp\r\n minsize 1M\r\n rotate 1\r\n}\r\n\r\n/var/log/btmp {\r\n missingok\r\n monthly\r\n create 0600 root utmp\r\n rotate 1\r\n}\r\n```\r\n\r\nДирективы из этого файла применяются глобально — конфигурации отдельных сервисов в `/etc/logrotate.d/` могут переопределять их по мере необходимости.\r\n\r\n### Основные директивы\r\n\r\n- **`daily / weekly / monthly / size`** — периодичность ротации: по расписанию или при достижении заданного размера\r\n- **`rotate N`** — количество архивных копий для хранения, после чего старые удаляются\r\n- **`create`** — создавать новый пустой файл после ротации с сохранением прав и владельца\r\n- **`compress`** — сжимать архивы (по умолчанию в формат gzip)\r\n- **`dateext`** — добавлять дату к имени архива, например `access.log-20250918`\r\n- **`missingok`** — не выдавать ошибку, если лог-файл отсутствует\r\n- **`notifempty`** — не ротировать пустые файлы\r\n- **`postrotate ... endscript`** — блок команд, выполняемых после ротации (удобно для перезагрузки сервиса)\r\n- **`maxage N`** — автоматически удалять архивы старше N дней\r\n\r\n### Настройка ротации для конкретного приложения\r\n\r\nПредположим, приложение **my-app** пишет логи в `/var/log/my-app/`. Создайте для него отдельный файл конфигурации:\r\n```bash\r\nvi /etc/logrotate.d/my-app\r\n```\r\n\r\nХороший рабочий пример:\r\n```\r\n/var/log/my-app/*.log {\r\n daily\r\n missingok\r\n rotate 14\r\n compress\r\n notifempty\r\n create 0640 www-data www-data\r\n sharedscripts\r\n postrotate\r\n systemctl reload my-app\r\n endscript\r\n}\r\n```\r\n\r\nЧто делает каждый параметр:\r\n\r\n- **`daily`** — ротация выполняется ежедневно\r\n- **`rotate 14`** — хранится две недели архивов\r\n- **`compress`** — старые логи сжимаются через gzip\r\n- **`notifempty`** — пустые файлы не ротируются\r\n- **`create 0640 www-data www-data`** — новый файл создаётся с правами `0640` и владельцем `www-data`\r\n- **`postrotate ... endscript`** — после ротации приложение перезагружается и начинает писать в новый файл\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Проверка конфигурации\r\n\r\nТестовый запуск без реального применения изменений:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nПроверка отдельного файла конфигурации:\r\n```bash\r\nsudo logrotate -d /etc/logrotate.d/my-app\r\n```\r\n\r\nПринудительная ротация:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --force\r\n```\r\n\r\n### Ротация логов в пользовательских каталогах\r\n\r\nЕсли приложение пишет логи в нестандартное место — например, в `/home/user/logs/` — создайте локальный файл конфигурации:\r\n```bash\r\nvi /home/user/logrotate.conf\r\n```\r\n```\r\n/home/user/logs/*.log {\r\n hourly\r\n missingok\r\n rotate 24\r\n compress\r\n create\r\n}\r\n```\r\n\r\nСоздайте директорию и тестовый файл:\r\n```bash\r\nmkdir ~/logs\r\ntouch ~/logs/access.log\r\n```\r\n\r\nЗатем запустите принудительную ротацию с указанием файла состояния:\r\n```bash\r\nlogrotate /home/user/logrotate.conf \\\r\n --state /home/user/logrotate-state \\\r\n --verbose --force\r\n```\r\n\r\n- **`--state`** — указывает, где хранить информацию о последней ротации\r\n- **`--verbose`** — выводит подробный лог выполнения\r\n\r\n### Автоматизация через cron\r\n\r\nЧтобы ротация выполнялась автоматически по расписанию, добавьте задание в cron:\r\n```bash\r\ncrontab -e\r\n```\r\n\r\nНапример, для запуска каждый час на 14-й минуте:\r\n```\r\n14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-26T18:01:18+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/562/change/"},{"id":563,"title":"Управление логами с помощью logrotate на Debian 9","slug":"logrotate-debian-9","priority":0,"summary":"Настройка logrotate для управления системными и прикладными журналами.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**Logrotate** — один из базовых инструментов администрирования. Он помогает поддерживать порядок в системе и предотвращает переполнение диска. При работе с [виртуальными серверами](https://fornex.com/ru/virtual-private-servers/) или [выделенными серверами](https://fornex.com/ru/dedicated-servers/) корректная настройка ротации журналов обеспечивает стабильность и предсказуемость работы сервисов.\r\n\r\nНа Debian 9 logrotate установлен по умолчанию и настроен для обработки журналов всех системных пакетов и приложений.\r\n\r\n### Проверка установки\r\n```bash\r\nlogrotate --version\r\n```\r\n\r\nВывод команды:\r\n```\r\nlogrotate 3.11.0\r\n```\r\n\r\n### Структура конфигурации\r\nКонфигурация logrotate хранится в двух местах:\r\n\r\n- **`/etc/logrotate.conf`** — основной файл с глобальными параметрами по умолчанию и шаблонами для несистемных файлов\r\n- **`/etc/logrotate.d/`** — каталог с отдельными конфигурациями для конкретных сервисов и приложений\r\n\r\nПример конфигурации для пакетного менеджера **apt**:\r\n```bash\r\ncat /etc/logrotate.d/apt\r\n```\r\n\r\nВывод:\r\n```\r\n/var/log/apt/term.log {\r\n rotate 12\r\n monthly\r\n compress\r\n missingok\r\n notifempty\r\n}\r\n\r\n/var/log/apt/history.log {\r\n rotate 12\r\n monthly\r\n compress\r\n missingok\r\n notifempty\r\n}\r\n```\r\n\r\nФайл содержит два блока — для `term.log` и `history.log`. Любые параметры, не указанные в блоке, наследуются из `/etc/logrotate.conf`.\r\n\r\nОписание директив:\r\n\r\n- **`rotate 12`** — хранить последние 12 архивных копий лога\r\n- **`monthly`** — выполнять ротацию раз в месяц\r\n- **`compress`** — сжимать архивы (по умолчанию используется gzip)\r\n- **`missingok`** — не выдавать ошибку, если лог-файл отсутствует\r\n- **`notifempty`** — не ротировать пустые файлы\r\n\r\n### Способ 1. Конфигурация в /etc/logrotate.d/\r\nЭтот вариант подходит для большинства случаев: конфигурация запускается ежедневно от имени root вместе со всеми стандартными задачами logrotate.\r\n\r\nВ качестве примера настроим ротацию для приложения, которое пишет `access.log` и `error.log` в каталог `/var/log/app/`:\r\n```bash\r\nnano /etc/logrotate.d/app\r\n```\r\n```\r\n/var/log/example-app/*.log {\r\n daily\r\n missingok\r\n rotate 14\r\n compress\r\n notifempty\r\n create 0640 www-data www-data\r\n sharedscripts\r\n postrotate\r\n systemctl reload example-app\r\n endscript\r\n}\r\n```\r\n\r\nОписание директив:\r\n\r\n- **`create 0640 www-data www-data`** — создавать новый пустой файл журнала после ротации с правами `0640`, владельцем и группой `www-data`\r\n- **`sharedscripts`** — скрипты из блока `postrotate` выполняются один раз после обработки всех файлов, а не для каждого файла отдельно\r\n- **`postrotate ... endscript`** — блок команд, выполняемых после ротации; в примере перезагружается приложение\r\n\r\nПосле настройки проверьте конфигурацию в режиме отладки:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nКоманда выведет подробную информацию о том, какие файлы обрабатывает logrotate, без реального применения изменений.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Способ 2. Пользовательская конфигурация с запуском через cron\r\nЭтот вариант подходит, если нужна нестандартная периодичность ротации — например, каждый час. В таком случае конфигурацию размещают за пределами `/etc/logrotate.d/` и запускают вручную через cron.\r\n\r\nДопустим, приложение работает под пользователем `testing` и пишет логи в `/home/testing/logs/`. Создайте конфигурационный файл:\r\n```bash\r\nnano /home/testing/logrotate.conf\r\n```\r\n```\r\n/home/testing/logs/*.log {\r\n hourly\r\n missingok\r\n rotate 24\r\n compress\r\n create\r\n}\r\n```\r\n\r\n![Конфигурационный файл logrotate](/media/article/img/logrotate-debian-9-1.webp \"Конфигурационный файл logrotate\")\r\nКонфигурационный файл logrotate\r\n\r\nЭта конфигурация будет ежечасно ротировать файлы, сохраняя 24 архивные копии и создавая новый файл журнала взамен повёрнутого.\r\n\r\nСоздайте тестовый файл журнала:\r\n```bash\r\ncd ~\r\nmkdir logs\r\ntouch logs/access.log\r\n```\r\n\r\nЗапустите logrotate вручную с указанием файла состояния:\r\n```bash\r\nlogrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state --verbose --force\r\n```\r\n\r\nВывод:\r\n```\r\nreading config file /home/testing/logrotate.conf\r\n\r\nHandling 1 logs\r\n\r\nrotating pattern: /home/testing/logs/*.log hourly (24 rotations)\r\nempty log files are rotated, old logs are removed\r\nconsidering log /home/testing/logs/access.log\r\n log does not need rotating\r\n```\r\n\r\n> **`--state`** — указывает, где хранить информацию о последней ротации. **`--verbose`** — выводит подробный лог выполнения. **`--force`** — принудительно выполняет ротацию, даже если она ещё не нужна по расписанию.\r\n\r\nПроверьте содержимое файла состояния:\r\n```bash\r\ncat /home/testing/logrotate-state\r\n```\r\n\r\nLogrotate фиксирует в этом файле, когда и какие журналы он последний раз обрабатывал.\r\n\r\n### Автоматизация через cron\r\nЧтобы ротация выполнялась автоматически каждый час, добавьте задание в cron:\r\n```bash\r\ncrontab -e\r\n```\r\n\r\nДобавьте в конец файла:\r\n```\r\n14 * * * * /usr/sbin/logrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state\r\n```\r\n\r\n![Задание cron для logrotate](/media/article/img/logrotate-debian-9-2.webp \"Задание cron для logrotate\")\r\nЗадание cron для logrotate\r\n\r\nЗадача будет запускаться на 14-й минуте каждого часа ежедневно.\r\n\r\n{{ contact_support_neutral_footer }}","images":[{"id":9258,"file":"https://fornex.com/media/article/img/logrotate-debian-9-1.webp","created":"2025-09-18T17:39:32+03:00"},{"id":9259,"file":"https://fornex.com/media/article/img/logrotate-debian-9-2.webp","created":"2025-09-18T17:39:39+03:00"}],"updated_at":"2026-04-02T16:50:47+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/563/change/"},{"id":561,"title":"Управление логами с помощью logrotate на Ubuntu 16.04","slug":"logrotate-ubuntu-16-04","priority":0,"summary":"Настройка logrotate для управления системными и прикладными журналами.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**Logrotate** — системная утилита для автоматической ротации, сжатия и удаления лог-файлов. Без неё логи на работающем сервере могут со временем занять всё доступное дисковое пространство.\r\n\r\nНа Ubuntu 16.04 logrotate установлен по умолчанию и настроен для обработки журналов всех системных пакетов и приложений.\r\n\r\n### Проверка установки\r\n```bash\r\nlogrotate --version\r\n```\r\n\r\nВывод команды:\r\n```bash\r\nlogrotate 3.8.7\r\n```\r\n\r\n### Структура конфигурации\r\nКонфигурация logrotate хранится в двух местах:\r\n\r\n- **`/etc/logrotate.conf`** — основной файл с глобальными параметрами по умолчанию и шаблонами для несистемных файлов\r\n- **`/etc/logrotate.d/`** — каталог с отдельными конфигурациями для конкретных сервисов и приложений\r\n\r\nПример конфигурации для пакетного менеджера **APT**:\r\n```bash\r\ncat /etc/logrotate.d/apt\r\n```\r\n\r\nВывод:\r\n```bash\r\n/var/log/apt/term.log {\r\nrotate 12\r\nmonthly\r\ncompress\r\nmissingok\r\nnotifempty\r\n}\r\n/var/log/apt/history.log {\r\nrotate 12\r\nmonthly\r\ncompress\r\nmissingok\r\nnotifempty\r\n}\r\n```\r\n\r\nФайл содержит два блока — для `term.log` и `history.log`. Параметры, не указанные явно, наследуются из `/etc/logrotate.conf`.\r\n\r\nОписание директив:\r\n\r\n- **`rotate 12`** — хранить последние 12 архивных копий лога\r\n- **`monthly`** — выполнять ротацию раз в месяц\r\n- **`compress`** — сжимать архивы (по умолчанию — gzip)\r\n- **`missingok`** — не выдавать ошибку, если лог-файл отсутствует\r\n- **`notifempty`** — не ротировать пустые файлы\r\n\r\n### Способ 1. Конфигурация в /etc/logrotate.d/\r\nЭтот вариант запускается ежедневно от имени root вместе со всеми стандартными задачами logrotate.\r\n\r\nПримера настройки ротации для приложения, которое пишет `access.log` и `error.log` в каталог `/var/log/example-app/`:\r\n\r\n```bash\r\nsudo nano /etc/logrotate.d/example-app\r\n```\r\n\r\n```bash\r\n/var/log/example-app/*.log {\r\ndaily\r\nmissingok\r\nrotate 14\r\ncompress\r\nnotifempty\r\ncreate 0640 www-data www-data\r\nsharedscripts\r\npostrotate\r\nsystemctl reload example-app\r\nendscript\r\n}\r\n```\r\n\r\nОписание директив:\r\n\r\n- **`create 0640 www-data www-data`** — создавать новый пустой файл после ротации с правами `0640`, владельцем и группой `www-data`\r\n- **`sharedscripts`** — скрипты из блока `postrotate` выполняются один раз после обработки всех файлов, а не для каждого отдельно\r\n- **`postrotate ... endscript`** — блок команд, выполняемых после ротации; в примере перезагружается приложение\r\n\r\nПосле настройки проверьте конфигурацию в режиме отладки:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nКоманда выведет подробную информацию о том, какие файлы обрабатывает logrotate, без реального применения изменений.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Способ 2. Пользовательская конфигурация с запуском через cron\r\nЭтот вариант подходит, если нужна нестандартная периодичность — например, ежечасная ротация. В таком случае конфигурацию размещают за пределами `/etc/logrotate.d/` и запускают вручную через cron.\r\n\r\nДопустим, приложение работает под пользователем `newuser` и пишет логи в `/home/newuser/logs/`. Создайте конфигурационный файл:\r\n\r\n```bash\r\nnano /home/newuser/logrotate.conf\r\n```\r\n\r\n```bash\r\n/home/newuser/logs/*.log {\r\nhourly\r\nmissingok\r\nrotate 24\r\ncompress\r\ncreate\r\n}\r\n```\r\n\r\nЭта конфигурация будет ежечасно ротировать файлы, сохраняя 24 архивные копии и создавая новый файл журнала взамен повёрнутого.\r\n\r\nСоздайте тестовый файл журнала:\r\n```bash\r\ncd ~\r\nmkdir logs\r\ntouch logs/access.log\r\n```\r\n\r\nЗапустите logrotate вручную с указанием файла состояния:\r\n```bash\r\nlogrotate /home/newuser/logrotate.conf --state /home/newuser/logrotate-state --verbose --force\r\n```\r\n\r\nВывод:\r\n```bash\r\nreading config file /home/newuser/logrotate.conf\r\nHandling 1 logs\r\nrotating pattern: /home/newuser/logs/*.log hourly (24 rotations)\r\nempty log files are rotated, old logs are removed\r\nconsidering log /home/newuser/logs/access.log\r\nlog does not need rotating\r\n```\r\n\r\n> **`--verbose`** — выводит подробный лог выполнения. **`--force`** — принудительно выполняет ротацию, даже если она ещё не нужна по расписанию. **`--state`** — указывает, где хранить информацию о последней ротации.\r\n\r\nПроверьте содержимое файла состояния:\r\n```bash\r\ncat /home/newuser/logrotate-state\r\n```\r\n\r\nВывод:\r\n```bash\r\nlogrotate state -- version 2\r\n\"/home/newuser/logs/access.log\" 2020-05-18-16:0:0\r\n```\r\n\r\nLogrotate фиксирует, когда и какие журналы он последний раз обрабатывал. При следующем запуске через час файл будет ротирован в штатном режиме.\r\n\r\n### Автоматизация через cron\r\n\r\nЧтобы ротация выполнялась автоматически каждый час, добавьте задание в cron:\r\n\r\n```bash\r\ncrontab -e\r\n```\r\n\r\nДобавьте в конец файла:\r\n```bash\r\n14 * * * * /usr/sbin/logrotate /home/newuser/logrotate.conf --state /home/newuser/logrotate-state\r\n```\r\n\r\nЗадача будет запускаться на 14-й минуте каждого часа ежедневно.\r\n\r\n{{ contact_support_neutral_footer }}","images":[{"id":3231,"file":"https://fornex.com/media/article/img/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2020-05-18_%D0%B2_15.16.25.png","created":"2020-05-18T15:44:46+03:00"}],"updated_at":"2026-04-09T14:05:26+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/561/change/"},{"id":67,"title":"Управление почтовой очередью Exim","slug":"spam","priority":0,"summary":"Как работать с очередью почты, просматривать и удалять сообщения.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":66,"name":"Email","slug":"email","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**Exim** — это Mail Transfer Agent, агент передачи сообщений или почтовый сервер, использующийся во многих операционных системах семейства Unix.\r\n\r\nКаждое письмо, проходящее через почтовый сервер **Exim**, получает уникальный идентификатор (Message ID). \r\nПример: `1TrXS1-0003SL-3h`\r\n\r\nЭти идентификаторы используются для управления очередью, просмотра логов и удаления сообщений.\r\n\r\n### Основные команды для работы с очередью Exim\r\n\r\nВсе команды выполняются от пользователя **root**.\r\n\r\n#### Просмотр очереди\r\n- **Количество сообщений в очереди:**\r\n ```bash\r\n exim -bpc\r\n ```\r\n- **Полный список сообщений в очереди** (время, размер, ID, отправитель, получатель):\r\n ```bash\r\n exim -bp\r\n ```\r\n- **Просмотр заголовков конкретного сообщения:**\r\n ```bash\r\n exim -Mvh [ID]\r\n ```\r\n- **Просмотр тела письма:**\r\n ```bash\r\n exim -Mvb [ID]\r\n ```\r\n- **Просмотр логов сообщения:**\r\n ```bash\r\n exim -Mvl [ID]\r\n ```\r\n\r\n#### Удаление сообщений\r\n- **Удалить одно сообщение по ID:**\r\n ```bash\r\n exim -Mrm 1TrXgs-0004t8-0W\r\n ```\r\n- **Удалить все замороженные (frozen) сообщения:**\r\n ```bash\r\n exipick -z -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения от определённого домена отправителя:**\r\n ```bash\r\n exipick -f @spamdomain.com -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения для определённого домена получателя:**\r\n ```bash\r\n exipick -r @victimdomain.com -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения из очереди:**\r\n ```bash\r\n exipick -i | xargs exim -Mrm\r\n ```\r\n- **Быстрое удаление большой очереди** (при сотнях тысяч сообщений) \r\nЕсли очередь сильно засорена, быстрее удалить её напрямую:\r\n ```bash\r\n rm -rfv /var/spool/exim4/input/\r\n rm -rfv /var/spool/exim4/msglog/\r\n sudo systemctl restart exim\r\n ```\r\n\r\n### Если установлен Postfix\r\n- **Просмотреть очередь:**\r\n ```bash\r\n mailq\r\n ```\r\n- **Удалить все сообщения из очереди:**\r\n ```bash\r\n postsuper -d ALL\r\n ```\r\n\r\n### Полезные советы\r\n- Перед массовым удалением сообщений рекомендуется сделать резервную копию папки `/var/spool/exim4/`.\r\n- Регулярно мониторьте очередь командой `exim -bpc`. Если количество сообщений постоянно растёт — это сигнал о возможной спам-атаке или неправильной конфигурации.\r\n- Для удобной работы с очередью можно использовать утилиту `exipick` — она позволяет гибко фильтровать сообщения по разным критериям.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-01T17:39:36+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/67/change/"},{"id":335,"title":"Что такое php.ini?","slug":"php-ini","priority":0,"summary":"Как создать и использовать собственный файл php.ini на виртуальном хостинге (suPHP).","tags":[{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"Каждый пользователь может создать собственный файл **php.ini** и разместить его в директории, где находятся его скрипты. Это позволяет гибко управлять настройками PHP без необходимости обращаться в службу поддержки.\r\n\r\n### Защита php.ini от публичного доступа\r\nЕсли вы размещаете **php.ini** внутри **public_html**, обязательно закройте к нему доступ извне. Откройте (или создайте) файл `.htaccess` в корневой папке сайта — например, `/home/user/public_html`, где `user` — ваше имя пользователя в cPanel — и добавьте следующий блок:\r\n```apache\r\n\r\norder allow,deny\r\ndeny from all\r\n\r\n```\r\n\r\nЭто предотвратит просмотр файла php.ini через браузер.\r\n\r\n!!! Info Важно\r\n Если PHP работает в режиме CGI или suPHP, использование директив `php_flag`, `php_admin_flag`, `php_value` и подобных в файле `.htaccess` недопустимо — это приведёт к ошибке **500 Internal Server Error**.\r\n\r\n### Применение php.ini ко всему сайту\r\n\r\nПо умолчанию пользовательский php.ini действует только в той директории, где он расположен. Чтобы он применялся ко всему сайту, добавьте одну из следующих строк в файл `.htaccess` — перед блоком `` — в зависимости от вашего сервера:\r\n\r\n**Для большинства серверов:**\r\n```apache\r\nsuPHP_ConfigPath /home/user/public_html\r\n```\r\n\r\n**Для серверов hostde6 и hostde15:**\r\n```apache\r\nlsapi_phpini /home/user/public_html\r\n```\r\n\r\nЗамените `user` на ваше реальное имя пользователя в cPanel.\r\n\r\n### Права доступа к файлам\r\n| Права | Значение |\r\n|---|---|\r\n| `644` | Владелец может писать, остальные — только читать (по умолчанию для файлов) |\r\n| `444` | Только чтение для всех, включая собственные скрипты |\r\n| `755` | Стандартные права для папок (менять не требуется) |\r\n\r\nПри правах `644` запись в файлы разрешена только скриптам, работающим в рамках вашего аккаунта. Права `444` добавляют дополнительный уровень защиты, запрещая запись даже вашим собственным скриптам — это необязательно, но допустимо.\r\n\r\nОбщее правило: **не меняйте права доступа** при установке скриптов, даже если инструкция требует это сделать. Шаг с CHMOD можно смело пропускать.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Пример php.ini с основными параметрами\r\n> Синтаксис: `директива = значение` — строки, начинающиеся с `;`, являются комментариями и игнорируются PHP.\r\n\r\n- **`safe_mode`** `= Off`\r\n- **`disable_functions`** `=` — запрет выполнения указанных функций PHP в целях безопасности\r\n- **`max_execution_time`** `= 30` — максимальное время выполнения скрипта в секундах\r\n- **`memory_limit`** `= 16M` — максимальный объём оперативной памяти, доступный скрипту\r\n- **`error_reporting`** `= E_ALL & ~E_NOTICE` — показывать все ошибки, кроме замечаний\r\n- **`display_errors`** `= On` — вывод ошибок в браузер (удобно при отладке)\r\n- **`variables_order`** `= \"EGPCS\"` — порядок регистрации переменных: E = встроенные, G = GET, P = POST, C = Cookie, S = сессии\r\n- **`register_globals`** `= On` — доступ к переменным GET/POST/Cookie/сессий как к обычным переменным\r\n- **`post_max_size`** `= 55M` — максимальный объём принимаемых POST-данных\r\n- **`magic_quotes_gpc`** `= On` — автоматическое экранирование кавычек из POST/GET/Cookie\r\n- **`file_uploads`** `= On` — разрешить загрузку файлов\r\n- **`;upload_tmp_dir`** `=` — временная директория для загружаемых файлов (не забудьте создать её, если задаёте)\r\n- **`upload_max_filesize`** `= 5M` — максимальный размер загружаемого файла\r\n- **`session.save_handler`** `= files` — хранить данные сессий в файлах\r\n- **`session.save_path`** `= /tmp` — директория для файлов сессий (создайте её при необходимости)\r\n- **`session.use_cookies`** `= 1` — использовать cookie для работы с сессиями\r\n- **`session.name`** `= PHPSESSID` — имя cookie, используемое для идентификации сессии\r\n- **`session.auto_start`** `= 0` — не запускать сессию автоматически при каждом запросе\r\n- **`session.cookie_lifetime`** `= 0` — сессионная cookie удаляется при закрытии браузера\r\n- **`session.use_trans_sid`** `= 1` — автоматически добавлять ID сессии к ссылкам (если cookie отключены)\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-25T18:01:20+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/335/change/"},{"id":58,"title":"Что такое SSH?","slug":"ssh","priority":0,"summary":"Описание защищенной оболочки SSH для удаленного управления сервером.","tags":[{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**SSH («безопасная оболочка»)** — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и передачу файлов. Он шифрует весь трафик, включая передаваемые пароли, что делает его более безопасным, чем протоколы Telnet и rlogin. SSH допускает выбор различных алгоритмов шифрования и имеет реализации для большинства операционных систем.\r\n\r\nSSH позволяет передавать через небезопасный канал другие сетевые протоколы, обеспечивая удаленную работу на компьютере через командную оболочку, а также передачу по шифрованному каналу звукового потока или видео. Для этого используется функция Port Forwarding в соединении TCP. Кроме того, SSH может использовать сжатие передаваемых данных для последующей их шифрации, что удобно для удаленного запуска клиентов X Window System.\r\n\r\n### История и развитие SSH\r\nПервая версия протокола, SSH-1, была разработана в 1995 году исследователем Tatu Yl’nen из Технологического университета Хельсинки. SSH-1 был создан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, которая не совместима с SSH-1. Протокол приобрел популярность, и к 2000 году его использовало около двух миллионов пользователей.\r\n\r\nВ 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта. Однако в некоторых странах по-прежнему требуется специальное разрешение для использования определенных методов шифрования, включая SSH.\r\n\r\nВ современных реализациях (включая OpenSSH с ~2017 года) поддержка SSH-1 полностью устранена. Практически все текущее использование основано на SSH-2.\r\n\r\n### Реализации SSH\r\nСуществуют две основные реализации SSH: собственническая коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80% компьютеров в Интернете использовали именно OpenSSH. Собственническая реализация разрабатывается организацией SSH Inc. и бесплатна для некоммерческого использования.\r\n\r\n### Безопасность SSH\r\nПротокол SSH-2 устойчив к атакам «man-in-middle», в отличие от протокола telnet. То есть, прослушивание трафика, «снифинг», ничего не дает злоумышленнику. Он также устойчив к атакам перехвата сессии (session hijacking) и оатакам подмены DNS (DNS spoofing).\r\n\r\n### Примеры использования SSH\r\n- Подключение к локальному SSH-серверу: `$ ssh -p 30000 user@127.0.0.1`\r\n- Генерация пары SSH-2 RSA-ключей: `$ puttygen -t rsa -b 4096 -o sample`\r\n\r\nБолее детальная информация о подключении по протоколу SSH в следующих статьях:\r\n- [Подключение к VPS или выделенному серверу по SSH в Windows](https://fornex.com/ru/help/ssh-to-vps/)\r\n- [Подключение к VPS или выделенному серверу по SSH на macOS](https://fornex.com/ru/help/ssh-to-vps-mac/)\r\n- [Настройка аутентификации по SSH-ключу на сервере](https://fornex.com/ru/help/authorization-ssh-key/)\r\n\r\nНекоторые клиенты, например, **PuTTY** — имеют и графический интерфейс пользователя. \r\nДля использования SSH в Python существуют модули вроде `python-paramiko` и `python-twisted-conch`. \r\n\r\n### Рекомендации по безопасности\r\n- Запрещение удаленного root-доступа.\r\n- Запрещение подключения с пустым паролем.\r\n- Выбор нестандартного порта для SSH-сервера.\r\n- Использование длинных SSH2 RSA-ключей.\r\n\r\n### Ссылки\r\n#### Стандарты\r\n- [RFC4251. The Secure Shell (SSH) Protocol Architecture](http://tools.ietf.org/html/rfc4251)\r\n- [RFC4251. Архитектура протокола SSH (перевод)](http://rfc2.ru/4251.rfc)\r\n\r\n#### Программы терминального доступа\r\n- [OpenSSH](http://www.openssh.com/) — свободная библиотека и набор утилит для поддержки шифрования.\r\n- [PuTTY](https://www.putty.org/) — популярный кроссплатформенный SSH-клиент.\r\n- [SecureCRT](https://www.vandyke.com/products/securecrt/) — SSH-клиент.\r\n\r\n#### Программы доступа к файлам\r\n- [WinSCP](http://winscp.net/eng/docs/lang:ru) — SFTP-клиент для Microsoft Windows.\r\n- [SSH Filesystem](http://fuse.sourceforge.net/sshfs.html) — позволяет подключить директорию, доступную на удаленной машине по ssh как локальную директорию в GNU/Linux.","images":[],"updated_at":"2026-01-23T14:38:18+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/58/change/"}]}}},"articleStatus":{"en":{},"de":{},"es":{},"fr":{},"it":{},"ru":{"ssh-guides":200}},"articleBodies":{"en":{},"de":{},"es":{},"fr":{},"it":{},"ru":{}},"tagDict":{"ru":[{"id":107,"name":"aaPanel","slug":"aapanel","icon":null},{"id":93,"name":"Партнерская программа","slug":"affiliates","icon":null},{"id":75,"name":"Android","slug":"android","icon":null},{"id":5,"name":"Apache","slug":"apache","icon":null},{"id":82,"name":"Бэкап","slug":"backup","icon":null},{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":1,"name":"Основы","slug":"basics","icon":null},{"id":122,"name":"BeAdmin","slug":"beadmin","icon":null},{"id":57,"name":"Оплата","slug":"billing","icon":"https://fornex.com/media/dream_tag_icon/comments-alt-dollar.svg"},{"id":12,"name":"Bitrix","slug":"bitrix","icon":null},{"id":106,"name":"BrainyCP","slug":"brainy-cp","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":108,"name":"CloudPanel","slug":"cloudpanel","icon":null},{"id":25,"name":"Кластеризация","slug":"clustering","icon":null},{"id":8,"name":"CMS","slug":"cms","icon":null},{"id":13,"name":"Панель управления","slug":"control-panel","icon":null},{"id":64,"name":"Cpanel","slug":"cpanel","icon":"https://fornex.com/media/dream_tag_icon/cpanel.svg"},{"id":72,"name":"Cron","slug":"cron","icon":null},{"id":126,"name":"CyberPanel","slug":"cyberpanel","icon":null},{"id":3,"name":"Базы данных","slug":"database","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":39,"name":"Django","slug":"django","icon":null},{"id":86,"name":"DKIM","slug":"dkim","icon":null},{"id":10,"name":"DLE","slug":"dle","icon":null},{"id":18,"name":"DNS","slug":"dns","icon":null},{"id":104,"name":"Docker","slug":"docker","icon":null},{"id":88,"name":"Домен","slug":"domain","icon":null},{"id":74,"name":"Drupal","slug":"drupal","icon":null},{"id":66,"name":"Email","slug":"email","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":65,"name":"FAQ","slug":"faq","icon":null},{"id":63,"name":"FileZilla","slug":"filezilla","icon":null},{"id":102,"name":"Финансы","slug":"finance","icon":null},{"id":21,"name":"Firewall","slug":"firewall","icon":null},{"id":44,"name":"FTP","slug":"ftp","icon":null},{"id":40,"name":"Git","slug":"git","icon":null},{"id":105,"name":"HestiaCP","slug":"hestia-cp","icon":null},{"id":4,"name":"High availability","slug":"high-availability","icon":null},{"id":99,"name":"HTTPD","slug":"httpd","icon":null},{"id":61,"name":"IOS","slug":"ios","icon":null},{"id":115,"name":"IPMI","slug":"ipmi","icon":null},{"id":116,"name":"IPMIView","slug":"ipmiview","icon":null},{"id":123,"name":"IPsec","slug":"ipsec","icon":null},{"id":47,"name":"ISPmanager","slug":"ispmanager","icon":null},{"id":37,"name":"Java","slug":"java","icon":null},{"id":11,"name":"Joomla","slug":"joomla","icon":null},{"id":7,"name":"LAMP","slug":"lamp","icon":null},{"id":54,"name":"Let's Encrypt","slug":"lets-encrypt","icon":"https://fornex.com/media/dream_tag_icon/lock.svg"},{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":28,"name":"Балансировка","slug":"load-balancing","icon":null},{"id":60,"name":"MacOS","slug":"macos","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":14,"name":"MongoDB","slug":"mongodb","icon":null},{"id":81,"name":"Мониторинг","slug":"monitoring","icon":null},{"id":2,"name":"MySQL","slug":"mysql","icon":null},{"id":20,"name":"Сеть","slug":"network","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null},{"id":94,"name":"NodeJS","slug":"nodejs","icon":null},{"id":15,"name":"NoSQL","slug":"nosql","icon":null},{"id":84,"name":"OneClickApp","slug":"one-click-app","icon":null},{"id":90,"name":"Управление заказом","slug":"order-management","icon":"https://fornex.com/media/dream_tag_icon/sliders-v-square.svg"},{"id":98,"name":"PHP","slug":"php","icon":null},{"id":41,"name":"PHP Frameworks","slug":"php-frameworks","icon":null},{"id":52,"name":"PhpMyAdmin","slug":"phpmyadmin","icon":null},{"id":17,"name":"PostgreSQL","slug":"postgresql","icon":null},{"id":125,"name":"Локальная сеть","slug":"private-network","icon":null},{"id":71,"name":"PuTTY","slug":"putty","icon":null},{"id":36,"name":"Python","slug":"python","icon":null},{"id":97,"name":"RDP","slug":"rdp","icon":null},{"id":16,"name":"Redis","slug":"redis","icon":null},{"id":38,"name":"Ruby","slug":"ruby","icon":null},{"id":119,"name":"Хранилище S3","slug":"s3-storage","icon":null},{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null},{"id":53,"name":"SSL","slug":"ssl","icon":null},{"id":79,"name":"Статистика","slug":"statistics","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":46,"name":"Vesta CP","slug":"vesta-cp","icon":null},{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":62,"name":"Windows","slug":"windows","icon":null},{"id":96,"name":"Windows Server","slug":"windows-server","icon":"https://fornex.com/media/dream_tag_icon/windows.svg"},{"id":9,"name":"WordPress","slug":"wordpress","icon":null}]},"articleListByTag":{}},"payment":{"options":{},"checkoutStatus":"idle"}}}