Debian Sunucusunda Hafif Yerel Video Platformu Kurma

veri_merkezi

Yeni Üye
Katılım
Eyl 2026
Konular
1
Mesajlar
1
Tepki puanı
0
Görüntülenme
0
1. Gerekli paketlerin kurulumu

Kod:
sudo apt update
sudo apt install -y nginx php-fpm php-sqlite3 ffmpeg

2. SQLite veri tabanı oluşturma

Kod:
sudo mkdir -p /var/www/videoapp
cd /var/www/videoapp
sudo sqlite3 videomaster.db <<EOF
CREATE TABLE videos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    file TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
EOF
sudo chown -R www-data:www-data /var/www/videoapp

3. PHP arka plan scripti (/var/www/videoapp/add.php)

PHP:
<?php
$db = new PDO('sqlite:/var/www/videoapp/videomaster.db');
$title = $_POST['title'] ?? '';
$video = $_FILES['video'] ?? null;

if ($video && $video['error'] === UPLOAD_ERR_OK) {
    $dest = '/var/www/videoapp/media/' . uniqid() . '_' . basename($video['name']);
    if (!is_dir(dirname($dest))) mkdir(dirname($dest), 0755, true);
    move_uploaded_file($video['tmp_name'], $dest);

    $stmt = $db->prepare('INSERT INTO videos (title, file) VALUES (?, ?)');
    $stmt->execute([$title, $dest]);
    echo "Video ekleme başarılı";
} else {
    echo "Dosya yüklemesi yok.";
}
?>

4. Nginx yapılandırması (/etc/nginx/sites-available/videoapp)

Kod:
server {
    listen 80;
    server_name video.local;
    root /var/www/videoapp;

    location / {
        index index.php;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
    }

    location ~* \.(mp4|webm|ogg)$ {
        add_header Cache-Control "public, max-age=31536000";
    }
}

ln -s /etc/nginx/sites-available/videoapp /etc/nginx/sites-enabled/ ve nginx -t; systemctl reload nginx.

5. Video dönüştürme (opsiyonel)

ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -crf 23 output.mp4

6. İzin hatalarını önleme

  • www-data kullanıcısının /var/www/videoapp/media dizinine yazma izni olmalı.
  • chmod 755 /var/www/videoapp ve chmod 664 /var/www/videoapp/* ile dosya düzeyinde izinleri kontrol et.

7. Yaygın hatalar ve çözümleri

HataMuhtemel sebepÇözüm
502 Bad GatewayPHP‑FPM’te bellek limitini aşıyorphp.ini dosyasında memory_limit = 256M
Permission deniedMedia klasörü yazılabilir değilchown -R www-data:www-data media
Video oynatılamıyorContent-Type hatalıMIME tipini Nginx’de types { video/mp4 mp4; } ekle

Son adım
Basit bir index.php ile videoları listeleyip <video> etiketiyle oynatabilirsin. Örneğin:

PHP:
<?php
$db = new PDO('sqlite:/var/www/videoapp/videomaster.db');
foreach ($db->query('SELECT * FROM videos ORDER BY created_at DESC') as $row) {
    echo "<h3>{$row['title']}</h3>";
    echo "<video controls width=\"640\"><source src=\"{$row['file']}\" type=\"video/mp4\"></video>";
}
?>

Bu yapı, tek bir sunucu dosyasıyla 1‑2 GB video saklamak için yeterlidir ve kaynak tüketimini minimumda tutar.

Peki, siz hangi video formatını öncelikli olarak desteklemek istersiniz?

İlgili konular​

 
Geri
En Üst