Files
marcoandClaude Sonnet 4.6 41078fdc08 Initial commit: WitShop Laravel Online-Shop
- Laravel 11, Blade, Alpine.js, Tailwind CSS
- Produkt- & Kategorieverwaltung mit Varianten
- Checkout (Vorkasse + Rechnung), Session-Warenkorb
- Admin-Backend (Dashboard, Bestellungen, Kunden, CMS)
- DSGVO-konform: Cookie-Consent, Impressum, Widerruf, AGB
- PDF-Rechnung via dompdf, SMTP-Mailversand
- Kundenverwaltung mit manueller Freischaltung

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 00:34:09 +02:00

2.4 KiB

Deployment-Anleitung (VPS / Debian/Ubuntu)

Voraussetzungen

  • PHP 8.3 + Extensions: pdo_mysql, mbstring, xml, zip, gd, curl, intl
  • MySQL 8+
  • Nginx
  • Composer 2
  • Node.js 20 + npm

Schritt 1: Projekt deployen

cd /var/www
git clone <repo-url> shop
cd shop
composer install --no-dev --optimize-autoloader
npm ci && npm run build
cp .env.example .env
php artisan key:generate

Schritt 2: .env konfigurieren

Datenbankzugangsdaten, APP_URL und MAIL-Einstellungen eintragen.

nano .env

Schritt 3: Datenbank & Storage

php artisan migrate --force
php artisan db:seed --force
php artisan storage:link

Schritt 4: Berechtigungen

chown -R www-data:www-data /var/www/shop
chmod -R 755 /var/www/shop
chmod -R 775 /var/www/shop/storage /var/www/shop/bootstrap/cache

Schritt 5: Nginx-Konfiguration

server {
    listen 80;
    server_name example.de www.example.de;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.de www.example.de;

    ssl_certificate     /etc/letsencrypt/live/example.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.de/privkey.pem;

    root /var/www/shop/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    client_max_body_size 20M;

    location ~ /\.ht { deny all; }
}

Schritt 6: Queue-Worker (für E-Mails)

# /etc/supervisor/conf.d/shop-worker.conf
[program:shop-worker]
command=php /var/www/shop/artisan queue:work --sleep=3 --tries=3 --max-time=3600
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/shop-worker.log
supervisorctl reread && supervisorctl update && supervisorctl start shop-worker

Schritt 7: Admin-Account setzen

Nach dem ersten Login unter /login mit admin@example.de / changeme123: → Sofort das Passwort unter Admin → Einstellungen → Mein Konto ändern!

Updates deployen

cd /var/www/shop
git pull
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
supervisorctl restart shop-worker