Bir süredir mesaimden arta kalan zamanlarımda kendi web sitem için geliştirmekte olduğum blog sistemini tamamladım ve Github hesabımda açık kaynak olarak paylaştım.
Bu blog sistemini Laravel ile geliştirip veritabanı olarak MongoDB kullanıldım. Site içi arama motorunu da Meilisearch ile oluşturdum. Laravel'in MongoDB ile çalışabilmesi için MongoDB tarafından resmi olarak paylaşılan "mongodb/laravel-mongodb" paketini kullandım.
Blog veya sayfa içeriğine resim eklemek ve boyutlandırmak için Spatie Media Library kullandım, ancak bu paket MongoDB ile uyumlu değil. Uyumluluğu sağlamak için spatie/laravel-medialibrary deposunu kendi GitHub hesabıma fork ederek gerekli düzenlemeleri yaptıktan sonra, bu projeye composer ile dahil ettim.
Daha sonrasında webauthn için kullandığım paketin MongoDB ile uyumsuzluğu sebebiyle o paket için de fork ederek düzenlemeye çalıştım ancak kullanıcı yetkilendirmesi kısmında Laravel'in kendi sistemini kullanması ve buranın doğrudan Mysql üzerinden çalışması sebebiyle bu tarafa müdahale edemediğimden tüm sistemi MongoDB'den çıkararak veritabanını Mysql kullanacak şekilde yeniden düzenledim. Github'da hem ilk tasarlamış olduğum MongoDB hali hem de Mysql hali aynı repoda farklı branchlarda yer almakta.
Bu sistemin çalışabilmesi için sunucuda aşağıdaki PHP fonksiyonlarının aktif olması gerekmektedir:
escapeshellarg, escapeshellcmd, proc_open, proc_get_status, proc_close
Git clone işleminden sonra kurulum için aşağıdaki adımları uygulayın:
composer update --no-dev
cp .env.example .env
.env dosyasını veritabanı bilgileriyle, Meilisearch, SMTP ve Cloudflare Turnstile tanımlamalarıyla düzenledikten sonra aşağıdaki komutlarla devam ediyoruz
php artisan key:generate
php artisan storage:link
php artisan migrate:fresh --seed
Tüm bu adımlardan sonra isterseniz admin panel yolunu .env dosyasındaki ADMIN_PANEL_PATH değişkeninden değiştirebilirsiniz.
php artisan optimize
Kurulum işlemleri tamamlandı. Son olarak admin kullanıcısını oluşturmak için aşağıdaki komutu çalıştırıyoruz.
php artisan app:create-user
Bu komutun çalıştırılması sonrasında sırasıyla isim, soyisim, kullanıcı adı, takma ad, eposta adresi ve parolamızı belirtiyoruz. Siteye giriş yapılan kullanıcı adı ve konularda görüntülenen kullanıcı isimleri birbirinden farklı. Bu durumda kullanıcı adı sadece kullanıcının kendisi ve sistemin yöneticisi tarafından biliniyor.
Sistemin Genel Özellikleri
- Kategori ile birlikte blog oluşturma
- Sayfalar
- Kişisel notlar
- Kişisel notlarınız veritabanında şifrelenmiş olarak saklanır.
- Şifreleme anahtarınız veritabanında saklanmaz. Şifreleme anahtarınızı unutursanız, notlarınıza erişemezsiniz.
- Notlarınıza yönetici veya başka bir kullanıcı tarafından erişilemez.
- Site içi arama motoru (Meilisearch)
- Admin panel
- Webauthn
- 2 Adımlı doğrulama
- Yapay Zeka Chatbot - Gemini ya da ChatGPT
- IP Filtresi (Kara Liste ve Beyaz Liste)
- Kullanıcı yönetimi
- Cloudflare Turnstile (Google Recaptcha benzeri)
- E-posta SMTP
- Medya Kütüphanesi
- MongoDB
- Laravel 11
- PHP 8.3
- Bootstrap 5
- Font Awesome 6.5.1 (Pro)
English: https://niyazi.net/en/laravel-blog-system-alphablog
Muhammed Niyazi ALPAY - Cryptograph
Senior Software Developer & Senior Linux System Administrator
Meraklı
PHP MySQL MongoDB Python Linux Cyber Security
Hiç yorum yok