Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам
основного сервера добавьте:\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 Mb на загрузку файлов через веб.\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\r\nЭти параметры дают возможность закачивать файлы до 8 Mb, но если вам нужно больше, то вы можете поставить другие значения, например 16M\r\n\r\nпеременная memory_limit должна быть больше, чем post_max_size\r\n\r\nВнимание: собственный файл **php.ini** действителен только в пределах директории, в которой размещён, если не указана специальная опция в файле **.htaccess**, см. ниже.\r\n\r\nЧто бы ваши значения действовали на всю учетную запись и все скрипты, тогда добавьте строки, которые описаны ниже, в начало файла **.htaccess**, который расположен в **/public_html/** если его нет, тогда создайте его\r\n\r\n```\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Внимание! : /home/user/... - вместо **user** вам нужно вписать ваше **имя пользователя** CPanel\r\n\r\nДля того, чтобы увидеть отображение выбранного PHP, текущую конфигурацию и версию создаем текстовый документ **info.php** и размещаем его в папке **public_html**.\r\n \r\nОткрываем этот документ и вписываем:\r\n\r\n```\r\n\r\n```\r\n\r\nСохраняем файл.\r\n\r\nОткрываем браузер и вводим в адресную строку:\r\n\r\n* **ваш_сайт/info.php.**\r\n\r\nНажимаем Enter и видим все настройки PHP для вашей учетной записи. Найдите например значение **memory_limit** и посмотрите значение.","images":[],"updated_at":"2025-10-22T09:30:16+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: [Подключение к VPS или выделенному серверу по SSH на macOS](https://fornex.com/ru/help/ssh-to-vps-mac/)\r\n- Отдельная инструкция по подключению на Windows OC: [Подключение к VPS или выделенному серверу по SSH на Windows](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-01-30T17:00:57+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":"Правильная настройка кэширования и сжатия статических ресурсов на веб-сервере значительно ускоряет загрузку сайта и снижает нагрузку на сервер. В этой статье мы рассмотрим, как настроить срок действия кэша с помощью директивы **Expires** и включить GZIP-сжатие для статических файлов в Nginx.\r\n\r\n---\r\n\r\n**Настройка директивы Expires для статических файлов**\r\n\r\nДиректива **Expires** задаёт период, в течение которого кэшированные ресурсы считаются актуальными. Это позволяет браузеру использовать локальные копии файлов, не отправляя повторные запросы на сервер.\r\n\r\nОткройте конфигурационный файл Nginx для вашего виртуального хоста, обычно это `/etc/nginx/nginx.conf` в Linux. Найдите блок **server {}**, содержащий секцию **location** для обработки статических файлов.\r\n\r\nПример конфигурации секции **location**:\r\n\r\n```\r\nlocation ~* \\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf)$ {\r\n root /var/www/username/data/www/usernamesite.ru;\r\n access_log /var/www/nginx-logs/usernamesite isp;\r\n access_log /var/www/httpd-logs/usernamesite.ru.access.log;\r\n error_page 404 = @fallback;\r\n expires 7d;\r\n}\r\n```\r\n\r\n- **expires 7d** — указывает, что браузер будет хранить кэш 7 дней.\r\n- Для редко обновляемых файлов, таких как CSS, JS или изображения, можно увеличить срок кэширования до нескольких месяцев или года.\r\n\r\n**Применение шаблона для всех виртуальных хостов**\r\n\r\nЧтобы автоматически применять директиву **Expires** для статических файлов на всех виртуальных хостах через панель управления, создайте файл `/usr/local/ispmgr/etc/server.templ` со следующим содержимым:\r\n\r\n```\r\nlocation ~* \\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf)$ {\r\n expires 7d;\r\n}\r\n```\r\n\r\n**Включение GZIP-сжатия для статических файлов**\r\n\r\nGZIP-сжатие уменьшает размер текстовых файлов, что снижает объём передаваемых данных и ускоряет загрузку страниц.\r\n\r\nДобавьте следующие директивы в блок **server {}** вашего виртуального хоста:\r\n\r\n```\r\nserver {\r\n ...\r\n gzip on;\r\n gzip_disable \"msie6\";\r\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\r\n}\r\n```\r\n\r\n- **gzip on;** — активирует сжатие.\r\n- **gzip_disable \"msie6\";** — отключает сжатие для устаревших браузеров, таких как Internet Explorer 6.\r\n- **gzip_types** — определяет MIME-типы файлов, которые будут сжиматься.\r\n\r\n!!! note Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы можете гибко настраивать конфигурацию Nginx, включая кэширование и сжатие. Это помогает оптимизировать производительность сайта и снизить нагрузку на сервер.","images":[],"updated_at":"2025-09-22T14:04:31+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","tags":[{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"**По умолчанию PHP-скриптами считаются лишь файлы с расширением .php и .phtml.**\r\n\r\nЧтобы включить обработку PHP-кода в файлах с расширением **.html** или **.htm**, нужно в каталоге сайта создать файл с названием **.htaccess** или просто откройте его, если файл уже существует. \r\n\r\nДобавьте в начало файла следующие строки или приведите строки к следующему виду:\r\n\r\n```\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В данном примере испльзуемая Вами на сайте версия php будет 7.0, если требуется другая версия - укажите её вместо **ea-php70**, к примеру значение **ea-php72** соответсвует версии php 7.2.\r\n\r\nПример для версий php 5.6 будет выглядеть так:\r\n```\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Соответсвенно в случае использования php 5.3, вместо **ea-php56** требуется указать **ea-php53**.\r\n\r\nТеперь файл с расширением html, htm будут обрабатываться как php.\r\n\r\n**В случае изменения используемой на сайте версии php через панель управления заказом в биллинге или через cPanel процедруру включения обработки php в html требуется повторить.**","images":[],"updated_at":"2025-10-22T11:57:43+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":"Ограничение доступа к сайту через Nginx","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**Ограничение доступа к файлам**\r\n\r\nЧтобы закрыть доступ к файлам, которые могут вызывать повышенный интерес:\r\n\r\n```\r\n location ~ /.svn/ {\r\n deny all;\r\n }\r\n```\r\n\r\n**Разграничение доступа по IP**\r\n\r\nВы можете разрешать или запрещать доступ к файлам с определённых IP-адресов, используя директивы **allow** и **deny**:\r\n\r\n```\r\n location /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**Защита с логином и паролем**\r\n\r\nДля более гибкой защиты можно использовать директивы **auth\\basic** и **auth\\basic\\user\\file**. Пользователю будет необходимо ввести логин и пароль:\r\n\r\n```\r\n location /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**Комбинированная защита**\r\n\r\nВы можете сочетать IP-фильтр и базовую аутентификацию:\r\n\r\n```\r\n location /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**Защита от запросов к несуществующим файлам**\r\n\r\n```\r\n location ~ \\.(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**Перезапуск Nginx**\r\n\r\nПосле внесения изменений необходимо перезапустить Nginx одной из команд:\r\n\r\n```\r\nsystemctl reload nginx\r\nservice nginx reload\r\n```\r\n\r\n**Перенаправление по IP**\r\n\r\nВ зависимости от IP-адреса Nginx может выполнять перенаправление:\r\n\r\n```\r\nlocation / {\r\n \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\r\n!!! note Примечание\r\n В этом примере все посетители будут перенаправлены на `https://$host$request_uri`, кроме запроса с IP-адреса 111.111.111.111.\r\n\r\n\r\n**Защита от перебора паролей с помощью iptables**\r\n\r\nВы можете блокировать IP на время, если количество запросов превышает установленный порог:\r\n\r\n```\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!!! note Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы можете полностью управлять конфигурацией NGINX. Это позволяет гибко настраивать доступ к файлам, реализовывать IP-фильтры, защиту паролем и блокировку перебора паролей с помощью iptables.","images":[],"updated_at":"2025-10-23T16:53:42+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/69/change/"},{"id":67,"title":"Определение и блокировка вредоносной почты","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, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистра, например **1TrXS1-0003SL-3h**, и используются большинством команд администрирования очереди и логгирования в Exim.\r\n\r\n**Exim** — это Mail Transfer Agent, агент передачи сообщений или почтовый сервер, использующийся во многих операционных системах семейства Unix.\r\n\r\n\r\nРассмотрим краткий список команд **ssh** для управления почтой и почтовой очередью. Все команды нужно выполнять от **root**\r\n\r\nВывести количество сообщений в почтовой очереди (то, что мы видим в мониторинге): \r\n\r\n```\r\nexim -bpc\r\n```\r\n\r\nПечать списка сообщений в очереди. Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель: \r\n\r\n```\r\nexim -bp \r\n```\r\n\r\nПример такого списка: \r\n\r\n```\r\n4h 791 1TrXgs-0004t8-0W ####@#########.com \r\n\r\n4h 1.8K 1TrXgu-0004tZ-5w \r\n####@#########.com\r\n```\r\n\r\n\r\nСоответственно идентификаторы этих двух сообщений: **1TrXgs-0004t8-0W** и **1TrXgu-0004tZ-5w**\r\n\r\nУдалить сообщение из очереди: \r\n\r\n```\r\nexim -Mrm [id] \r\n```\r\n\r\n(Пример: exim -Mrm 1TrXgs-0004t8-0W, удалит из очереди сообщение с переданным идентификатором)\r\n\r\n\r\nПросмотреть заголовки сообщений: \r\n\r\n```\r\nexim -Mvh [id]\r\n```\r\n\r\nПросмотреть тело сообщений: \r\n\r\n```\r\nexim -Mvb [id]\r\n```\r\n\r\nПросмотр логов сообщения: \r\n\r\n```\r\nexim -Mvl [id]\r\n```\r\n\r\nУдалить все заблокированные сообщения в почтовой очереди: \r\n\r\n```\r\nexipick -z -i | xargs exim -Mrm\r\n```\r\n\r\nУдалить все сообщения из почтовой очереди, где домен отправителя domain: \r\n\r\n```\r\nexipick -f @domain -i | xargs exim -Mrm\r\n```\r\n\r\nУдалить все сообщения из почтовой очереди, где домен получателя domain: \r\n\r\n```\r\nexipick -r @domain -i | xargs exim -Mrm\r\n```\r\n\r\nУдалить все сообщения из почтовой очереди: \r\n\r\n```\r\nexipick -i | xargs exim -Mrm\r\n```\r\n\r\nЕсли в очереди несколько сотен тысяч сообщений, быстрее будет выполнить удаление очереди командами\r\n\r\n```\r\nrm -rfv /var/spool/exim4/input/\r\nrm -rfv /var/spool/exim4/msglog/\r\n```\r\n\r\nЕсли на сервере установлен не Exim a **postfix**, можно воспользоваться следующими командами\r\n**mailq** вывод почтовой очереди и ее очистка\r\n\r\n```\r\npostsuper -d ALL \r\n```\r\n\r\n\r\n-----------\r\n\r\n!!! info Помощь\r\n Если у Вас возникли трудности или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через [систему тикетов](https://fornex.com/my/tickets/).","images":[],"updated_at":"2025-10-28T17:09:58+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/67/change/"},{"id":201,"title":"Ошибка 500. Режим suPHP. Права на файлы и папки (chmod)","slug":"error500-suphp-chmod","priority":0,"summary":"Описание возникновения Internal Server Error. Режим работы suPHP и установки прав - Сhmod","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\r\nВ стандартном режиме **mod_php** веб-сервер Apache запущен и всегда работает от одного пользователя - nobody. Это является далеко не самым безопасным решением поскольку ошибка в правах доступа позволит другим пользователям читать Ваши файлы или даже делать в них изменения. **suPHP** страхует от этой проблемы, поскольку теперь каждый процесс запускается от конкретного пользователя. Кроме этого, данный режим работы решает проблему когда скрипты делают изменения в файлах и после этого файлы нельзя удалить/изменить через FTP поскольку они имеют владельца nobody. \r\n\r\nПримечания по работе и новые права доступа:\r\n\r\n* **644** - запись в файл разрешена (по умолчанию)\r\n\r\n* **444** - запись в файл запрещена (только чтение и исполнение)\r\n\r\n* **755** - права доступа на папки (по умолчанию, менять не требуется)\r\n\r\n**755** - должны стоять на папку **/public_html/ваш_домен** а также НЕ ИЗМЕНЯЙТЕ права на остальные системные папки/файлы (stats, logs, .htpasswd и на папку /domains). Все изменения должны касаться только папки /public_html/ваш_домен и её содержимого.\r\n\r\nНи в коем случае не выставляйте chmod **666/777** на файлы/папки. Это может угрожать безопасности Вашего аккаунта, а также скрипты в любом случае с этими правами работать НЕ будут. Потому в целях дополнительной защиты и была произведена настройка режима suPHP вместо стандартного mod_php\r\n\r\nОбратите внимание - при правах доступа **644** запись разрешена только для скриптов которые запускаются в среде Вашего аккаунта. Никто другой запись произвести не сможет. Для ещё большего увлечения безопасности Вы можете сменить права доступа у файлов на 444 - в этом случае даже Ваши скрипты не смогут ничего записать в файлы, но это не обязательно.\r\n\r\nОшибка **Internal Server Error** чаще всего означает что сервер заблокировал обращение к скрипту, это может быть по следующим причинам:\r\n\r\n* Вы выставили права доступа на файл(ы) отличающиеся от 644 или 444, сервер блокирует выполнение скрипта в целях безопасности (например - выставили CHMOD 666)\r\n\r\n* Вы выставили права доступа отличающиеся от 755 на папки(у). (например - выставили CHMOD 777)\r\n\r\n* Найдены не поддерживаемые директивы в файле .htaccess\r\n\r\nВ режиме **suPHP** не поддерживается установка директив **php_flag**, **php_admin_flag**, **php_value** и прочих, которые изменяют какие-либо параметры PHP окружения.\r\n\r\nДля примера, если у Вас в **.htaccess** будет присутствовать запись вида:\r\n\r\n```\r\nphp_flag register_globals On\r\n```\r\n\r\nили например\r\n\r\n```\r\ndisplay_errors Off\r\n```\r\n\r\nСервер вернёт ошибку **500 (Internal Server Error)**.","images":[],"updated_at":"2019-01-23T16:39:11+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\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\r\nОсновные настройки сеанса PuTTY\r\n\r\n3. (Опционально) В поле **Saved Sessions** введите название подключения (например, «My VPS») и нажмите **Save** — так настройки сохранятся для будущего использования.\r\n4. Нажмите **Open**.\r\n\r\nПри первом подключении появится предупреждение о неизвестном ключе сервера:\r\n\r\n\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\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## Полезные советы\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::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-01-30T16:58:33+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":"Путь к исполняемому файлу\r\n------------------\r\n\r\nДля того, что-бы узнать полный путь к исполняемому файлу, например, что-бы прописать его в конфигурационном файле вашей CMS или задании cron, вам нужно подключиться к консоли вашего сервера по [SSH](/help/ssh/) и выполнить команду:\r\n\r\n whereis имя_приложения\r\n\r\nНапример, что-бы узнать, полный путь к исполняемому файлу php:\r\n\r\n whereis php\r\n php: /usr/bin/php /usr/share/man/man1/php.1.gz\r\n\r\nЗдесь `/usr/bin/php` и будет необходимым вам полным путем к исполняемому файлу php.\r\n\r\n[Подробнее о работе в консоли](/help/linux-commands/)","images":[],"updated_at":"2025-10-23T16:37:15+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-скриптов","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\r\n\r\nЭтот режим предполагает подключение модуля mod_php в настройках веб-сервера Apache. В этом случае каждый процесс веб-сервера будет включать в себя этот модуль. Выбор этого режима особенно подходит для небольших сайтов с малой посещаемостью.\r\n\r\nПреимущества:\r\n\r\n* Самая высокая скорость работы скриптов, по сравнению с другими методами.\r\n* Простота работы, сервер сам обрабатывает скрипты.\r\n* Общий конфигурационный файл для всех скриптов (php.ini).\r\n* Возможность задания переменных конфигурации PHP в конфигурационном файле web-сервера или средствами файла .htaccess.\r\n\r\nНедостатки:\r\n\r\n* Все скрипты запускаются с правами, с которыми работает web-сервер, тем самым, если есть необходимость записи в какую либо директорию – права доступа необходимо дать на нее всем.\r\n* В случае запуска сторонних приложений скриптами (например, почтовая рассылка), нет возможности идентифицировать пользователя, который запустил процесс.\r\n* Излишняя нагрузка на web-сервер, apache занятый обработкой скриптов может медленно отдавать другие статические данные.\r\n* Ошибки в скриптах могут привести к неработоспособности всего web-сервера.\r\n\r\n#### PHP как CGI\r\n\r\nВ этом режиме запускается интерпретатор php-cgi для всех скриптов, для которых установлен CGI в качестве обработчика. Если большая часть сайта состоит из статического содержимого, то CGI будет хорошим выбором, т.к. будет обеспечено экономичное использование оперативной памяти за счет того, что интерпретатор будет вызываться в случае необходимости. Но и в то же время такой метод замедляет исполнение, т.к. при каждом запросе понадобится загрузка интерпретатора в память.\r\n\r\nПреимущества:\r\n\r\n* Все скрипты выполняются с правами пользователя – владельца www-домена.\r\n* Возможность индивидуальной настройки PHP для каждого пользователя.\r\n* Меньший расход оперативной памяти по сравнению с модулем apache.\r\n* Ошибки в скриптах не приводят к падению веб-сервера в отличие от режима PHP как модуль apache.\r\n\r\nНедостатки:\r\n\r\n* Проблемы с авторизацией средствами PHP (средствами команды Header) по причине того, что не передаются некоторые переменные сервера php-скрипту.\r\n\r\n#### PHP как FastCGI\r\n\r\nПо своим свойствам FastCGI является золотой серединой между mod_php и CGI режимами. В нём исключены недостатки CGI и присутствуют его достоинства. При включенном FastCGI, в ОЗУ сервера располагается постоянно запущенный процесс-обработчик. Это избавляет от необходимости при каждом запросе запускать новый процесс, как в случае использования CGI. По быстродействию FastCGI аналогичен mod_php.\r\n\r\nFastCGI сочитает в себе преимущества всех приведенных выше режимов. В этом случае php-обработчик запускается на постоянной основе, и теперь на каждый запрос не нужно создавать новый процесс, что было свойственно режиму CGI. FastCGI особенно подходит для высоконагруженных сайтов, нагрузка на которые постоянна.\r\n\r\nПреимущества:\r\n\r\n* За счет кэширования некоторых промежуточных данных скрипт не интерпретируется каждый раз при выполнении и достигается более высокая скорость по сравнению с PHP как CGI.\r\n\r\nНедостатки:\r\n\r\n* Лишний процесс пользователя (php-cgi) находится в памяти после первого обращения к процессу.\r\n* Изменение режима работы PHP в ISPmanager.\r\n* Настройка режима работы PHP для сайта осуществляется через меню Домены – WWW домены – свойства сайта – PHP, при условии, что все эти режимы разрешены пользователю – владельцу www-домена.\r\n\r\n\r\n#### LSPHP\r\n\r\nLiteSpeed PHP (LSPHP) — реализован в виде модуля mod_lsapi на веб-сервере Apache и является наиболее производительным вариантом запуска PHP на серверах под управлением сPanel.\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\r\n\r\n#### Как установить модули PHP\r\n\r\nМодули PHP можно ставить через панель ISPmanager в разделе \"PHP\".\r\nКак запустить скрипт PHP из планировщика cron?\r\n\r\nСкрипт PHP можно запустить с помощью планировщика cron, прописав перед адресом скрипта:\r\n```\r\n/usr/bin/php-cgi /(путь...)/script.php\r\n```\r\nСкрипт PHP может находиться в любой директории, т.е. быть недоступным через FTP.","images":[],"updated_at":"2025-10-23T16:40:24+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":562,"title":"Управление логами с помощью logrotate на Centos 7","slug":"logrotate-centos-7","priority":0,"summary":"Настройка logrotate на Centos 7 для управления системными и прикладными журналами","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** — один из базовых инструментов администрирования. Он помогает поддерживать порядок в системе и предотвращает переполнение диска. При работе с [виртуальными серверами](https://fornex.com/ru/virtual-private-servers/) или управлении проектами на [выделенных серверах](https://fornex.com/ru/dedicated-servers/) корректная настройка ротации журналов обеспечивает стабильность и предсказуемость работы сервисов.\r\n\r\nВ этой статье мы рассмотрим, как правильно настроить logrotate для системных и прикладных журналов.\r\n\r\n---\r\n\r\n**Проверка установленной версии logrotate**\r\n\r\nПрежде чем настраивать ротацию логов, убедитесь, что утилита **logrotate** установлена и работает корректно. Обычно на Centos 7 она уже присутствует. Для проверки используйте команду:\r\n\r\n```\r\nlogrotate --version\r\n```\r\n\r\nОжидаемый результат:\r\n\r\n```\r\nlogrotate 3.18.0\r\n```\r\n\r\nЕсли версия отображается корректно, утилита готова к дальнейшей настройке.\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\r\n```\r\nvi /etc/logrotate.conf\r\n```\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.conf` определяет параметры, применяемые по умолчанию. Если в конфигурации для конкретного сервиса они не переопределены, будут использоваться именно эти значения.\r\n\r\n---\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**Пример настройки для приложения**\r\n\r\nПриложение **my-app** сохраняет логи в каталог `/var/log/my-app/`. Для него можно создать отдельный конфигурационный файл:\r\n\r\n```\r\nvi /etc/logrotate.d/my-app\r\n```\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`** — хранится 14 архивных копий.\r\n- **`compress`** — старые логи сжимаются.\r\n- **`notifempty`** — пустые файлы игнорируются.\r\n- **`create 0640 www-data www-data`** — создаётся новый файл с правами `0640` и владельцем `www-data`.\r\n- **`postrotate … endscript`** — после ротации выполняется команда `systemctl reload my-app`.\r\n\r\n---\r\n\r\n**Проверка конфигурации**\r\n\r\nПроверка в режиме отладки:\r\n\r\n```\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nПроверка отдельного файла:\r\n\r\n```\r\nsudo logrotate -d /etc/logrotate.d/my-app\r\n```\r\n\r\nПринудительная ротация:\r\n\r\n```\r\nsudo logrotate /etc/logrotate.conf --force\r\n```\r\n\r\n---\r\n\r\n**Ротация логов в пользовательских каталогах**\r\n\r\nЕсли приложение сохраняет логи, например, в `/home/user/logs/`, создаётся отдельный конфигурационный файл:\r\n\r\n```\r\nvi /home/user/logrotate.conf\r\n```\r\n\r\nПример содержимого:\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\r\n```\r\nmkdir ~/logs\r\ntouch ~/logs/access.log\r\n```\r\n\r\nПринудительная ротация с сохранением состояния:\r\n\r\n```\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---\r\n\r\n**Автоматизация через cron**\r\n\r\nДля регулярного выполнения ротации можно использовать **cron**. Откройте таблицу заданий:\r\n\r\n```\r\ncrontab -e\r\n```\r\n\r\nПример задания для запуска каждый час (на 14-й минуте):\r\n\r\n```\r\n14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state\r\n```","images":[],"updated_at":"2025-11-03T15:51:44+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 на Debian 9 для управления системными и прикладными журналами","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\nLogrotate устанавливается по умолчанию на Debian 9 и настроена для обработки ротации журналов для всех установленных пакетов и приложений.\r\n\r\n\r\nПроверка версии Logrotate:\r\n@@\r\nlogrotate --version\r\n@@\r\n\r\nВывод команды будет таким:\r\n@@\r\nroot@hostname:~# logrotate --version\r\nlogrotate 3.11.0\r\n@@\r\n\r\nСтандартная конфигурация Logrotate хранится по двум путям:\r\n\r\n* Файл **/etc/logrotate.conf** хранит часть конфигураций по умолчанию. Также он содержит шаблоны архивирования для не системных файлов.\r\n* Файл **/etc/logrotate.d/** предназначен для сохранения сторонних параметров, которые администратор задает самостоятельно. Здесь хранятся шаблоны ротаций для системных утилит.\r\n\r\nРассмотрим конфигурационный файл Logrotate **/etc/logrotate.d** для пакетного менеджера **apt**:\r\n@@\r\ncat /etc/logrotate.d/apt\r\n@@\r\nВывод команды будет таким:\r\n@@\r\nroot@hostname:~# cat /etc/logrotate.d/apt\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Этот файл содержит конфигурационные блоки для двух разных файлов журнала в каталоге **/var/log/apt/: term.log и history.log**. Оба блока имеют одинаковые опции. Любые параметры, не заданные в этих конфигурационных блоках, наследуют значения по умолчанию или значения, установленные в файле **/etc/logrotate.conf**. \r\n\r\nПараметры, установленные для журналов apt:\r\n\r\n* **rotate 12** - указывает, что утилита сохраняет последние двенадцать логов;\r\n* **monthly** - обновлять один раз в месяц;\r\n* **compress** - команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;\r\n* **missingok** - не записывать сообщение об ошибке, если лог-файл отсутствует;\r\n* **notifempty** - не ротировать пустой лог-файл.\r\n\r\n\r\nДля управления файлами журналов для приложений можно использовать два варианта:\r\n\r\n* Создать новый файл конфигурации **Logrotate** и поместить его в каталог **/etc/logrotate.d/**. Он будет работать ежедневно, как пользователь root вместе со всеми другими стандартными заданиями LogRotate.\r\n* Создать новый конфигурационный файл и запустить его с настройками **LogRotate** по умолчанию в Debian.\r\n\r\n**Создание конфигурации в /etc/logrotate.d/**\r\n\r\nВ качестве примера настроим обновления для сервера, который пишет логи в файлы **access.log и error.log**, расположенные в каталоге **/var/log/app/**. \r\n\r\nЧтобы добавить конфигурацию каталог **/etc/logrotate.d/**, откройте новый файл:\r\n@@\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) и группы (www-data);\r\n* **sharedscripts** - эта опция означает, что любые скрипты, добавленные в конфигурацию, выполняются только один раз за запуск после сжатия файлов, а не для каждого отдельного обновленного файла. Поскольку наша конфигурация будет соответствовать двум лог-файлам (access.log и error.log), скрипт, указанный в postrotate, будет запускаться только 1 раз;\r\n* **postrotate to endscript** - скрипт в этом блоке будет запущен после того, как файл журнала обновится. В примере приложение перезагружается. \r\n\r\nПосле настройки конфигурации в соответствии с требованиями, можно выполнить тестирование с помощью команды:\r\n@@\r\nsudo logrotate /etc/logrotate.conf --debug\r\n@@\r\n@@\r\nroot@hostname:~# logrotate /etc/logrotate.conf --debug\r\nreading config file /etc/logrotate.conf\r\nincluding /etc/logrotate.d\r\nreading config file app\r\nerror: app:13 lines must begin with a keyword or a filename (possibly in double quotes)\r\nreading config file apt\r\nreading config file dpkg\r\nreading config file rsyslog\r\nReading state from file: /var/lib/logrotate/status\r\nAllocating hash table for state file, size 64 entries\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\nCreating new state\r\n\r\nHandling 9 logs\r\n\r\nrotating pattern: /var/log/example-app/*.log after 1 days (14 rotations)\r\nempty log files are not rotated, old logs are removed\r\nNo logs found. Rotation not needed.\r\n\r\nrotating pattern: /var/log/apt/term.log monthly (12 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/apt/term.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n\r\nrotating pattern: /var/log/apt/history.log monthly (12 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/apt/history.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n\r\nrotating pattern: /var/log/dpkg.log monthly (12 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/dpkg.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n\r\nrotating pattern: /var/log/alternatives.log monthly (12 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/alternatives.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n\r\nrotating pattern: /var/log/syslog\r\n after 1 days (7 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/syslog\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not day ago yet)\r\n\r\nrotating pattern: /var/log/mail.info\r\n/var/log/mail.warn\r\n/var/log/mail.err\r\n/var/log/mail.log\r\n/var/log/daemon.log\r\n/var/log/kern.log\r\n/var/log/auth.log\r\n/var/log/user.log\r\n/var/log/lpr.log\r\n/var/log/cron.log\r\n/var/log/debug\r\n/var/log/messages\r\n weekly (4 rotations)\r\nempty log files are not rotated, old logs are removed\r\nconsidering log /var/log/mail.info\r\n log /var/log/mail.info does not exist -- skipping\r\nconsidering log /var/log/mail.warn\r\n log /var/log/mail.warn does not exist -- skipping\r\nconsidering log /var/log/mail.err\r\n log /var/log/mail.err does not exist -- skipping\r\nconsidering log /var/log/mail.log\r\n log /var/log/mail.log does not exist -- skipping\r\nconsidering log /var/log/daemon.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nconsidering log /var/log/kern.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nconsidering log /var/log/auth.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nconsidering log /var/log/user.log\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nconsidering log /var/log/lpr.log\r\n log /var/log/lpr.log does not exist -- skipping\r\nconsidering log /var/log/cron.log\r\n log /var/log/cron.log does not exist -- skipping\r\nconsidering log /var/log/debug\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nconsidering log /var/log/messages\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not week ago yet)\r\nnot running postrotate script, since no logs were rotated\r\n\r\nrotating pattern: /var/log/wtmp monthly (1 rotations)\r\nempty log files are rotated, old logs are removed\r\nconsidering log /var/log/wtmp\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n\r\nrotating pattern: /var/log/btmp monthly (1 rotations)\r\nempty log files are rotated, old logs are removed\r\nconsidering log /var/log/btmp\r\n Now: 2020-05-21 16:52\r\n Last rotated at 2020-05-21 06:00\r\n log does not need rotating (log has been rotated at 2020-5-21 6:0, that is not month ago yet)\r\n@@\r\nВ результате будет вызвана утилита logrotate, с указанием на стандартный файл конфигурации в режиме отладки.\r\nВ консоль будет выводиться информация, о том какие файлы logrotate обрабатывает в данный момент. Стандартная настройка Logrotate будет выполняться один раз в день, включая новую конфигурацию.\r\n\r\n**Создание конфигурации LogRotate**\r\n\r\nВ этом примере мы имеем приложение, которое работает под пользователем **testing**, генерация журналов, которые хранятся в каталоге **/home/testing/logs/**. Нам нужно сделать ротацию этих журналов ежечасно, поэтому мы должны установить его за пределами структуры **/etc/logrotate.d**, представленной в Debian.\r\n\r\nСоздадим через текстовый редактор конфигурационный файл в нашем каталоге. \r\n@@\r\nnano /home/testing/logrotate.conf\r\n@@\r\n\r\nЗатем вставьте следующую конфигурацию:\r\n@@\r\n/home/testing/logrotate.conf\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\r\n\r\nСохраните и закройте файл. \r\n\r\nТакая конфигурация будет вращать файлы ежечасно, сжимая и сохраняя двадцать четыре старых журнала и создавая новый файл журнала для замены повернутого.\r\n\r\nНеобходимо настроить конфигурацию в соответствии с вашим приложением.\r\n\r\nСделаем файл журнала чтобы проверить, что он работает:\r\n@@\r\ncd ~\r\n@@\r\n\r\n@@\r\nmkdir logs\r\n@@\r\n\r\n@@\r\ntouch logs/access.log\r\n@@\r\n\r\n\r\nПоскольку журналы принадлежат **testing** нам не нужно использовать sudo. Однако нам нужно указать файл состояния. Этот файл записывает, что logrotate видел и сделал в прошлый раз, так что он знает, что делать при следующем запуске. \r\n\r\nМы попросим Logrotate поместить файл состояния прямо в наш домашний каталог для этого примера. Мы можем указать где угодно, что доступно и удобно:\r\n@@\r\nlogrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state --verbose --force\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**–verbose** распечатает подробную информацию о том, что делает Logrotate. Это первый раз, когда LogRotate видит этот файл журнала, так, насколько это известно, файлу ноль часов, и к нему не должно быть применена ротация.\r\n\r\nЕсли мы посмотрим на файл состояния, мы увидим, что Logrotate записал информацию о запуске:\r\n@@\r\ncat /home/testing/logrotate-state\r\n@@\r\n\r\nВывод\r\n@@\r\nroot@hostname:~# cat /home/testing/logrotate-state\r\nlogrotate state -- version 2\r\n @@\r\n\r\nLogrotate отметил, что он видел журналы, и когда он последний раз рассматривал их вращение. Если запустить эту же команду, один час спустя, журнал будет повернут, как ожидалось.\r\n\r\nЕсли вы хотите заставить LogRotate производить ротацию файла журнала, тогда надо использовать флаг **–force**:\r\n@@\r\nlogrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state --verbose --force\r\n@@\r\n\r\nДалее, нужно настроить задание cron для запуска Logrotate каждый час. Откройте crontab пользователя:\r\n@@\r\ncrontab -e\r\n@@\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\r\nЭта задача будет выполняться на 14 – й минуте каждого часа, каждый день.","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":"2025-09-18T17:50:41+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":"Как управлять Log-файлами с Logrotate на Ubuntu 16.04","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\nLogrotate устанавливается по умолчанию на Ubuntu 16.04 и настроена для обработки ротации журналов для всех установленных пакетов и приложений.\r\n\r\n\r\nПроверка версии Logrotate:\r\n@@\r\nlogrotate --version\r\n@@\r\n\r\nВывод команды будет таким:\r\n@@\r\nroot@kvmde67-19464:~# logrotate --version\r\nlogrotate 3.8.7\r\n@@\r\n\r\nСтандартная конфигурация Logrotate хранится по двум путям:\r\n\r\n* Файл **/etc/logrotate.conf** хранит часть конфигураций по умолчанию. Также он содержит шаблоны архивирования для не системных файлов.\r\n* Файл **/etc/logrotate.d/** предназначен для сохранения сторонних параметров, которые администратор задает самостоятельно. Здесь хранятся шаблоны ротаций для системных утилит.\r\n\r\nРассмотрим конфигурационный файл Logrotate **/etc/logrotate.d** для пакетного менеджера **apt**:\r\n@@\r\ncat /etc/logrotate.d/apt\r\n@@\r\nВывод команды будет таким:\r\n@@\r\nroot@kvmde67-19464:~# cat /etc/logrotate.d/apt\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Этот файл содержит конфигурационные блоки для двух разных файлов журнала в каталоге **/var/log/apt/: term.log и history.log**. Оба блока имеют одинаковые опции. Любые параметры, не заданные в этих конфигурационных блоках, наследуют значения по умолчанию или значения, установленные в файле **/etc/logrotate.conf**. \r\n\r\nПараметры, установленные для журналов apt:\r\n\r\n* rotate 12 - указывает, что утилита сохраняет последние двенадцать логов;\r\n* monthly - обновлять один раз в месяц;\r\n* compress - команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;\r\n* missingok - не записывать сообщение об ошибке, если лог-файл отсутствует;\r\n* notifempty - не ротировать пустой лог-файл.\r\n\r\n\r\nДля управления файлами журналов для приложений можно использовать два варианта:\r\n\r\n* Создать новый файл конфигурации **Logrotate** и поместить его в каталог **/etc/logrotate.d/**. Он будет работать ежедневно, как пользователь root вместе со всеми другими стандартными заданиями LogRotate.\r\n* Создать новый конфигурационный файл и запустить его с настройками **LogRotate** по умолчанию в Ubuntu. \r\n\r\n**Создание конфигурации в /etc/logrotate.d/**\r\n\r\nВ качестве примера настроим обновления для сервера, который пишет логи в файлы **access.log и error.log**, расположенные в каталоге **/var/log/example-app/**. \r\n\r\nЧтобы добавить конфигурацию каталог **/etc/logrotate.d/**, откройте новый файл:\r\n@@\r\nsudo nano /etc/logrotate.d/example-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) и группы (www-data);\r\n* **sharedscripts** - эта опция означает, что любые скрипты, добавленные в конфигурацию, выполняются только один раз за запуск после сжатия файлов, а не для каждого отдельного обновленного файла. Поскольку наша конфигурация будет соответствовать двум лог-файлам (access.log и error.log), скрипт, указанный в postrotate, будет запускаться только 1 раз;\r\n* **postrotate to endscript** - скрипт в этом блоке будет запущен после того, как файл журнала обновится. В примере приложение перезагружается. \r\n\r\nПосле настройки конфигурации в соответствии с требованиями, можно выполнить тестирование с помощью команды:\r\n@@\r\nsudo logrotate /etc/logrotate.conf --debug\r\n@@\r\nВ результате будет вызвана утилита logrotate, с указанием на стандартный файл конфигурации в режиме отладки.\r\nВ консоль будет выводиться информация, о том какие файлы logrotate обрабатывает в данный момент. Стандартная настройка Logrotate будет выполняться один раз в день, включая новую конфигурацию.\r\n\r\n**Создание конфигурации LogRotate**\r\n\r\nВ этом примере мы имеем приложение, которое работает под пользователем **newuser**, генерация журналов, которые хранятся в каталоге **/home/newuser/logs/**. Нам нужно сделать ротацию этих журналов ежечасно, поэтому мы должны установить его за пределами структуры **/etc/logrotate.d**, представленной в Ubuntu.\r\n\r\nСоздадим через текстовый редактор конфигурационный файл в нашем каталоге. \r\n@@\r\nnano /home/newuser/logrotate.conf\r\n@@\r\n\r\nЗатем вставьте следующую конфигурацию:\r\n@@\r\n/home/newuser/logrotate.conf\r\n/home/newuser/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\r\nСохраните и закройте файл. \r\n\r\nТакая конфигурация будет вращать файлы ежечасно, сжимая и сохраняя двадцать четыре старых журнала и создавая новый файл журнала для замены повернутого.\r\n\r\nНеобходимо настроить конфигурацию в соответствии с вашим приложением.\r\n\r\nСделаем файл журнала чтобы проверить, что он работает:\r\n@@\r\ncd ~\r\n@@\r\n\r\n@@\r\nmkdir logs\r\n@@\r\n\r\n@@\r\ntouch logs/access.log\r\n@@\r\n\r\n\r\nПоскольку журналы принадлежат **newuser** нам не нужно использовать sudo. Однако нам нужно указать файл состояния. Этот файл записывает, что logrotate видел и сделал в прошлый раз, так что он знает, что делать при следующем запуске. \r\n\r\nМы попросим Logrotate поместить файл состояния прямо в наш домашний каталог для этого примера. Мы можем указать где угодно, что доступно и удобно:\r\n@@\r\nlogrotate /home/newuser/logrotate.conf --state /home/newuser/logrotate-state --verbose --force\r\n@@\r\nВывод\r\n@@\r\n\r\nreading config file /home/newuser/logrotate.conf\r\n\r\nHandling 1 logs\r\n\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\n log does not need rotating\r\n \r\n@@\r\n**–verbose** распечатает подробную информацию о том, что делает Logrotate. Это первый раз, когда LogRotate видит этот файл журнала, так, насколько это известно, файлу ноль часов, и к нему не должно быть применена ротация.\r\n\r\nЕсли мы посмотрим на файл состояния, мы увидим, что Logrotate записал информацию о запуске:\r\n@@\r\ncat /home/newuser/logrotate-state\r\n@@\r\n\r\nВывод\r\n@@\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Если вы хотите заставить LogRotate производить ротацию файла журнала, тогда надо использовать флаг **–force**:\r\n@@\r\nlogrotate /home/newuser/logrotate.conf --state /home/newuser/logrotate-state --verbose --force\r\n@@\r\n\r\nДалее, нужно настроить задание cron для запуска Logrotate каждый час. Откройте crontab пользователя:\r\n@@\r\ncrontab -e\r\n@@\r\n\r\nОткроется текстовый файл. Возможно, в файле уже есть некоторые комментарии, объясняющие ожидаемый основной синтаксис. \r\nПереместите курсор на новую пустую строку в конец файла и добавьте следующее:\r\n@@\r\n14 * * * * /usr/sbin/logrotate /home/newuser/logrotate.conf --state /home/newuser/logrotate-state\r\n@@\r\n\r\nЭта задача будет выполняться на 14 – й минуте каждого часа, каждый день.","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":"2020-05-18T16:16:55+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/561/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** и разместить его в папке вызываемого срипта.\r\nЭто удобно,для того чтобы вы могли самостоятельно редактировать свои настройки, без обращения в службу тех. поддержки\r\n\r\nЕсли Вы решили положить **php.ini** где-то в **public_html**, то создайте файл **.htaccess** в корневой папке сайта ( например /home/user/public_html ,где user ваш никнейм в cpanel) или если файл существует то только добавьте в любом месте (в начале или конце) в файл .htaccess директивы которые описанны ниже.\r\n\r\n```\r\n\r\norder allow,deny \r\ndeny from all\r\n\r\n```\r\n\r\nэти директивы запрещают просмотра файла php.ini посторонними.\r\n\r\nПри такой установке PHP в виде обработчика CGI, SuPHP, Вы не можете использовать в файле .htaccess следующие директивы : php_flag, php_admin_flag, php_value и прочих, которые изменяют какие-либо параметры PHP окружения это вызовет ошибку с кодом 500, Internal Server Error.\r\n\r\nВнимание: собственный файл php.ini действителен только в пределах директории, в которой размещён, если не указана специальная опция, см. ниже.\r\n\r\n```\r\nsuPHP_ConfigPath /home/user/public_html\r\n```\r\n\r\nдля серверов hostde6 и hostde15\r\n\r\n```\r\nlsapi_phpini /home/user/public_html\r\n```\r\n\r\nт.е. впишите эту строку в файл .htaccess перед кодом запрета просмотра файла php.ini, только замените user на свое имя пользователя.\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Пример файла php.ini и описание некоторых его параметров:\r\n\r\n; Синтаксис файла: \"директива = значение\"\r\n; Знак комментария в php.ini - \";\" (точка с запятой). Все, что находится в строке после \";\" не воспринимается PHP \r\n\r\n**safe_mode = Off**\r\n\r\n**disable_functions =** ; В целях безопасности, позволяет запретить выполнение указанных функций\r\n\r\n**max_execution_time = 30** ; Максимальное кол-во секунд исполнения скрипта\r\n\r\n**memory_limit = 16M** ; Максимум оперативной памяти, которую может взять себе скрипт \r\n\r\n**error_reporting = E_ALL & ~E_NOTICE** ; Показывать все ошибки, кроме замечаний\r\n\r\n**display_errors = On** ; Вывод ошибок в браузер. Для облегчения отладки сценариев \r\n\r\n**variables_order = \"EGPCS\"** ; Порядок, в котором PHP будет регистрировать переменные (E - встроенные переменные, G - GET переменные, P - POST переменные, C - Cookies, S - сессии). Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными\r\n\r\n**register_globals = On** ; Возможность обращения к переменным, поступающим через GET/POST/Cookie/сессии, как к обычным переменным (например, \"$переменная\") \r\n\r\n**post_max_size = 55M** ; Максимальный объём данных который может быть принят\r\n\r\n**magic_quotes_gpc = On** ; Включение автоматической обработки кавычек, поступающих через POST/GET/Cookie \r\n\r\n**file_uploads = On** ; Разрешает загрузку файлов\r\n\r\n**;upload_tmp_dir =** ; Каталог для временных закачанных файлов (не забудьте создать этот каталог!)\r\n\r\n**upload_max_filesize = 5M** ; Максимальный размер закачиваемого файла\r\n\r\n**session.save_handler = files** ; Хранить данные сессий в файлах\r\n\r\n**session.save_path = /tmp** ; Папка для хранения файлов сессий (не забудьте создать этот каталог!)\r\n\r\n**session.use_cookies = 1** ; Использовать cookie в сессиях\r\n\r\n**session.name = PHPSESSID** ; Использовать в качестве имени сессии и сессионной cookie ID сессии\r\n\r\n**session.auto_start = 0** ; Запрет на инициализацию сессии при начале соединения\r\n\r\n**session.cookie_lifetime = 0** ; Время жизни сессионных cookie (\"0\" - до закрытия окна браузера) \r\n\r\n**session.use_trans_sid = 1** ; ID сессии будут добавляться ко всем ссылкам на странице автоматически (если у пользователя отключены cookie)","images":[],"updated_at":"2025-04-16T16:09:12+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":{},"ru":{"ssh-guides":200}},"articleBodies":{"en":{},"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":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":124,"name":"Hysteria 2 VPN","slug":"hysteria-vpn","icon":null},{"id":92,"name":"IKEv2","slug":"ikev2","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":117,"name":"Multi-Hop","slug":"multi-hop","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":87,"name":"OpenVPN","slug":"openvpn","icon":null},{"id":90,"name":"Управление заказом","slug":"order-management","icon":"https://fornex.com/media/dream_tag_icon/sliders-v-square.svg"},{"id":110,"name":"Outline VPN","slug":"outline-vpn","icon":null},{"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":22,"name":"VPN","slug":"vpn","icon":"https://fornex.com/media/dream_tag_icon/shield-alt.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":113,"name":"WireGuard VPN","slug":"wireguard-vpn","icon":null},{"id":9,"name":"WordPress","slug":"wordpress","icon":null},{"id":121,"name":"v2RayTun","slug":"xray-v2raytun-ios","icon":null},{"id":111,"name":"Xray VPN","slug":"xray-vpn","icon":null}]},"articleListByTag":{}},"payment":{"options":{},"checkoutStatus":"idle"}}}