Гид по технологиям

Установка Pico CMS с Nginx на Debian 10 (buster)

4 min read Веб Обновлено 26 Nov 2025
Pico CMS на Debian 10: установка с Nginx
Pico CMS на Debian 10: установка с Nginx

Кратко

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 на сайте.

Логотип Pico CMS

Схема структуры Pico CMS и файлов контента

Проверка работоспособности и критерии приёмки

  • 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 (мини-методология)

  1. Убедитесь, что порт 80 доступен извне.
  2. Запустите acme.sh в режиме standalone для валидации.
  3. Установите сертификаты в /etc/letsencrypt и настройте nginx.
  4. Проверьте автоматическое обновление и 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 даёт минимальную поверхность атаки и простоту поддержки.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сделать украшения на 3D‑принтере
3D-печать

Как сделать украшения на 3D‑принтере

ПК не уходит в сон во время стрима
Руководство

ПК не уходит в сон во время стрима

Сброс сети в Windows 10 Anniversary
Windows

Сброс сети в Windows 10 Anniversary

Raspberry Pi в VirtualBox — быстрая инструкция
Инструкции

Raspberry Pi в VirtualBox — быстрая инструкция

Как исправить ошибку Crunchyroll P‑DASH‑114
Техподдержка

Как исправить ошибку Crunchyroll P‑DASH‑114

Настройка часового пояса в Docker-контейнерах
DevOps

Настройка часового пояса в Docker-контейнерах