Установка Pico CMS с Nginx на Debian 10 (buster)
Кратко
Pico — лёгкий flat-file CMS на PHP: никаких баз данных и панели администрирования. В этом руководстве показано, как установить Pico на Debian 10 (buster) с Nginx, PHP-FPM и необязательным TLS через acme.sh. Подходит для статических сайтов и простых блогов.
Важно: приведённые команды предполагают работу от пользователя с sudo. Замените example.com и имена пользователей на свои значения.
Основные требования
Требования для запуска Pico:
- Nginx
- PHP 5.3.6 или выше (рекомендуется PHP 7.3 и новее)
- Composer
Краткое определение: flat-file CMS — система управления контентом, где каждая страница хранится как файл (обычно .md), без базы данных.
Предварительные требования
- Сервер с Debian 10 (buster).
- Непривилегированный пользователь с sudo.
Начальные действия
Проверьте версию Debian:
lsb_release -ds
# Debian GNU/Linux 10 (buster)Настройте часовой пояс:
sudo dpkg-reconfigure tzdataОбновите пакеты системы:
sudo apt update && sudo apt upgrade -yУстановите вспомогательные утилиты:
sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-httpsШаг 1 — Установка PHP
Установите PHP и нужные расширения (пример для PHP 7.3):
sudo apt install -y php7.3 php7.3-cli php7.3-fpm php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-zip php7.3-xml php7.3-mbstringПоказать загруженные модули PHP:
php -m
ctype
curl
exif
fileinfo
. . .Проверить версию PHP:
php --version
# PHP 7.3.x (cli)PHP-FPM на Debian 10 обычно запускается и включается автоматически.
Шаг 2 — Установка acme.sh и получение сертификата Let’s Encrypt (необязательно)
Зашифрованный трафик HTTPS не обязателен, но настоятельно рекомендуется. Для получения TLS-сертификатов используем acme.sh — лёгкий клиент на shell без лишних зависимостей.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail your-email@example.com
source ~/.bashrc
cd ~Проверка версии:
acme.sh --version
# например v2.x.xПолучение сертификатов (RSA и ECDSA) для domain.example:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
После успешного получения сертификатов они будут в:
- RSA: /home/username/example.com
- ECDSA: /home/username/example.com_ecc
Создаём общую директорию для сертификатов и копируем туда файлы:
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите сертификаты и настройте автоматическую перезагрузку nginx после обновления:
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"Сертификаты будут автоматически обновляться по расписанию acme.sh.
Выйдите из root и вернитесь к обычному пользователю:
exitШаг 3 — Установка и настройка Nginx
Установите Nginx:
sudo apt install -y nginxПроверьте версию:
sudo nginx -v
# nginx version: nginx/1.14.2Создайте конфигурацию для сайта. Откройте файл /etc/nginx/sites-available/pico.conf и добавьте следующее (замените example.com и пути к сертификатам при необходимости):
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/pico;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
index index.php;
location ~ ^/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?!well-known(/|$))) {
deny all;
}
location / {
index index.php;
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PICO_URL_REWRITING 1;
}
}Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/pico.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx.serviceШаг 4 — Установка Composer
Установим Composer глобально:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composerПроверка версии Composer:
composer --version
# Composer version x.y.zПримечание: команды установки Composer могут меняться; при проблемах смотрите https://getcomposer.org/download/.
Шаг 5 — Установка Pico CMS
Создайте корневую директорию для сайта и назначьте владельца:
sudo mkdir -p /var/www/pico
sudo chown -R your_username:your_username /var/www/picoПерейдите в директорию и скачайте Pico через Composer:
cd /var/www/pico
composer create-project picocms/pico-composer .После установки сделайте владельцем веб-сервера:
sudo chown -R www-data:www-data /var/www/picoТеперь вы можете создать папку content внутри /var/www/pico и добавить .md файлы — каждая такая страница станет URL на сайте.


Проверка работоспособности и критерии приёмки
- Nginx отвечает на запросы по HTTP и HTTPS.
- PHP-FPM обрабатывает PHP (проверьте phpinfo/local тестовый скрипт).
- При переходе на https://example.com открывается главная страница Pico.
- .md файлы в папке content отображаются как страницы.
Частые ошибки и способы их решения
502 Bad Gateway после установки
- Проверьте, запущен ли php7.3-fpm: sudo systemctl status php7.3-fpm
- Проверьте путь в fastcgi_pass и сокет /var/run/php/php7.3-fpm.sock
403 Forbidden при доступе к сайту
- Проверьте права на /var/www/pico и файлы. Веб-сервер должен иметь доступ.
Проблемы с сертификатом
- Посмотрите логи acme.sh в домашней папке root/пользователя.
- Убедитесь, что порт 80 открыт для валидации standalone.
Альтернативные подходы
- Apache вместо Nginx: используйте модуль mod_php или php-fpm и настройте Rewrite.
- Docker: запустите Pico в контейнере с готовым стеком (nginx+php-fpm) для изоляции.
- Хостинг без установки: некоторые провайдеры поддерживают Pico как пакет.
Когда Pico не подходит
- Если нужно много динамических функций и расширенная админка — лучше выбрать CMS с БД (WordPress, Drupal).
- Для крупного сайта с несколькими редакторами и версиями материалов flat-file может стать узким местом.
Ментальные модели и рекомендации
- Pico = файлы в контент + шаблоны в теме. Держите контент и шаблоны разделёнными.
- Минимальный стек: Nginx → PHP-FPM → Pico. SSL необязателен, но желателен.
Чек-листы по ролям
Администратор:
- Установить OS и обновления.
- Настроить firewall (открыть 80/443).
- Установить Nginx, PHP-FPM, Composer.
Разработчик темы:
- Разместить шаблоны в папке theme.
- Проверить поддержку Markdown и Twig.
Контент-менеджер:
- Создать .md файлы в папке content.
- Следить за SEO-метаданными в front-matter каждого файла.
Короткий метод установки TLS (мини-методология)
- Убедитесь, что порт 80 доступен извне.
- Запустите acme.sh в режиме standalone для валидации.
- Установите сертификаты в /etc/letsencrypt и настройте nginx.
- Проверьте автоматическое обновление и reload nginx в reloadcmd.
Совместимость и заметки по миграции
- Pico совместим с PHP >=5.3.6, но лучше использовать поддерживаемую версию PHP 7.x/8.x.
- При миграции с другой flat-file CMS проверьте формат Markdown и front-matter.
Ссылки
Итог
Pico — быстрый и простой способ запустить статический сайт без базы данных. Этот путь установки покрывает базовые шаги: подготовка Debian, установка PHP, настройка Nginx, (опционально) получение TLS и развёртывание Pico через Composer. Для небольших сайтов и блогов Pico даёт минимальную поверхность атаки и простоту поддержки.
Похожие материалы
Как сделать украшения на 3D‑принтере
ПК не уходит в сон во время стрима
Сброс сети в Windows 10 Anniversary
Raspberry Pi в VirtualBox — быстрая инструкция
Как исправить ошибку Crunchyroll P‑DASH‑114