Neuestes Update A domain ordered with hosting is checked, priced and registered

PNLCS in Betrieb nehmen

PNLCS ist eine Laravel-Anwendung. Sie läuft überall, wo PHP 8.4, MySQL oder MariaDB und ein Webserver verfügbar sind. Wenn Sie sich zuerst umsehen möchten: Die Live-Demo ist eine echte Installation.

Offizielles Image auf Docker Hub
docker pull panelica/pnlcs-runtime

Drei Installationswege

WegGeeignet fürDauerAnleitung
DockerPNLCS ausprobieren oder als einzelnen Container betreibenEtwa 5 MinutenBefehle
Eigener ServerEin VPS oder dedizierter Server ohne Docker: Ubuntu, Debian, AlmaLinux oder Rocky LinuxEtwa 30 MinutenBefehle
In einem Hosting-PanelEin Server, auf dem bereits Panelica, cPanel oder Ähnliches läuftEtwa 20 MinutenAnleitung

Schnellstart mit Docker

Das offizielle Image bündelt PHP-FPM 8.4, nginx, Node.js 20 und supervisor und lädt beim ersten Start den neuesten Code.

  1. Container startenErsetzen Sie zuerst changeme durch eigene Passwörter.
  2. 3 bis 5 Minuten wartenBeim ersten Start werden Abhängigkeiten installiert und das Frontend gebaut.
  3. /install öffnenDer Assistent prüft die Voraussetzungen, legt Ihr Admin-Konto an und sperrt sich danach selbst.
Terminal
$ 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

Auf eigenem Server installieren, ohne Docker

PNLCS läuft als normale Laravel-Anwendung auf PHP-FPM 8.4, MySQL oder MariaDB und Nginx. Die folgenden Befehle decken Ubuntu 24.04, Debian 13 und AlmaLinux 9 ab; Rocky Linux 9 verwendet die AlmaLinux-Befehle. Ersetzen Sie example.com durch Ihre eigene Adresse.

Vollständige Anleitung
  1. Server vorbereiten

    PHP 8.4 mit seinen Erweiterungen, eine Datenbank, Nginx, Node.js 20 zum Bauen des Frontends und Composer. Überspringen Sie diesen Schritt, wenn alles bereits installiert ist.

    Ubuntu 24.04 liefert PHP 8.3 aus, daher kommt PHP 8.4 aus dem ondrej-PPA. Debian 13 bringt PHP 8.4 selbst mit, liefert MariaDB statt MySQL, und das Paket php8.4-imap fehlt. Unter AlmaLinux und Rocky kommt PHP 8.4 aus dem Remi-Repository.

    Terminal
    $ 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. Anwendung installieren

    Das PNLCS-Verzeichnis gehört dem Webserver-Benutzer, und jeder Befehl mit composer, artisan und npm läuft als dieser Benutzer. Die Hilfsfunktion pn erledigt das für Sie. Gehört das Verzeichnis root, schlagen der Installationsassistent und spätere Updates fehl.

    Wählen Sie ein Datenbankpasswort und tragen Sie es sowohl bei CREATE USER als auch in .env ein. Die Hilfsfunktion pn gilt nur für die aktuelle Shell-Sitzung; definieren Sie sie nach einer erneuten Anmeldung neu.

    Verzichten Sie auf db:seed. Der Installationsassistent befüllt die Datenbank und legt den Administrator an, den Sie wählen.

    Terminal
    $ 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 auf public/ ausrichten

    Als Document Root dient public/ und niemals das Projektverzeichnis, denn dort liegt .env. Entfernen Sie die Standardseite, damit unter der Adresse des Servers nicht weiter die Nginx-Willkommensseite erscheint.

    Apache und Caddy funktionieren ebenfalls, mit denselben Regeln: Document Root public/, PHP über PHP-FPM 8.4 und jede Anfrage, die keine Datei ist, umgeschrieben auf index.php.

    Terminal
    $ 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. Im Browser abschließen, dann Zeitplan und Absicherung

    Öffnen Sie http://example.com/install. Der Assistent prüft die Voraussetzungen, legt Ihren Administrator an und schließt sich danach selbst.

    Eine Cron-Zeile für den Webserver-Benutzer steuert Rechnungen, Erinnerungen, Sperrungen, SSL-Prüfungen und Backups. Jobs in der Warteschlange brauchen keinen eigenen Worker; dieselbe Cron-Zeile arbeitet sie ab.

    Terminal
    $ 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

Voraussetzungen

Eine kleine Installation läuft mit 2 GB Arbeitsspeicher komfortabel, auch mit der Datenbank auf demselben Rechner.

Alle Voraussetzungen

PHP8.4 oder neuer
DatenbankMySQL 8.0 oder MariaDB 10.6+
WebserverNginx oder Apache mit PHP-FPM
Node.js18+ (20 LTS empfohlen), nur zum Bauen des Frontends
Composer2.x
Arbeitsspeicher1 GB reicht für eine kleine Installation; mit 2 GB läuft es komfortabel
SpeicherplatzEtwa 130 MB für die Anwendung; planen Sie mindestens 2 GB frei ein, da die Daten wachsen

Nach der Installation