Skip to content

Latest commit

 

History

History
208 lines (175 loc) · 7.17 KB

File metadata and controls

208 lines (175 loc) · 7.17 KB

Streaming Service Web (Pure PHP + Nginx + PostgreSQL + HTML + CSS + JS + API)

Bu notlar, saf PHP ile geliştirdiğim streamingservice adlı web projesinin sıfırdan kurulumu içindir.


Ubuntu Server Kurulumu

  • VirtualBox üzerinden GUI’siz Ubuntu Server kuruldu.
  • Sistem güncellenerek gerekli teknolojiler kuruldu
    sudo apt update && sudo apt upgrade -y
    sudo apt install nginx php php-fpm php-pgsql postgresql postgresql-contrib git unzip curl composer ufw rsync -y
  • ssh ile erişim için sunucuya bağlantı denendi.
    sudo systemctl status ssh
    sudo ufw allow OpenSSH
    sudo systemctl enable ssh

Apache Kaldırıldı

Varsayılan olarak gelen Apache web sunucusu kaldırıldı:

    sudo systemctl stop apache2
    sudo apt purge apache2 apache2-utils apache2-bin apache2.2-common -y
    sudo apt autoremove -y
    sudo systemctl disable apache2

NGINX Yapılandırılması

  • nginx.conf dosyası doğrudan düzenlendi.
  • Gerekli konfigürasyonlar yapıldı.
    sudo nginx -t
    sudo systemctl restart nginx

Yardımcı Scriptlerin Yazılması

  • MVC yapısı ve gerekli izinler için php_mvc.sh yazıldı.
  • Sunucuya web dosyalarını gönderebilmek için web_update.sh yazıldı.

Proje Dizin yapısı


Proje Adı: streamingservice

Konum: /var/www/streamingservice

streamingservice/
    app/
    ├── controllers/
    │     ├── Admin/
    │     │     ├── AdminController.php
    │     │     ├── CommentsController.php
    │     │     ├── DashboardController.php
    │     │     └── UsersController.php
    │     ├── AnimeController.php
    │     ├── AuthController.php
    │     ├── CommentController.php
    │     ├── FollowController.php
    │     ├── GenreController.php
    │     ├── HomeController.php
    │     └── ProfileController.php
    ├── models/
    │     ├── AdminModel.php
    │     ├── FollowModel.php
    │     ├── CommentModel.php
    │     ├── User.php
    │     └── UserModel.php
    ├── views/
    │     ├── admin/
    │     │     ├── admins/
    │     │     ├── comments/
    │     │     ├── layouts/
    │     │     │     ├── header.php 
    │     │     │     └── footer.php
    │     │     ├── users/
    │     │     └── index.php
    │     ├── anime/
    │     │     ├── categories.php
    │     │     ├── details.php
    │     │     └── watch.php
    │     ├── auth/
    │     │     ├── login.php
    │     │     └── register.php
    │     ├── home/
    │     │     └── index.php 
    │     ├── layouts/
    │     │     ├── header.php 
    │     │     └── footer.php
    │     ├── profile/
    │     │     └── profile.php
    ├── config/
    │     ├── definitions.php 
    │     ├── db.php
    │     └── bootstrap.php
    ├── core/
    │       ├── Logger.php
    │       ├── helpers.php
    │       └── env_loader.php
    ├── public/
    │       ├── css/
    │       ├── fonts/
    │       ├── img/
    │       ├── js/
    │       ├── sass/
    │       ├── Source/
    │       ├── videos/
    │       └── index.php
    ├── router.php
    ├── logs/
    .env
    .gitignore
    web_update.sh
    php_mvc.sh

Veritabanı Oluşturuldu

    CREATE DATABASE streamingservice;
    CREATE USER root WITH PASSWORD 'password123';
    GRANT ALL PRIVILEGES ON DATABASE streamingservice TO root;

.env dosyasındaki bilgiler veritabanı bağlantısı için kullanılmaktadır. Şifre aynı olmalıdır.

Yapı Geliştirildi

  • app/views/layouts/ dizini oluşturuldu. Ortak kullanılan header.php ve footer.php buraya taşındı.
  • core/helpers.php dosyası oluşturuldu.
    • asset() fonksiyonu eklendi. CSS/JS dosyalarının yolunu dinamik oluşturmak için kullanılır
  • config/definitions.php içerisine BASE_URL tanımı eklendi.
  • Tema projeye başarıyla entegre edildi. Tüm CSS, JS, resim gibi varlıklar public/ altına yerleştirildi.
    • public/ dizini altına şu klasörler eklendi:
      • css/, js/, fonts/, img/, videos/, sass/, Source/
  • Ana sayfa HomeController üzerinden çalışacak şekilde yönlendirildi.
    • View dosyası: app/views/home/index.php
  • Layout sistemi ile sayfalar artık header.php ve footer.php dosyalarıyla çevreleniyor.
  • web_update.sh scripti geliştirildi:
    • scp ile dosyalar uzak sunucuya gönderiliyor.
    • Gönderim öncesi yedek alınıyor ve en fazla 5 yedek tutuluyor.
    • Dosya gönderimi sonrası uzak sunucuda chown ve chmod otomatik uygulanıyor.

Genel Durum

  • Ubuntu Server kuruldu
  • Apache kaldırıldı
  • Nginx + PHP yapılandırıldı
  • Proje dizin yapısı script ile kuruldu
  • Veritabanı PostgreSQL ile tanımlandı
  • Web projesine tarayıcıdan erişildi
  • MVC yapılandırmasına uygun layout sistemi (header.php, footer.php) oluşturuldu
  • Tema entegre edildi, varlık dosyaları (css, js, img, vb.) public/ altına yerleştirildi
  • Yardımcı Scriptler yazıldı
  • Kayıt Olma Sayfası
  • Kullanıcı kayıt formu (/register) oluşturuldu.
  • Kullanıcı Giriş Sayfası (/login) oluşturuldu.
  • Kullanıcı oturum yönetimi ve erişim kontrolleri eklenmesi
  • Jikan API entegrasyonu
  • Ana Sayfa'da gösterilecek bölümlerin dinamikleştirilerek API'den veri çekecek hale getirilmesi
  • Dinamik kategori (/anime/genre/{genre-name}) sayfasının oluşturulması
  • Pagination eklenmesi
  • Anasayfaya harf bazlı filtreleme eklenmesi
  • Dinamik detay (/anime/{id}) sayfalarının oluşturulması
  • Follow butonlarının işlevlendirilmesi
  • Yorum sisteminin geliştirilmesi
  • İzleme sayfasının eklenmesi
  • Profil sayfasının eklenmesi
  • Profil sayfasına kullanıcıların favorilediği animelerin ve yorumlarının gösterilmesi
  • Animelerin aranabilmesi için arama fonksiyonu eklenmesi
  • Admin Panelinin oluşturulması
  • Admin Panelinden animelerin eklenebilmesinin sağlanması
  • Admin Paneline helpers eklenmesi
  • Admin Panelinden eklenen animelerin kullanıcıya gösterilebilmesi
  • Trailer'ların youtube'dan eklenebilmesi için geliştirme yapılması
  • Admin Panelinden eklenen içeriklerin kullanıcılar tarafından search edilebilmesi ve takip edebilmesinin sağlanması

CREATE TABLE admins ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE );


csrf koruması ekle Form içinden gelen değerlerin XSS’e karşı temizlenmesi (örneğin htmlspecialchars) E-posta tekrar kontrolü (aynı e-posta ile tekrar kayıt olmamalı) Hatalar için geçici session mesajları veya toast bildirimleri CSRF token kullanımı