Последнее обновление A domain ordered with hosting is checked, priced and registered

Запуск PNLCS

PNLCS представляет собой Laravel-приложение. Оно работает везде, где есть PHP 8.4, MySQL или MariaDB и веб-сервер. Чтобы сначала осмотреться, откройте демо : это настоящая установка.

Официальный образ на Docker Hub
docker pull panelica/pnlcs-runtime

Три способа установки

СпособПодходит дляВремяРуководство
DockerЗнакомства с PNLCS или работы в одном контейнереОколо 5 минутКоманды
Свой серверVPS или выделенного сервера без Docker: Ubuntu, Debian, AlmaLinux или Rocky LinuxОколо 30 минутКоманды
Хостинг-панельСервера, на котором уже работает Panelica, cPanel или аналогОколо 20 минутРуководство

Быстрый старт с Docker

Официальный образ содержит PHP-FPM 8.4, nginx, Node.js 20 и supervisor, а при первом запуске загружает актуальный код.

  1. Запустите контейнерыСначала замените changeme на собственные пароли.
  2. Подождите от 3 до 5 минутПри первом запуске устанавливаются зависимости и собирается фронтенд.
  3. Откройте /installМастер проверит требования, создаст аккаунт администратора и затем заблокирует себя.
Терминал
$ docker network create pnlcs-net

$ docker run -d --name pnlcs-db --network pnlcs-net \
  -e MYSQL_ROOT_PASSWORD=changeme \
  -e MYSQL_DATABASE=pnlcs -e MYSQL_USER=pnlcs \
  -e MYSQL_PASSWORD=changeme \
  mariadb:11

$ docker run -d --name pnlcs --network pnlcs-net \
  -p 8090:80 \
  -e DB_HOST=pnlcs-db -e DB_DATABASE=pnlcs \
  -e DB_USERNAME=pnlcs -e DB_PASSWORD=changeme \
  -e APP_URL=http://localhost:8090 \
  panelica/pnlcs-runtime:1.4

Установка на свой сервер без Docker

PNLCS работает как обычное Laravel-приложение на PHP-FPM 8.4, MySQL или MariaDB и Nginx. Команды ниже рассчитаны на Ubuntu 24.04, Debian 13 и AlmaLinux 9; для Rocky Linux 9 подходят команды AlmaLinux. Замените example.com на свой адрес.

Полное руководство
  1. Подготовьте сервер

    PHP 8.4 с расширениями, база данных, Nginx, Node.js 20 для сборки фронтенда и Composer. Пропустите этот шаг, если всё это уже установлено.

    В Ubuntu 24.04 есть только PHP 8.3, поэтому PHP 8.4 ставится из PPA ondrej. В Debian 13 PHP 8.4 есть в штатных репозиториях, вместо MySQL поставляется MariaDB, а пакета php8.4-imap нет. В AlmaLinux и Rocky PHP 8.4 берётся из репозитория Remi.

    Терминал
    $ sudo apt update
    $ sudo apt install -y software-properties-common git unzip curl cron
    $ sudo add-apt-repository -y ppa:ondrej/php
    $ sudo apt update
    $ sudo apt install -y php8.4-fpm php8.4-cli php8.4-mysql php8.4-mbstring \
      php8.4-xml php8.4-curl php8.4-zip php8.4-gd php8.4-bcmath php8.4-intl php8.4-imap
    $ sudo apt install -y mysql-server nginx
    
    $ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    $ sudo apt install -y nodejs
    
    $ curl -sS https://getcomposer.org/installer | php
    $ sudo mv composer.phar /usr/local/bin/composer
  2. Установите приложение

    Каталог PNLCS принадлежит пользователю веб-сервера, и каждая команда composer, artisan и npm выполняется от имени этого пользователя. Помощник pn делает это за вас. Если каталог принадлежит root, мастер установки и последующие обновления завершатся ошибкой.

    Выберите один пароль базы данных и укажите его и в CREATE USER , и в строке .env . Помощник pn действует только в текущей сессии оболочки; после повторного входа определите его снова.

    Не запускайте db:seed. Мастер установки сам заполнит базу данных и создаст выбранного вами администратора.

    Терминал
    $ sudo git clone https://github.com/Panelica/pnlcs.git /var/www/pnlcs
    $ sudo chown -R www-data:www-data /var/www/pnlcs
    $ cd /var/www/pnlcs
    $ pn() { sudo -u www-data HOME=/tmp/pnlcs-home COMPOSER_HOME=/tmp/pnlcs-home/composer "$@"; }
    
    $ pn composer install --no-dev --optimize-autoloader --no-interaction
    
    $ sudo mysql -e "CREATE DATABASE pnlcs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'pnlcs'@'localhost' IDENTIFIED BY 'choose-a-strong-password';
      GRANT ALL PRIVILEGES ON pnlcs.* TO 'pnlcs'@'localhost'; FLUSH PRIVILEGES;"
    
    $ pn cp .env.example .env
    $ pn sed -i 's|^APP_URL=.*|APP_URL=http://example.com|; s|^DB_PASSWORD=.*|DB_PASSWORD=choose-a-strong-password|' .env
    $ sudo chmod 640 .env
    
    $ pn php artisan key:generate
    $ pn php artisan migrate --force
    $ pn npm ci
    $ pn npm run build
    $ pn php artisan storage:link
    $ pn php artisan optimize
  3. Направьте Nginx на public/

    Корнем документов должен быть каталог public/ , а не корень проекта: в корне проекта лежит .env. Удалите сайт по умолчанию, иначе по адресу сервера так и будет открываться приветственная страница Nginx.

    Apache и Caddy тоже подходят, правила те же: корень документов public/, PHP через PHP-FPM 8.4, а все запросы не к файлам перенаправляются на index.php.

    Терминал
    $ sudo tee /etc/nginx/sites-available/pnlcs > /dev/null <<'EOF'
    server {
        listen 80;
        server_name example.com;
        root /var/www/pnlcs/public;
        index index.php;
        charset utf-8;
        client_max_body_size 64M;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~ /\.(?!well-known).* { deny all; }
    }
    EOF
    $ sudo ln -s /etc/nginx/sites-available/pnlcs /etc/nginx/sites-enabled/
    $ sudo rm -f /etc/nginx/sites-enabled/default
    $ sudo nginx -t && sudo systemctl reload nginx
  4. Завершите установку в браузере, затем настройте расписание и защиту

    Откройте http://example.com/install. Мастер проверит требования, создаст администратора и затем закроется.

    Одна строка cron для пользователя веб-сервера отвечает за счета, напоминания, приостановки, проверки SSL и резервные копии. Для заданий в очереди отдельный воркер не нужен: их обрабатывает та же строка cron.

    Терминал
    $ cd /var/www/pnlcs
    $ WEB_USER=www-data   # AlmaLinux, Rocky: apache
    $ (sudo crontab -u $WEB_USER -l 2>/dev/null; echo '* * * * * cd /var/www/pnlcs && php artisan schedule:run >> /dev/null 2>&1') | sudo crontab -u $WEB_USER -
    
    $ sudo apt install -y certbot python3-certbot-nginx   # Ubuntu, Debian
    $ sudo certbot --nginx -d example.com
    $ pn sed -i 's|^APP_URL=http://|APP_URL=https://|' .env
    $ pn php artisan optimize

Системные требования

Небольшой установке комфортно на 2 GB памяти, когда база данных находится на той же машине.

Полные требования

PHP8.4 или новее
База данныхMySQL 8.0 или MariaDB 10.6+
Веб-серверNginx или Apache с PHP-FPM
Node.js18+ (рекомендуется 20 LTS), только для сборки фронтенда
Composer2.x
ПамятьДля небольшой установки хватит 1 GB; с 2 GB комфортно
ДискОколо 130 MB для приложения; оставьте не менее 2 GB свободного места под растущие данные

После установки