Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам
основного сервера добавьте:\r\n```nginx\r\nlocation ~ \\.php$ {\r\n fastcgi_pass unix:/run/php/php8.1-fpm.sock; # или ваш сокет\r\n fastcgi_index index.php;\r\n include fastcgi_params;\r\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n\r\n fastcgi_cache fcgi_cache;\r\n fastcgi_cache_valid 200 301 302 60m; # кэшируем успешные ответы на 60 минут\r\n fastcgi_cache_valid 404 1m;\r\n fastcgi_cache_bypass $http_cookie; # не кэшируем при наличии куки\r\n fastcgi_no_cache $http_cookie; # не сохраняем в кэш при наличии куки\r\n}\r\n```\r\n\r\n### Полезные замечания\r\n- Кэширование не должно применяться к страницам с авторизацией, личным кабинетом, корзиной — используйте `fastcgi_cache_bypass` и `fastcgi_no_cache` для таких URI.\r\n- Для динамических сайтов (Bitrix, WordPress) часто кэшируют только GET-запросы без куки.\r\n- После изменений перезапустите NGINX:\r\n```Bash\r\nsudo nginx -t # проверка конфигурации\r\nsudo systemctl reload nginx\r\n```\r\n\r\n- Очистка кэша вручную (если требуется):\r\n```Bash\r\nsudo rm -rf /var/cache/nginx/*\r\nsudo rm -rf /var/cache/nginx-fcgi/*\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-04T17:19:01+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/91/change/"},{"id":340,"title":"Лимит на загрузку файлов","slug":"download-limit","priority":0,"summary":"Как отредактировать php.ini, чтобы увеличить лимит загрузки файлов.","tags":[{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"По умолчанию на большинстве серверов установлен лимит загрузки файлов в **2 МБ**. Чтобы его увеличить, достаточно создать пользовательский файл `php.ini` в директории `/public_html/`.\r\n\r\n### Изменение лимита загрузки\r\nСоздайте файл `php.ini` в папке `/public_html/` и добавьте в него следующие строки:\r\n\r\n- **`upload_max_filesize`** `= 8M` — максимальный размер одного загружаемого файла\r\n- **`post_max_size`** `= 8M` — максимальный объём данных, передаваемых методом POST\r\n- **`memory_limit`** `= 32M` — максимальный объём оперативной памяти, доступный PHP-скрипту\r\n\r\nЭти значения позволяют загружать файлы размером до **8 МБ**. Если нужно больше — просто замените `8M` на другое значение, например `16M` или `64M`.\r\n\r\n!!! Info Важно\r\n Значение `memory_limit` всегда должно быть больше `post_max_size`, иначе PHP упрётся в лимит памяти раньше, чем в лимит загрузки.\r\n\r\n### Применение настроек ко всему аккаунту\r\nПо умолчанию пользовательский `php.ini` действует только в той директории, где он находится. Чтобы настройки применялись ко всему аккаунту, добавьте следующие строки в **начало** файла `.htaccess` в папке `/public_html/`. Если файл отсутствует — создайте его.\r\n```apache\r\nsuPHP_ConfigPath /home/user/public_html\r\n\r\n\r\norder allow,deny\r\ndeny from all\r\n\r\n```\r\n\r\nЗамените `user` на ваше реальное имя пользователя в cPanel.\r\n\r\nБлок `` также защищает файл `php.ini` от прямого доступа через браузер.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Проверка конфигурации PHP\r\nЧтобы убедиться, что изменения вступили в силу, создайте файл `info.php` в папке `/public_html/` со следующим содержимым:\r\n```php\r\n\r\n```\r\n\r\nЗатем откройте браузер и перейдите по адресу:\r\n```\r\nвашсайт.ru/info.php\r\n```\r\n\r\nВы увидите полную информацию о текущей конфигурации PHP. Найдите нужную директиву — например `memory_limit` или `upload_max_filesize` — и проверьте, что новые значения применились.\r\n\r\n> **Не забудьте удалить `info.php` после проверки** — этот файл раскрывает чувствительную информацию о конфигурации сервера и не должен быть публично доступен.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-26T17:50:45+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/340/change/"},{"id":190,"title":"Настройка аутентификации по SSH-ключу на сервере","slug":"authorization-ssh-key","priority":0,"summary":"Руководство по созданию и управлению SSH-ключами для безопасного входа на сервер.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"Настройка аутентификации по SSH-ключам — самый надёжный способ подключения к [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенному серверу](https://fornex.com/ru/dedicated-servers/). Публичный ключ размещается на сервере, приватный остаётся только у вас на компьютере — это полностью исключает перехват пароля и повышает безопасность.\r\n\r\n- [Отдельная инструкция по подключению на macOS/Linux с помощью SSH](https://fornex.com/ru/help/ssh-to-vps-mac/)\r\n- [Отдельная инструкция по подключению на Windows OC с помощью SSH](https://fornex.com/ru/help/ssh-to-vps/)\r\n\r\n### Генерация пары ключей\r\n1. Откройте терминал на вашем компьютере (macOS/Linux — Терминал, Windows — PowerShell или Git Bash).\r\n2. Выполните команду для создания ключей (рекомендуется современный алгоритм Ed25519):\r\n```bash\r\nssh-keygen -t ed25519 -C \"your_email@example.com\"\r\n```\r\n\r\n!!! info Примечание\r\n Если ваша система не поддерживает Ed25519 (очень старые ОС), используйте RSA: `ssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"`\r\n\r\n3. Программа предложит указать путь сохранения (по умолчанию ~/.ssh/id_ed25519 — нажмите Enter).\r\n4. Введите passphrase (секретную фразу) или оставьте пустой (Enter два раза).\r\n5. Ключи будут созданы в папке `~/.ssh`:\r\n - `id_ed25519` — приватный ключ (никому не передавайте!).\r\n - `id_ed25519.pub` — публичный ключ (его копируем на сервер).\r\n\r\n### Копирование публичного ключа на сервер\r\n1. Подключитесь к серверу по SSH (пока с паролем):\r\n```bash\r\nssh root@ваш_IP\r\n```\r\n\r\n2. Создайте папку `.ssh` (если её нет):\r\n```bash\r\nmkdir -p ~/.ssh\r\nchmod 700 ~/.ssh\r\n```\r\n\r\n3. Добавьте публичный ключ в файл `authorized_keys`:\r\n```bash\r\necho \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com\" >> ~/.ssh/authorized_keys\r\n```\r\n\r\nИли скопируйте ключ одной командой с вашего компьютера (рекомендуется):\r\n```bash\r\nssh-copy-id -i ~/.ssh/id_ed25519.pub root@ваш_IP\r\n```\r\n\r\n### Настройка сервера OpenSSH\r\n1. Откройте конфигурационный файл:\r\n```bash\r\nnano /etc/ssh/sshd_config\r\n```\r\n\r\n2. Убедитесь, что включена авторизация по ключам и отключена по паролю (рекомендуется):\r\n```ini\r\nPubkeyAuthentication yes\r\nAuthorizedKeysFile %h/.ssh/authorized_keys\r\nPasswordAuthentication no\r\n```\r\n\r\n3. Сохраните изменения (Ctrl+O → Enter → Ctrl+X).\r\n4. Установите правильные права на файлы:\r\n```Bash\r\nchmod 600 ~/.ssh/authorized_keys\r\nchmod 700 ~/.ssh\r\nchown root:root ~/.ssh/authorized_keys\r\n```\r\n\r\n5. Перезапустите SSH-сервер:\r\n```Bash\r\nsystemctl restart sshd\r\n```\r\n\r\n### Настройка SSH-клиента (для удобства)\r\n1. Создайте или отредактируйте файл ~/.ssh/config на вашем компьютере:\r\n```ini\r\nHost my-server\r\n HostName ваш_IP\r\n User root\r\n IdentityFile ~/.ssh/id_ed25519\r\n Port 22\r\n```\r\n\r\n2. Установите права:\r\n```Bash\r\nchmod 600 ~/.ssh/config\r\n```\r\n\r\nТеперь подключение упрощается до:\r\n```Bash\r\nssh my-server\r\n```\r\n\r\n### Проверка\r\nПопробуйте подключиться без пароля:\r\n```Bash\r\nssh root@ваш_IP\r\n```\r\n\r\nЕсли вход произошёл без запроса пароля — авторизация по ключу настроена успешно.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-10T14:14:00+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/190/change/"},{"id":90,"title":"Настройка кэширования и сжатия статических файлов в Nginx","slug":"caching-static-files-nginx","priority":0,"summary":"Как ускорить загрузку сайта и снизить нагрузку на сервер.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"Правильная настройка кэширования и сжатия статических файлов (изображения, CSS, JavaScript) позволяет значительно ускорить загрузку страниц, уменьшить потребление трафика и снизить нагрузку на сервер.\r\n\r\nВ этой статье мы разберём два важных механизма Nginx: \r\n- Директиву **expires** (управление временем кэширования в браузере) \r\n- Включение **GZIP-сжатия** для текстовых файлов\r\n\r\n### 1. Настройка кэширования с помощью expires\r\n\r\nДиректива `expires` указывает браузеру, сколько времени файл можно хранить в кэше без повторного запроса к серверу.\r\n\r\nОткройте конфигурационный файл вашего сайта (обычно `/etc/nginx/conf.d/vhost.conf` или аналогичный) и добавьте блок `location` для статических файлов:\r\n\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {\r\n expires 30d; # кэш на 30 дней\r\n add_header Cache-Control \"public\";\r\n access_log off; # отключаем логи для статики (экономия ресурсов)\r\n}\r\n```\r\n\r\n**Рекомендуемые значения** expires:\r\n- Изображения, шрифты, иконки: `30d` или `1y`\r\n- CSS и JavaScript: `7d` — `30d` (если часто меняются — меньше)\r\n- Файлы, которые почти не меняются: `1y`\r\n\r\n### 2. Включение GZIP-сжатия\r\nGZIP значительно уменьшает размер текстовых файлов (HTML, CSS, JS, SVG и др.).\r\nДобавьте следующие строки в блок `server {}` вашего виртуального хоста:\r\n```nginx\r\nserver {\r\n ...\r\n\r\n gzip on;\r\n gzip_disable \"msie6\";\r\n gzip_vary on;\r\n gzip_proxied any;\r\n gzip_comp_level 6; # уровень сжатия (1-9)\r\n gzip_buffers 16 8k;\r\n gzip_http_version 1.1;\r\n gzip_min_length 256;\r\n gzip_types\r\n text/plain\r\n text/css\r\n text/xml\r\n text/javascript\r\n application/javascript\r\n application/json\r\n application/xml\r\n application/rss+xml\r\n image/svg+xml;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 3. Применение настроек для всех сайтов (шаблон)\r\nЕсли вы хотите автоматически применять эти настройки ко всем виртуальным хостам, создайте файл шаблона:\r\n```nginx\r\nsudo nano /usr/local/ispmgr/etc/server.templ\r\n```\r\n\r\nДобавьте в него:\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {\r\n expires 30d;\r\n add_header Cache-Control \"public\";\r\n access_log off;\r\n}\r\n```\r\n\r\nПосле изменения шаблона перезапустите Nginx:\r\n```nginx\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные советы\r\n- После изменения конфигурации всегда проверяйте синтаксис: `sudo nginx -t`\r\n- Для максимальной производительности комбинируйте `expires` с заголовком `Cache-Control: public`.\r\n- Не ставьте слишком большой `expires` (больше года) на часто обновляемые файлы (CSS/JS), иначе пользователи долго не увидят изменения.\r\n- На VPS и выделенных серверах вы можете дополнительно настроить browser caching, FastCGI cache и proxy_cache для ещё большей оптимизации.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-01T16:36:29+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/90/change/"},{"id":261,"title":"Обработка PHP в HTML-файлах","slug":"processing-php-html","priority":0,"summary":"Как включить выполнение PHP-кода в файлах с расширением .html и .htm.","tags":[{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"По умолчанию сервер обрабатывает как PHP только файлы с расширением `.php` и `.phtml`. Если вам нужно, чтобы PHP-код выполнялся и в файлах `.html` или `.htm`, это можно настроить через `.htaccess`.\r\n\r\n### Настройка\r\nОткройте файл `.htaccess` в корневом каталоге сайта или создайте его, если он отсутствует. Добавьте в начало файла следующие строки:\r\n```apache\r\n# php -- BEGIN cPanel-generated handler, do not edit\r\n\r\n AddType application/x-httpd-ea-php70___lsphp .php .php7 .phtml .htm .html\r\n\r\n# php -- END cPanel-generated handler, do not edit\r\n```\r\n\r\nВ этом примере используется PHP **7.0**. Чтобы задать другую версию, замените `ea-php70` на соответствующее значение:\r\n\r\n| Версия PHP | Значение |\r\n|---|---|\r\n| PHP 7.2 | `ea-php72` |\r\n| PHP 7.0 | `ea-php70` |\r\n| PHP 5.6 | `ea-php56` |\r\n| PHP 5.3 | `ea-php53` |\r\n\r\nПример для PHP 5.6:\r\n```apache\r\n# php -- BEGIN cPanel-generated handler, do not edit\r\n\r\n AddType application/x-httpd-ea-php56___lsphp .php .php5 .phtml .htm .html\r\n\r\n# php -- END cPanel-generated handler, do not edit\r\n```\r\n\r\nПосле сохранения файла все документы с расширением `.html` и `.htm` будут обрабатываться сервером как PHP.\r\n\r\n> **Важно:** если вы меняете версию PHP через дашборд или cPanel — настройку необходимо повторить, обновив значение в `.htaccess` в соответствии с новой версией.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-31T15:01:39+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/261/change/"},{"id":69,"title":"Ограничение доступа к сайту через Nginx","slug":"deny-allow-nginx","priority":0,"summary":"Как настроить фильтрацию по IP, парольную защиту и блокировку нежелательных запросов.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером важно контролировать, кто и к каким ресурсам имеет доступ. Nginx предоставляет гибкие инструменты для решения этой задачи: от простой блокировки по IP до комбинированной защиты с аутентификацией.\r\n\r\n!!! Info Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы полностью управляете конфигурацией Nginx и можете применять любые из описанных ниже методов.\r\n\r\n### 1. Ограничение доступа к файлам\r\nЧтобы закрыть доступ к служебным директориям, например `.svn`:\r\n```nginx\r\nlocation ~ /.svn/ {\r\n deny all;\r\n}\r\n```\r\n\r\n### 2. Разграничение доступа по IP\r\nДирективы `allow` и `deny` позволяют задать белый список IP-адресов для конкретного раздела сайта:\r\n```nginx\r\nlocation /server-status {\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n}\r\n```\r\n\r\n### 3. Защита паролем (Basic Auth)\r\nДля закрытых разделов можно включить запрос логина и пароля:\r\n```nginx\r\nlocation /admin/ {\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n### 4. Комбинированная защита: IP + пароль\r\nДиректива `satisfy any` позволяет пропускать пользователя, если он прошёл хотя бы одну проверку — либо по IP, либо по паролю:\r\n```nginx\r\nlocation /admin/ {\r\n satisfy any;\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 5. Защита от запросов к несуществующим файлам\r\nВозвращает `404` при обращении к статическим файлам, которые не существуют на диске:\r\n```nginx\r\nlocation ~ \\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {\r\n try_files $uri =404;\r\n}\r\n```\r\n\r\n### 6. Перенаправление по IP\r\nNginx может выполнять редирект в зависимости от IP-адреса посетителя:\r\n```nginx\r\nlocation / {\r\n if ($remote_addr != 111.111.111.111) {\r\n return 301 https://$host$request_uri;\r\n }\r\n}\r\n```\r\n\r\n> Все посетители, кроме запросов с IP `111.111.111.111`, будут перенаправлены на `https://$host$request_uri`.\r\n\r\n### 7. Защита от перебора с помощью iptables\r\nЕсли количество запросов с одного IP превышает допустимый порог, iptables временно блокирует его:\r\n```bash\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --set\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --update --seconds 120 \\\r\n --hitcount 360 -j DROP\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT\r\n```\r\n\r\n> В данном примере блокируются IP-адреса, с которых поступило более 360 новых соединений за 120 секунд.\r\n\r\n### Применение изменений\r\nПосле редактирования конфигурации Nginx необходимо выполнить перезагрузку:\r\n```bash\r\nsystemctl reload nginx\r\n# или\r\nservice nginx reload\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-31T15:09:29+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/69/change/"},{"id":201,"title":"Ошибка 500 в режиме suPHP: права на файлы и папки (chmod)","slug":"error500-suphp-chmod","priority":0,"summary":"Что такое Internal Server Error в режиме suPHP и как правильно настроить права доступа.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"**500 Internal Server Error** — код статуса HTTP, означающий, что сервер работает, но столкнулся с критической ошибкой, которая не позволяет обработать запрос.\r\n\r\n### Зачем нужен suPHP\r\nВ стандартном режиме **mod_php** Apache всегда работает от одного общего пользователя — `nobody`. Это небезопасно: неправильно настроенные права доступа могут позволить другим пользователям на том же сервере читать или даже изменять ваши файлы. Вдобавок, когда скрипты создают или изменяют файлы от имени `nobody`, эти файлы становится невозможно удалить или отредактировать через FTP.\r\n\r\n**suPHP** решает обе проблемы, запуская каждый процесс от имени реального владельца аккаунта. Ваши файлы остаются вашими.\r\n\r\n### Правильные права доступа\r\n| Права | Применяется к | Значение |\r\n|---|---|---|\r\n| `644` | Файлы | Владелец может писать, остальные — только читать (по умолчанию) |\r\n| `444` | Файлы | Только чтение для всех, включая собственные скрипты |\r\n| `755` | Папки | Стандартные права для папок (по умолчанию, менять не нужно) |\r\n\r\nНесколько важных правил:\r\n\r\n- **`755`** должны быть установлены на папку `/public_html/ваш_домен`\r\n- **Никогда не меняйте права** на системные папки и файлы: `stats`, `logs`, `.htpasswd` и директорию `/domains`\r\n- Все изменения прав должны касаться только `/public_html/ваш_домен` и её содержимого\r\n- **Никогда не выставляйте `666` или `777`** на файлы и папки — скрипты с такими правами работать не будут, а безопасность вашего аккаунта окажется под угрозой\r\n\r\n!!! Info Примечание\r\n При правах `644` запись в файлы разрешена только скриптам, работающим в рамках вашего аккаунта. Никто другой записать ничего не сможет. Для дополнительной защиты можно установить `444` — тогда даже ваши собственные скрипты не смогут изменять файлы, хотя это необязательно.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Частые причины ошибки 500 Internal Server Error\r\nВ режиме suPHP ошибка 500 почти всегда означает, что сервер заблокировал выполнение скрипта по одной из следующих причин:\r\n\r\n- На файл установлены права, отличные от `644` или `444` — например, `666`\r\n- На папку установлены права, отличные от `755` — например, `777`\r\n- В файле `.htaccess` присутствуют директивы, которые suPHP не поддерживает\r\n\r\n### Неподдерживаемые директивы .htaccess в режиме suPHP\r\nsuPHP **не поддерживает** PHP-директивы внутри `.htaccess`, в том числе `php_flag`, `php_admin_flag`, `php_value` и подобные. Если ваш `.htaccess` содержит что-то вроде:\r\n```apache\r\nphp_flag register_globals On\r\n```\r\n\r\nили даже просто:\r\n```apache\r\ndisplay_errors Off\r\n```\r\n\r\nСервер немедленно вернёт **500 Internal Server Error**. Удалите эти строки и настройте параметры PHP через пользовательский файл `php.ini`.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-27T17:52:23+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/201/change/"},{"id":87,"title":"Ошибки Nginx и как их исправить","slug":"nginx-errors","priority":0,"summary":"Как исправить ошибки Nginx: 502, 504, 413.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером Nginx иногда возникают ошибки, которые мешают корректной работе сайта. В этой статье мы разберём наиболее распространённые из них: **502 Bad Gateway**, **504 Gateway Time-out** и **413 Request Entity Too Large**, и покажем, как их устранять на [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенных серверах](https://fornex.com/ru/dedicated-servers/).\r\n\r\n### 502 Bad Gateway\r\n**Что значит**: Nginx не может получить ответ от бэкенда (PHP-FPM, Apache, Node.js, uWSGI и т.д.). \r\n**Самые частые причины**:\r\n- Сервис бэкенда выключен или упал\r\n- Неправильный путь к сокету или порт в конфиге\r\n- Проблемы с правами доступа к сокету\r\n- Недостаточно памяти/процессов у PHP-FPM\r\n\r\n**Как исправить**:\r\n1. Проверьте статус PHP-FPM (или другого бэкенда):\r\n```bash\r\nsudo systemctl status php-fpm\r\n# или для конкретной версии\r\nsudo systemctl status php8.1-fpm\r\n```\r\n\r\n2. Перезапустите сервис:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n# или php8.1-fpm\r\n```\r\n\r\n3. Проверьте путь к сокету в конфиге Nginx и PHP-FPM:\r\n - Nginx: `fastcgi_pass unix:/run/php/php8.1-fpm.sock;`\r\n - PHP-FPM (/etc/php/8.1/fpm/pool.d/www.conf): `listen = /run/php/php8.1-fpm.sock`\r\n\r\n4. Убедитесь в правильных правах:\r\n```bash\r\nsudo chown www-data:www-data /run/php/php8.1-fpm.sock\r\nsudo chmod 660 /run/php/php8.1-fpm.sock\r\n```\r\n\r\n5. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n### 504 Gateway Time-out\r\n**Что значит**: Nginx ждал ответа от бэкенда слишком долго и прервал соединение. \r\n**Самые частые причины**:\r\n- Долгая обработка PHP-скрипта\r\n- Медленная база данных\r\n- Большая загрузка сервера\r\n\r\n**Как исправить**:\r\n1. Увеличьте таймауты в конфиге сайта (в блоке server или location):\r\n```nginx\r\nproxy_connect_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nfastcgi_read_timeout 300s; # для PHP\r\n```\r\n\r\n2. Оптимизируйте PHP-FPM (в `/etc/php/8.1/fpm/pool.d/www.conf`):\r\n```ini\r\npm.max_children = 50 # увеличьте по необходимости\r\npm.start_servers = 10\r\npm.min_spare_servers = 5\r\npm.max_spare_servers = 20\r\nrequest_terminate_timeout = 300\r\n```\r\n\r\n3. Перезапустите сервисы:\r\n```bash\r\nsudo systemctl restart php-fpm\r\nsudo systemctl reload nginx\r\n```\r\n\r\n4. Если проблема в конкретном скрипте — оптимизируйте запросы к БД или кэшируйте тяжёлые страницы.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 413 Request Entity Too Large\r\n**Что значит**: Клиент пытается загрузить файл больше лимита, установленного в Nginx. По умолчанию — 1 МБ. \r\n**Причины**: загрузка больших файлов (фото, видео, бэкапы, архивы).\r\n\r\n**Как исправить**:\r\n1. В конфиге сайта (или в `/etc/nginx/nginx.conf` в блоке http) увеличьте лимит:\r\n```nginx\r\nclient_max_body_size 64M; # или 128M, 512M, 1G и т.д.\r\n```\r\n\r\n2. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n3. Для PHP также увеличьте лимиты в php.ini (`/etc/php/8.1/fpm/php.ini`):\r\n```ini\r\nupload_max_filesize = 64M\r\npost_max_size = 64M\r\n```\r\n\r\nПерезапустите PHP-FPM:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n```\r\n\r\n### Как перезагрузить Nginx правильно\r\n- Проверка конфигурации (всегда перед перезапуском):\r\n```bash\r\nsudo nginx -t\r\n```\r\n\r\n- Плавная перезагрузка (без прерывания соединений):\r\n```bash\r\nsudo systemctl reload nginx\r\n```\r\n\r\nили\r\n```bash\r\nsudo nginx -s reload\r\n```\r\n\r\nПолный перезапуск (если reload не помог):\r\n```bash\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные замечания\r\n- Всегда делайте бэкап конфигов перед изменениями: `sudo cp /etc/nginx/nginx.conf` `/etc/nginx/nginx.conf.bak`\r\n- После любых изменений проверяйте логи: `/var/log/nginx/error.log` и `/var/log/nginx/access.log`\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-02-04T17:18:27+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/87/change/"},{"id":549,"title":"Первоначальная настройка сервера c Ubuntu 16.04","slug":"initial-setup-ubuntu-16-04","priority":0,"summary":"Руководство по начальной настройке безопасности и удобства использования вашего сервера","tags":[],"body":"Чтобы выполнить вход на ваш сервер, вам необходимо знать публичный IP-адрес сервера. Вам также потребуется пароль учетной записи пользователя **root**.\r\nДанные для доступа, вы найдете в Биллинге:\r\n\r\n\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-03-09T13:50:14+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":188,"title":"Создание FTP-учётной записи по SSH","slug":"ftp-user-ssh","priority":0,"summary":"Руководство по настройке отдельного FTP-пользователя на сервере.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":44,"name":"FTP","slug":"ftp","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"По умолчанию на сервере доступен только суперпользователь **root**. Подключение по FTP под root запрещено по соображениям безопасности (пароль передаётся в открытом виде). \r\nЕсли на сервере нет панели управления (cPanel, aaPanel, CloudPanel и т.д.), создать отдельного FTP-пользователя можно вручную через SSH.\r\n\r\n### 1. Установка ProFTPD (если ещё не установлен)\r\n**Ubuntu / Debian:**\r\n```bash\r\nsudo apt update\r\nsudo apt install proftpd-basic -y\r\n```\r\n\r\n**CentOS / Rocky / AlmaLinux:**\r\n```bash\r\nsudo yum install proftpd -y\r\n```\r\n\r\nПосле установки запустите и добавьте сервис в автозагрузку:\r\n```bash\r\nsudo systemctl start proftpd\r\nsudo systemctl enable proftpd\r\n```\r\n\r\n### 2. Ограничение пользователей домашним каталогом (рекомендуется)\r\nОткройте конфигурационный файл:\r\n- Ubuntu/Debian: `sudo nano /etc/proftpd/proftpd.conf`\r\n- CentOS/Rocky: `sudo nano /etc/proftpd.conf`\r\n\r\nДобавьте в конец файла строку:\r\n```bash\r\nDefaultRoot ~\r\n```\r\n\r\nСохраните и перезапустите ProFTPD:\r\n```bash\r\nsudo systemctl restart proftpd\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n\r\n### 3. Создание нового FTP-пользователя\r\nДля безопасности FTP-пользователю **не нужен** доступ к командной оболочке.\r\n\r\n1. Добавьте `/bin/false` в список разрешённых оболочек (если ещё нет):\r\n```bash\r\necho '/bin/false' | sudo tee -a /etc/shells\r\n```\r\n\r\n2. Создайте пользователя:\r\n```bash\r\nsudo useradd ftpuser -d /home/ftpuser -m -s /bin/false\r\n```\r\n\r\n3. Установите пароль:\r\n```bash\r\nsudo passwd ftpuser\r\n```\r\nГде:\r\n- `ftpuser` — имя пользователя (можно любое)\r\n- `/home/ftpuser` — домашняя директория (будет создана автоматически)\r\n\r\n### 4. Настройка прав доступа\r\nОграничьте права пользователя, чтобы он не мог выходить за пределы своей папки:\r\n```bash\r\nsudo chmod 555 /home/ftpuser\r\nsudo mkdir /home/ftpuser/upload\r\nsudo chown ftpuser:ftpuser /home/ftpuser/upload\r\n```\r\n\r\nТеперь пользователь сможет загружать файлы только в папку `upload`.\r\n\r\n### Полезные замечания\r\n- Для повышения безопасности рекомендуется использовать SFTP вместо обычного FTP.\r\n- Никогда не используйте root для FTP-подключений.\r\n- После создания пользователя сразу проверьте подключение в FTP-клиенте (FileZilla, WinSCP и т.д.).\r\n- Если нужно создать много пользователей — удобнее использовать панель управления (aaPanel, BeAdmin, CloudPanel, cPanel и другие).\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-25T17:48:13+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/188/change/"},{"id":562,"title":"Управление логами с помощью logrotate на CentOS 7","slug":"logrotate-centos-7","priority":0,"summary":"Настройка logrotate для контроля над системными и прикладными журналами.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null}],"body":"**Logrotate** — один из тех инструментов, которые незаметно поддерживают порядок на сервере. Он не даёт лог-файлам бесконтрольно разрастаться и съедать дисковое пространство — а это особенно критично на [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/), где каждый гигабайт на счету.\r\n\r\n### Проверка установки\r\n\r\nПрежде чем переходить к настройке, убедитесь, что logrotate установлен. На CentOS 7 он присутствует по умолчанию, но лишняя проверка не помешает:\r\n```bash\r\nlogrotate --version\r\n```\r\n\r\nЕсли в ответ отображается номер версии — например, `logrotate 3.18.0` — утилита готова к работе.\r\n\r\n### Структура конфигурации\r\n\r\nКонфигурация logrotate хранится в двух местах:\r\n\r\n- **`/etc/logrotate.conf`** — основной файл с глобальными параметрами по умолчанию\r\n- **`/etc/logrotate.d/`** — каталог с отдельными файлами конфигурации для конкретных сервисов\r\n\r\nВместе они определяют, какие логи ротируются, с какой периодичностью, сколько архивных копий хранить и нужно ли их сжимать.\r\n\r\n### Основной файл конфигурации\r\n\r\nОткройте `/etc/logrotate.conf` в любом текстовом редакторе — например, в [vi](https://fornex.com/ru/help/text-editor-vi/):\r\n```bash\r\nvi /etc/logrotate.conf\r\n```\r\n\r\nТипичное содержимое файла выглядит так:\r\n```\r\n# Ротация раз в неделю\r\nweekly\r\n\r\n# Хранить 4 архивных копии\r\nrotate 4\r\n\r\n# Создавать новый пустой файл после ротации\r\ncreate\r\n\r\n# Добавлять дату в имя архивных файлов\r\ndateext\r\n\r\n# Сжимать старые логи (раскомментируйте при необходимости)\r\n#compress\r\n\r\n# Подключать конфигурации из /etc/logrotate.d\r\ninclude /etc/logrotate.d\r\n\r\n# Настройки системных логов\r\n/var/log/wtmp {\r\n monthly\r\n create 0664 root utmp\r\n minsize 1M\r\n rotate 1\r\n}\r\n\r\n/var/log/btmp {\r\n missingok\r\n monthly\r\n create 0600 root utmp\r\n rotate 1\r\n}\r\n```\r\n\r\nДирективы из этого файла применяются глобально — конфигурации отдельных сервисов в `/etc/logrotate.d/` могут переопределять их по мере необходимости.\r\n\r\n### Основные директивы\r\n\r\n- **`daily / weekly / monthly / size`** — периодичность ротации: по расписанию или при достижении заданного размера\r\n- **`rotate N`** — количество архивных копий для хранения, после чего старые удаляются\r\n- **`create`** — создавать новый пустой файл после ротации с сохранением прав и владельца\r\n- **`compress`** — сжимать архивы (по умолчанию в формат gzip)\r\n- **`dateext`** — добавлять дату к имени архива, например `access.log-20250918`\r\n- **`missingok`** — не выдавать ошибку, если лог-файл отсутствует\r\n- **`notifempty`** — не ротировать пустые файлы\r\n- **`postrotate ... endscript`** — блок команд, выполняемых после ротации (удобно для перезагрузки сервиса)\r\n- **`maxage N`** — автоматически удалять архивы старше N дней\r\n\r\n### Настройка ротации для конкретного приложения\r\n\r\nПредположим, приложение **my-app** пишет логи в `/var/log/my-app/`. Создайте для него отдельный файл конфигурации:\r\n```bash\r\nvi /etc/logrotate.d/my-app\r\n```\r\n\r\nХороший рабочий пример:\r\n```\r\n/var/log/my-app/*.log {\r\n daily\r\n missingok\r\n rotate 14\r\n compress\r\n notifempty\r\n create 0640 www-data www-data\r\n sharedscripts\r\n postrotate\r\n systemctl reload my-app\r\n endscript\r\n}\r\n```\r\n\r\nЧто делает каждый параметр:\r\n\r\n- **`daily`** — ротация выполняется ежедневно\r\n- **`rotate 14`** — хранится две недели архивов\r\n- **`compress`** — старые логи сжимаются через gzip\r\n- **`notifempty`** — пустые файлы не ротируются\r\n- **`create 0640 www-data www-data`** — новый файл создаётся с правами `0640` и владельцем `www-data`\r\n- **`postrotate ... endscript`** — после ротации приложение перезагружается и начинает писать в новый файл\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Проверка конфигурации\r\n\r\nТестовый запуск без реального применения изменений:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nПроверка отдельного файла конфигурации:\r\n```bash\r\nsudo logrotate -d /etc/logrotate.d/my-app\r\n```\r\n\r\nПринудительная ротация:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --force\r\n```\r\n\r\n### Ротация логов в пользовательских каталогах\r\n\r\nЕсли приложение пишет логи в нестандартное место — например, в `/home/user/logs/` — создайте локальный файл конфигурации:\r\n```bash\r\nvi /home/user/logrotate.conf\r\n```\r\n```\r\n/home/user/logs/*.log {\r\n hourly\r\n missingok\r\n rotate 24\r\n compress\r\n create\r\n}\r\n```\r\n\r\nСоздайте директорию и тестовый файл:\r\n```bash\r\nmkdir ~/logs\r\ntouch ~/logs/access.log\r\n```\r\n\r\nЗатем запустите принудительную ротацию с указанием файла состояния:\r\n```bash\r\nlogrotate /home/user/logrotate.conf \\\r\n --state /home/user/logrotate-state \\\r\n --verbose --force\r\n```\r\n\r\n- **`--state`** — указывает, где хранить информацию о последней ротации\r\n- **`--verbose`** — выводит подробный лог выполнения\r\n\r\n### Автоматизация через cron\r\n\r\nЧтобы ротация выполнялась автоматически по расписанию, добавьте задание в cron:\r\n```bash\r\ncrontab -e\r\n```\r\n\r\nНапример, для запуска каждый час на 14-й минуте:\r\n```\r\n14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state\r\n```\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-26T18:01:18+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/562/change/"},{"id":563,"title":"Управление логами с помощью logrotate на Debian 9","slug":"logrotate-debian-9","priority":0,"summary":"Настройка logrotate для управления системными и прикладными журналами.","tags":[{"id":29,"name":"Linux","slug":"linux","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**Logrotate** — один из базовых инструментов администрирования. Он помогает поддерживать порядок в системе и предотвращает переполнение диска. При работе с [виртуальными серверами](https://fornex.com/ru/virtual-private-servers/) или [выделенными серверами](https://fornex.com/ru/dedicated-servers/) корректная настройка ротации журналов обеспечивает стабильность и предсказуемость работы сервисов.\r\n\r\nНа Debian 9 logrotate установлен по умолчанию и настроен для обработки журналов всех системных пакетов и приложений.\r\n\r\n### Проверка установки\r\n```bash\r\nlogrotate --version\r\n```\r\n\r\nВывод команды:\r\n```\r\nlogrotate 3.11.0\r\n```\r\n\r\n### Структура конфигурации\r\nКонфигурация logrotate хранится в двух местах:\r\n\r\n- **`/etc/logrotate.conf`** — основной файл с глобальными параметрами по умолчанию и шаблонами для несистемных файлов\r\n- **`/etc/logrotate.d/`** — каталог с отдельными конфигурациями для конкретных сервисов и приложений\r\n\r\nПример конфигурации для пакетного менеджера **apt**:\r\n```bash\r\ncat /etc/logrotate.d/apt\r\n```\r\n\r\nВывод:\r\n```\r\n/var/log/apt/term.log {\r\n rotate 12\r\n monthly\r\n compress\r\n missingok\r\n notifempty\r\n}\r\n\r\n/var/log/apt/history.log {\r\n rotate 12\r\n monthly\r\n compress\r\n missingok\r\n notifempty\r\n}\r\n```\r\n\r\nФайл содержит два блока — для `term.log` и `history.log`. Любые параметры, не указанные в блоке, наследуются из `/etc/logrotate.conf`.\r\n\r\nОписание директив:\r\n\r\n- **`rotate 12`** — хранить последние 12 архивных копий лога\r\n- **`monthly`** — выполнять ротацию раз в месяц\r\n- **`compress`** — сжимать архивы (по умолчанию используется gzip)\r\n- **`missingok`** — не выдавать ошибку, если лог-файл отсутствует\r\n- **`notifempty`** — не ротировать пустые файлы\r\n\r\n### Способ 1. Конфигурация в /etc/logrotate.d/\r\nЭтот вариант подходит для большинства случаев: конфигурация запускается ежедневно от имени root вместе со всеми стандартными задачами logrotate.\r\n\r\nВ качестве примера настроим ротацию для приложения, которое пишет `access.log` и `error.log` в каталог `/var/log/app/`:\r\n```bash\r\nnano /etc/logrotate.d/app\r\n```\r\n```\r\n/var/log/example-app/*.log {\r\n daily\r\n missingok\r\n rotate 14\r\n compress\r\n notifempty\r\n create 0640 www-data www-data\r\n sharedscripts\r\n postrotate\r\n systemctl reload example-app\r\n endscript\r\n}\r\n```\r\n\r\nОписание директив:\r\n\r\n- **`create 0640 www-data www-data`** — создавать новый пустой файл журнала после ротации с правами `0640`, владельцем и группой `www-data`\r\n- **`sharedscripts`** — скрипты из блока `postrotate` выполняются один раз после обработки всех файлов, а не для каждого файла отдельно\r\n- **`postrotate ... endscript`** — блок команд, выполняемых после ротации; в примере перезагружается приложение\r\n\r\nПосле настройки проверьте конфигурацию в режиме отладки:\r\n```bash\r\nsudo logrotate /etc/logrotate.conf --debug\r\n```\r\n\r\nКоманда выведет подробную информацию о том, какие файлы обрабатывает logrotate, без реального применения изменений.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Способ 2. Пользовательская конфигурация с запуском через cron\r\nЭтот вариант подходит, если нужна нестандартная периодичность ротации — например, каждый час. В таком случае конфигурацию размещают за пределами `/etc/logrotate.d/` и запускают вручную через cron.\r\n\r\nДопустим, приложение работает под пользователем `testing` и пишет логи в `/home/testing/logs/`. Создайте конфигурационный файл:\r\n```bash\r\nnano /home/testing/logrotate.conf\r\n```\r\n```\r\n/home/testing/logs/*.log {\r\n hourly\r\n missingok\r\n rotate 24\r\n compress\r\n create\r\n}\r\n```\r\n\r\n\r\nКонфигурационный файл logrotate\r\n\r\nЭта конфигурация будет ежечасно ротировать файлы, сохраняя 24 архивные копии и создавая новый файл журнала взамен повёрнутого.\r\n\r\nСоздайте тестовый файл журнала:\r\n```bash\r\ncd ~\r\nmkdir logs\r\ntouch logs/access.log\r\n```\r\n\r\nЗапустите logrotate вручную с указанием файла состояния:\r\n```bash\r\nlogrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state --verbose --force\r\n```\r\n\r\nВывод:\r\n```\r\nreading config file /home/testing/logrotate.conf\r\n\r\nHandling 1 logs\r\n\r\nrotating pattern: /home/testing/logs/*.log hourly (24 rotations)\r\nempty log files are rotated, old logs are removed\r\nconsidering log /home/testing/logs/access.log\r\n log does not need rotating\r\n```\r\n\r\n> **`--state`** — указывает, где хранить информацию о последней ротации. **`--verbose`** — выводит подробный лог выполнения. **`--force`** — принудительно выполняет ротацию, даже если она ещё не нужна по расписанию.\r\n\r\nПроверьте содержимое файла состояния:\r\n```bash\r\ncat /home/testing/logrotate-state\r\n```\r\n\r\nLogrotate фиксирует в этом файле, когда и какие журналы он последний раз обрабатывал.\r\n\r\n### Автоматизация через cron\r\nЧтобы ротация выполнялась автоматически каждый час, добавьте задание в cron:\r\n```bash\r\ncrontab -e\r\n```\r\n\r\nДобавьте в конец файла:\r\n```\r\n14 * * * * /usr/sbin/logrotate /home/testing/logrotate.conf --state /home/testing/logrotate-state\r\n```\r\n\r\n\r\nЗадание cron для logrotate\r\n\r\nЗадача будет запускаться на 14-й минуте каждого часа ежедневно.\r\n\r\n{{ contact_support_neutral_footer }}","images":[{"id":9258,"file":"https://fornex.com/media/article/img/logrotate-debian-9-1.webp","created":"2025-09-18T17:39:32+03:00"},{"id":9259,"file":"https://fornex.com/media/article/img/logrotate-debian-9-2.webp","created":"2025-09-18T17:39:39+03:00"}],"updated_at":"2026-04-02T16:50:47+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/563/change/"},{"id":561,"title":"Управление логами с помощью LogRotate на Ubuntu 16.04","slug":"logrotate-ubuntu-16-04","priority":0,"summary":"Как управлять 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":67,"title":"Управление почтовой очередью Exim","slug":"spam","priority":0,"summary":"Как работать с очередью почты, просматривать и удалять сообщения.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":66,"name":"Email","slug":"email","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**Exim** — это Mail Transfer Agent, агент передачи сообщений или почтовый сервер, использующийся во многих операционных системах семейства Unix.\r\n\r\nКаждое письмо, проходящее через почтовый сервер **Exim**, получает уникальный идентификатор (Message ID). \r\nПример: `1TrXS1-0003SL-3h`\r\n\r\nЭти идентификаторы используются для управления очередью, просмотра логов и удаления сообщений.\r\n\r\n### Основные команды для работы с очередью Exim\r\n\r\nВсе команды выполняются от пользователя **root**.\r\n\r\n#### Просмотр очереди\r\n- **Количество сообщений в очереди:**\r\n ```bash\r\n exim -bpc\r\n ```\r\n- **Полный список сообщений в очереди** (время, размер, ID, отправитель, получатель):\r\n ```bash\r\n exim -bp\r\n ```\r\n- **Просмотр заголовков конкретного сообщения:**\r\n ```bash\r\n exim -Mvh [ID]\r\n ```\r\n- **Просмотр тела письма:**\r\n ```bash\r\n exim -Mvb [ID]\r\n ```\r\n- **Просмотр логов сообщения:**\r\n ```bash\r\n exim -Mvl [ID]\r\n ```\r\n\r\n#### Удаление сообщений\r\n- **Удалить одно сообщение по ID:**\r\n ```bash\r\n exim -Mrm 1TrXgs-0004t8-0W\r\n ```\r\n- **Удалить все замороженные (frozen) сообщения:**\r\n ```bash\r\n exipick -z -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения от определённого домена отправителя:**\r\n ```bash\r\n exipick -f @spamdomain.com -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения для определённого домена получателя:**\r\n ```bash\r\n exipick -r @victimdomain.com -i | xargs exim -Mrm\r\n ```\r\n- **Удалить все сообщения из очереди:**\r\n ```bash\r\n exipick -i | xargs exim -Mrm\r\n ```\r\n- **Быстрое удаление большой очереди** (при сотнях тысяч сообщений) \r\nЕсли очередь сильно засорена, быстрее удалить её напрямую:\r\n ```bash\r\n rm -rfv /var/spool/exim4/input/\r\n rm -rfv /var/spool/exim4/msglog/\r\n sudo systemctl restart exim\r\n ```\r\n\r\n### Если установлен Postfix\r\n- **Просмотреть очередь:**\r\n ```bash\r\n mailq\r\n ```\r\n- **Удалить все сообщения из очереди:**\r\n ```bash\r\n postsuper -d ALL\r\n ```\r\n\r\n### Полезные советы\r\n- Перед массовым удалением сообщений рекомендуется сделать резервную копию папки `/var/spool/exim4/`.\r\n- Регулярно мониторьте очередь командой `exim -bpc`. Если количество сообщений постоянно растёт — это сигнал о возможной спам-атаке или неправильной конфигурации.\r\n- Для удобной работы с очередью можно использовать утилиту `exipick` — она позволяет гибко фильтровать сообщения по разным критериям.\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-04-01T17:39:36+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/67/change/"},{"id":335,"title":"Что такое php.ini?","slug":"php-ini","priority":0,"summary":"Как создать и использовать собственный файл php.ini на виртуальном хостинге (suPHP).","tags":[{"id":98,"name":"PHP","slug":"php","icon":null}],"body":"Каждый пользователь может создать собственный файл **php.ini** и разместить его в директории, где находятся его скрипты. Это позволяет гибко управлять настройками PHP без необходимости обращаться в службу поддержки.\r\n\r\n### Защита php.ini от публичного доступа\r\nЕсли вы размещаете **php.ini** внутри **public_html**, обязательно закройте к нему доступ извне. Откройте (или создайте) файл `.htaccess` в корневой папке сайта — например, `/home/user/public_html`, где `user` — ваше имя пользователя в cPanel — и добавьте следующий блок:\r\n```apache\r\n\r\norder allow,deny\r\ndeny from all\r\n\r\n```\r\n\r\nЭто предотвратит просмотр файла php.ini через браузер.\r\n\r\n!!! Info Важно\r\n Если PHP работает в режиме CGI или suPHP, использование директив `php_flag`, `php_admin_flag`, `php_value` и подобных в файле `.htaccess` недопустимо — это приведёт к ошибке **500 Internal Server Error**.\r\n\r\n### Применение php.ini ко всему сайту\r\n\r\nПо умолчанию пользовательский php.ini действует только в той директории, где он расположен. Чтобы он применялся ко всему сайту, добавьте одну из следующих строк в файл `.htaccess` — перед блоком `` — в зависимости от вашего сервера:\r\n\r\n**Для большинства серверов:**\r\n```apache\r\nsuPHP_ConfigPath /home/user/public_html\r\n```\r\n\r\n**Для серверов hostde6 и hostde15:**\r\n```apache\r\nlsapi_phpini /home/user/public_html\r\n```\r\n\r\nЗамените `user` на ваше реальное имя пользователя в cPanel.\r\n\r\n### Права доступа к файлам\r\n| Права | Значение |\r\n|---|---|\r\n| `644` | Владелец может писать, остальные — только читать (по умолчанию для файлов) |\r\n| `444` | Только чтение для всех, включая собственные скрипты |\r\n| `755` | Стандартные права для папок (менять не требуется) |\r\n\r\nПри правах `644` запись в файлы разрешена только скриптам, работающим в рамках вашего аккаунта. Права `444` добавляют дополнительный уровень защиты, запрещая запись даже вашим собственным скриптам — это необязательно, но допустимо.\r\n\r\nОбщее правило: **не меняйте права доступа** при установке скриптов, даже если инструкция требует это сделать. Шаг с CHMOD можно смело пропускать.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### Пример php.ini с основными параметрами\r\n> Синтаксис: `директива = значение` — строки, начинающиеся с `;`, являются комментариями и игнорируются PHP.\r\n\r\n- **`safe_mode`** `= Off`\r\n- **`disable_functions`** `=` — запрет выполнения указанных функций PHP в целях безопасности\r\n- **`max_execution_time`** `= 30` — максимальное время выполнения скрипта в секундах\r\n- **`memory_limit`** `= 16M` — максимальный объём оперативной памяти, доступный скрипту\r\n- **`error_reporting`** `= E_ALL & ~E_NOTICE` — показывать все ошибки, кроме замечаний\r\n- **`display_errors`** `= On` — вывод ошибок в браузер (удобно при отладке)\r\n- **`variables_order`** `= \"EGPCS\"` — порядок регистрации переменных: E = встроенные, G = GET, P = POST, C = Cookie, S = сессии\r\n- **`register_globals`** `= On` — доступ к переменным GET/POST/Cookie/сессий как к обычным переменным\r\n- **`post_max_size`** `= 55M` — максимальный объём принимаемых POST-данных\r\n- **`magic_quotes_gpc`** `= On` — автоматическое экранирование кавычек из POST/GET/Cookie\r\n- **`file_uploads`** `= On` — разрешить загрузку файлов\r\n- **`;upload_tmp_dir`** `=` — временная директория для загружаемых файлов (не забудьте создать её, если задаёте)\r\n- **`upload_max_filesize`** `= 5M` — максимальный размер загружаемого файла\r\n- **`session.save_handler`** `= files` — хранить данные сессий в файлах\r\n- **`session.save_path`** `= /tmp` — директория для файлов сессий (создайте её при необходимости)\r\n- **`session.use_cookies`** `= 1` — использовать cookie для работы с сессиями\r\n- **`session.name`** `= PHPSESSID` — имя cookie, используемое для идентификации сессии\r\n- **`session.auto_start`** `= 0` — не запускать сессию автоматически при каждом запросе\r\n- **`session.cookie_lifetime`** `= 0` — сессионная cookie удаляется при закрытии браузера\r\n- **`session.use_trans_sid`** `= 1` — автоматически добавлять ID сессии к ссылкам (если cookie отключены)\r\n\r\n{{ contact_support_neutral_footer }}","images":[],"updated_at":"2026-03-25T18:01:20+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/335/change/"},{"id":58,"title":"Что такое SSH?","slug":"ssh","priority":0,"summary":"Описание защищенной оболочки SSH для удаленного управления сервером.","tags":[{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null}],"body":"**SSH («безопасная оболочка»)** — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и передачу файлов. Он шифрует весь трафик, включая передаваемые пароли, что делает его более безопасным, чем протоколы Telnet и rlogin. SSH допускает выбор различных алгоритмов шифрования и имеет реализации для большинства операционных систем.\r\n\r\nSSH позволяет передавать через небезопасный канал другие сетевые протоколы, обеспечивая удаленную работу на компьютере через командную оболочку, а также передачу по шифрованному каналу звукового потока или видео. Для этого используется функция Port Forwarding в соединении TCP. Кроме того, SSH может использовать сжатие передаваемых данных для последующей их шифрации, что удобно для удаленного запуска клиентов X Window System.\r\n\r\n### История и развитие SSH\r\nПервая версия протокола, SSH-1, была разработана в 1995 году исследователем Tatu Yl’nen из Технологического университета Хельсинки. SSH-1 был создан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, которая не совместима с SSH-1. Протокол приобрел популярность, и к 2000 году его использовало около двух миллионов пользователей.\r\n\r\nВ 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта. Однако в некоторых странах по-прежнему требуется специальное разрешение для использования определенных методов шифрования, включая SSH.\r\n\r\nВ современных реализациях (включая OpenSSH с ~2017 года) поддержка SSH-1 полностью устранена. Практически все текущее использование основано на SSH-2.\r\n\r\n### Реализации SSH\r\nСуществуют две основные реализации SSH: собственническая коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80% компьютеров в Интернете использовали именно OpenSSH. Собственническая реализация разрабатывается организацией SSH Inc. и бесплатна для некоммерческого использования.\r\n\r\n### Безопасность SSH\r\nПротокол SSH-2 устойчив к атакам «man-in-middle», в отличие от протокола telnet. То есть, прослушивание трафика, «снифинг», ничего не дает злоумышленнику. Он также устойчив к атакам перехвата сессии (session hijacking) и оатакам подмены DNS (DNS spoofing).\r\n\r\n### Примеры использования SSH\r\n- Подключение к локальному SSH-серверу: `$ ssh -p 30000 user@127.0.0.1`\r\n- Генерация пары SSH-2 RSA-ключей: `$ puttygen -t rsa -b 4096 -o sample`\r\n\r\nБолее детальная информация о подключении по протоколу SSH в следующих статьях:\r\n- [Подключение к VPS или выделенному серверу по SSH в Windows](https://fornex.com/ru/help/ssh-to-vps/)\r\n- [Подключение к VPS или выделенному серверу по SSH на macOS](https://fornex.com/ru/help/ssh-to-vps-mac/)\r\n- [Настройка аутентификации по SSH-ключу на сервере](https://fornex.com/ru/help/authorization-ssh-key/)\r\n\r\nНекоторые клиенты, например, **PuTTY** — имеют и графический интерфейс пользователя. \r\nДля использования SSH в Python существуют модули вроде `python-paramiko` и `python-twisted-conch`. \r\n\r\n### Рекомендации по безопасности\r\n- Запрещение удаленного root-доступа.\r\n- Запрещение подключения с пустым паролем.\r\n- Выбор нестандартного порта для SSH-сервера.\r\n- Использование длинных SSH2 RSA-ключей.\r\n\r\n### Ссылки\r\n#### Стандарты\r\n- [RFC4251. The Secure Shell (SSH) Protocol Architecture](http://tools.ietf.org/html/rfc4251)\r\n- [RFC4251. Архитектура протокола SSH (перевод)](http://rfc2.ru/4251.rfc)\r\n\r\n#### Программы терминального доступа\r\n- [OpenSSH](http://www.openssh.com/) — свободная библиотека и набор утилит для поддержки шифрования.\r\n- [PuTTY](https://www.putty.org/) — популярный кроссплатформенный SSH-клиент.\r\n- [SecureCRT](https://www.vandyke.com/products/securecrt/) — SSH-клиент.\r\n\r\n#### Программы доступа к файлам\r\n- [WinSCP](http://winscp.net/eng/docs/lang:ru) — SFTP-клиент для Microsoft Windows.\r\n- [SSH Filesystem](http://fuse.sourceforge.net/sshfs.html) — позволяет подключить директорию, доступную на удаленной машине по ssh как локальную директорию в GNU/Linux.","images":[],"updated_at":"2026-01-23T14:38:18+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/58/change/"}]}}},"articleStatus":{"en":{},"de":{},"es":{},"fr":{},"it":{},"ru":{"ssh-guides":200}},"articleBodies":{"en":{},"de":{},"es":{},"fr":{},"it":{},"ru":{}},"tagDict":{"ru":[{"id":107,"name":"aaPanel","slug":"aapanel","icon":null},{"id":93,"name":"Партнерская программа","slug":"affiliates","icon":null},{"id":75,"name":"Android","slug":"android","icon":null},{"id":5,"name":"Apache","slug":"apache","icon":null},{"id":82,"name":"Бэкап","slug":"backup","icon":null},{"id":30,"name":"Bash","slug":"bash","icon":null},{"id":1,"name":"Основы","slug":"basics","icon":null},{"id":122,"name":"BeAdmin","slug":"beadmin","icon":null},{"id":57,"name":"Оплата","slug":"billing","icon":"https://fornex.com/media/dream_tag_icon/comments-alt-dollar.svg"},{"id":12,"name":"Bitrix","slug":"bitrix","icon":null},{"id":106,"name":"BrainyCP","slug":"brainy-cp","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":108,"name":"CloudPanel","slug":"cloudpanel","icon":null},{"id":25,"name":"Кластеризация","slug":"clustering","icon":null},{"id":8,"name":"CMS","slug":"cms","icon":null},{"id":13,"name":"Панель управления","slug":"control-panel","icon":null},{"id":64,"name":"Cpanel","slug":"cpanel","icon":"https://fornex.com/media/dream_tag_icon/cpanel.svg"},{"id":72,"name":"Cron","slug":"cron","icon":null},{"id":126,"name":"CyberPanel","slug":"cyberpanel","icon":null},{"id":3,"name":"Базы данных","slug":"database","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":39,"name":"Django","slug":"django","icon":null},{"id":86,"name":"DKIM","slug":"dkim","icon":null},{"id":10,"name":"DLE","slug":"dle","icon":null},{"id":18,"name":"DNS","slug":"dns","icon":null},{"id":104,"name":"Docker","slug":"docker","icon":null},{"id":88,"name":"Домен","slug":"domain","icon":null},{"id":74,"name":"Drupal","slug":"drupal","icon":null},{"id":66,"name":"Email","slug":"email","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":65,"name":"FAQ","slug":"faq","icon":null},{"id":63,"name":"FileZilla","slug":"filezilla","icon":null},{"id":102,"name":"Финансы","slug":"finance","icon":null},{"id":21,"name":"Firewall","slug":"firewall","icon":null},{"id":44,"name":"FTP","slug":"ftp","icon":null},{"id":40,"name":"Git","slug":"git","icon":null},{"id":105,"name":"HestiaCP","slug":"hestia-cp","icon":null},{"id":4,"name":"High availability","slug":"high-availability","icon":null},{"id":99,"name":"HTTPD","slug":"httpd","icon":null},{"id":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"}}}