Раздел «Файлы»
Раздел /files/ — публичный список файлов из серверной папки хранения. Страница остаётся статической, а список берётся из динамического JSON, который отдаёт локальный Python-сервис.
1. Что где лежит
/var/www/hommforever.ru/files/
├── index.html ← статическая страница списка файлов
├── help.html ← эта инструкция
└── storage/ ← файлы для публикации
/files/index.html не содержит список вручную: JavaScript на странице раз в секунду запрашивает /files/index.json с cache: "no-store" и перерисовывает таблицу.
/files/index.json — динамический ответ, а не файл в каталоге сайта. Nginx проксирует этот URL на локальный сервис hommforever-files-api.service, который запускает /opt/hommforever-files-api/server.py от пользователя www-data.
Сервис сканирует только /var/www/hommforever.ru/files/storage/, публикует обычные файлы и отдаёт для каждого имя, URL, размер, дату и MIME-тип. Скрытые, служебные, исполняемые и резервные файлы фильтруются.
2. Как добавить файл
- Подключиться к серверу:
ssh hommforever@158.160.96.21. - Скопировать файл в
/var/www/hommforever.ru/files/storage/. - Выставить права на файл
644; директории должны быть755. Для файлов сайта используется владелецroot:root, но файлы вstorage/достаточно сделать читаемыми для веб-сервера. - Открыть
/files/: в течение примерно 1 секунды страница получит новый/files/index.jsonи покажет файл.
3. Как удалить
- Удалить ненужный файл из
/var/www/hommforever.ru/files/storage/. - Ручная правка
index.htmlили JSON не нужна. - После следующего запроса к сервису файл исчезнет из
/files/index.json, а открытая страница уберёт строку из таблицы.
4. Как пересобрать список
/files/index.json строится Python-сервисом на каждый HTTP-запрос по фактическому содержимому storage/.Если список не обновляется, проверять нужно не генератор, а доступность сервиса hommforever-files-api.service, права на файл в storage/ и ответ /files/index.json.
5. Частые ошибки
- Файл не появился. Проверьте, что это обычный файл, не symlink, имя не начинается с точки и расширение не относится к заблокированным служебным/исполняемым типам.
- Нет доступа к скачиванию. Проверьте права: файл должен быть читаемым веб-сервером, обычно
644. - JSON не загружается. Проверьте
systemctl status hommforever-files-api.serviceи smoke-test на сервере:curl -sI -H 'Host: hommforever.ru' http://localhost/files/index.json. - В браузере старый список. Страница запрашивает JSON с
no-storeкаждую секунду; если изменений нет, проверьте фактическое содержимоеstorage/.