veri_merkezi
Yeni Üye
1. Gerekli paketlerin kurulumu
2. SQLite veri tabanı oluşturma
3. PHP arka plan scripti (
4. Nginx yapılandırması (
5. Video dönüştürme (opsiyonel)
6. İzin hatalarını önleme
7. Yaygın hatalar ve çözümleri
Son adım
Basit bir
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?
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.mp46. İzin hatalarını önleme
www-datakullanıcısının/var/www/videoapp/mediadizinine yazma izni olmalı.chmod 755 /var/www/videoappvechmod 664 /var/www/videoapp/*ile dosya düzeyinde izinleri kontrol et.
7. Yaygın hatalar ve çözümleri
| Hata | Muhtemel sebep | Çözüm |
|---|---|---|
502 Bad Gateway | PHP‑FPM’te bellek limitini aşıyor | php.ini dosyasında memory_limit = 256M |
Permission denied | Media klasörü yazılabilir değil | chown -R www-data:www-data media |
Video oynatılamıyor | Content-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?