Bu notlar, saf PHP ile geliştirdiğim streamingservice adlı web projesinin sıfırdan kurulumu içindir.
- 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 -ysshile erişim için sunucuya bağlantı denendi.
sudo systemctl status ssh
sudo ufw allow OpenSSH
sudo systemctl enable sshVarsayı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 apache2nginx.confdosyası doğrudan düzenlendi.- Gerekli konfigürasyonlar yapıldı.
sudo nginx -t
sudo systemctl restart nginx- MVC yapısı ve gerekli izinler için
php_mvc.shyazıldı. - Sunucuya web dosyalarını gönderebilmek için
web_update.shyazıldı.
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
CREATE DATABASE streamingservice;
CREATE USER root WITH PASSWORD 'password123';
GRANT ALL PRIVILEGES ON DATABASE streamingservice TO root;
.envdosyasındaki bilgiler veritabanı bağlantısı için kullanılmaktadır. Şifre aynı olmalıdır.
app/views/layouts/dizini oluşturuldu. Ortak kullanılanheader.phpvefooter.phpburaya taşındı.core/helpers.phpdosyası oluşturuldu.asset()fonksiyonu eklendi. CSS/JS dosyalarının yolunu dinamik oluşturmak için kullanılır
config/definitions.phpiçerisineBASE_URLtanı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
- View dosyası:
- Layout sistemi ile sayfalar artık
header.phpvefooter.phpdosyalarıyla çevreleniyor. web_update.shscripti geliştirildi:scpile dosyalar uzak sunucuya gönderiliyor.- Gönderim öncesi yedek alınıyor ve en fazla 5 yedek tutuluyor.
- Dosya gönderimi sonrası uzak sunucuda
chownvechmodotomatik uygulanıyor.
- 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ı