Skip to content

AyberkOzkan/streaming-service-pure-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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ı

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published