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.
docker pull panelica/pnlcs-runtime
Drei Installationswege
| Weg | Geeignet für | Dauer | Anleitung |
|---|---|---|---|
| Docker | PNLCS ausprobieren oder als einzelnen Container betreiben | Etwa 5 Minuten | Befehle |
| Eigener Server | Ein VPS oder dedizierter Server ohne Docker: Ubuntu, Debian, AlmaLinux oder Rocky Linux | Etwa 30 Minuten | Befehle |
| In einem Hosting-Panel | Ein Server, auf dem bereits Panelica, cPanel oder Ähnliches läuft | Etwa 20 Minuten | Anleitung |
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.
- Container startenErsetzen Sie zuerst
changemedurch eigene Passwörter. - 3 bis 5 Minuten wartenBeim ersten Start werden Abhängigkeiten installiert und das Frontend gebaut.
- /install öffnenDer Assistent prüft die Voraussetzungen, legt Ihr Admin-Konto an und sperrt sich danach selbst.
$ 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.
-
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-imapfehlt. 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
Terminal$ sudo apt update $ sudo apt install -y git unzip curl cron $ 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 $ sudo apt install -y mariadb-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
Terminal$ sudo dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-9.rpm $ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.4 -y $ sudo dnf install -y php php-fpm php-mysqlnd php-mbstring php-xml php-gd \ php-bcmath php-intl php-imap php-pecl-zip \ mysql-server nginx git unzip cronie policycoreutils-python-utils $ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - $ sudo dnf install -y nodejs $ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ sudo systemctl enable --now php-fpm mysqld nginx
-
Anwendung installieren
Das PNLCS-Verzeichnis gehört dem Webserver-Benutzer, und jeder Befehl mit
composer,artisanundnpmläuft als dieser Benutzer. Die Hilfsfunktionpnerledigt 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 USERals auch in.envein. Die Hilfsfunktionpngilt 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
Terminal$ sudo git clone https://github.com/Panelica/pnlcs.git /var/www/pnlcs $ sudo chown -R apache:apache /var/www/pnlcs $ cd /var/www/pnlcs $ pn() { sudo -u apache HOME=/tmp/pnlcs-home COMPOSER_HOME=/tmp/pnlcs-home/composer "$@"; } $ pn /usr/local/bin/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 $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/storage(/.*)?" $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/bootstrap/cache(/.*)?" $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/\.env" $ sudo restorecon -R /var/www/pnlcs $ sudo setsebool -P httpd_can_network_connect_db 1 $ sudo setsebool -P httpd_can_network_connect 1
-
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 aufindex.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
Terminal$ sudo tee /etc/nginx/conf.d/pnlcs.conf > /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-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF $ sudo nginx -t && sudo systemctl reload nginx
-
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.
| PHP | 8.4 oder neuer |
|---|---|
| Datenbank | MySQL 8.0 oder MariaDB 10.6+ |
| Webserver | Nginx oder Apache mit PHP-FPM |
| Node.js | 18+ (20 LTS empfohlen), nur zum Bauen des Frontends |
| Composer | 2.x |
| Arbeitsspeicher | 1 GB reicht für eine kleine Installation; mit 2 GB läuft es komfortabel |
| Speicherplatz | Etwa 130 MB für die Anwendung; planen Sie mindestens 2 GB frei ein, da die Daten wachsen |
Nach der Installation
- Einrichtungs-ChecklisteFirmendaten, E-Mail, ein Zahlungsanbieter, ein Server und Ihr erstes Produkt.
- Ihr erster VerkaufVom leeren Katalog zur bezahlten, bereitgestellten Bestellung.
- Sicherheits-ChecklisteHTTPS, Debug aus, Zwei-Faktor für Mitarbeiter, Backups, die den Server verlassen.
- AktualisierenDie neueste Version holen, ohne Daten zu verlieren.
- BackupsWas gesichert werden muss, einschließlich des Anwendungsschlüssels.
- FAQHäufige Fragen.