Laravel Proje Kurulumu

Makale İçerik Listesi

Proje Kurulumu

  1. Yeni bir Laravel Projesi yapmak için yapmamız gereken ilk şey Terminal'de laravel new projeadi yazmak. Bundan sonra proje klasörünün içine cd projeadi diyerek giriyorum.
  2. Projenin NPM ihtiyaçlarını yüklemek için Terminal'de npm install komutunu çalıştırıyorum. 
  3. Webpack çalıştırırken assetlerin cache'li halinin gelmesini engellemek için webpack.mix.js dosyasına versiyon eklemeyi dahil ediyorum.
    mix.js('resources/js/app.js', 'public/js')
        .postCss('resources/css/app.css', 'public/css', [
            //
        ])
    +   .version();
  4. Webpack watcher çalıştırmak için Terminal'den npx mix watch komutunu çalıştır.
  5. Valet kurulu olduktan sonra zaten websitesi projeadi.test adresinde çalışıyor olacak. Dilersen projeyi Terminal'den php artisan serve komutu ile de çalıştırabilirsin.

Tailwind Kurulumu

  1. Taiwind'i projeye dahil etmek için Terminal'den
    npm install -D tailwindcss@latest postcss@latest autoprefixer@latest 
    komutunu çalıştır.
  2. Yüklemeleri tamamladıktan sonra Terminal'den npx tailwindcss init komutu ile Tailwind config dosyasını oluştur.
  3. JIT modunu açmak için config dosyasına
    
    module.export = { 
    + mode:'jit',
    satırını ekle.
  4. JIT modu açıkken PURGE uygulanacak dosya scope'unu belirtmen çok önemli. O nedenle bunu da belirt.
    
    module.exports = {
        mode: 'jit',
    -   purge: [],
    +   purge: [
    +    './resources/**/*.blade.php',
    +    './resources/**/*.js',
    +    './resources/**/*.vue',
    +   ],
        darkMode: false, // or 'media' or 'class'
        theme: {
          extend: {},
        },
        variants: {
          extend: {},
        },
        plugins: [],
    }
    
  5. webpack.mix.js dosyasında postCss içerisine Tailwind'i ekle
    
    // webpack.mix.js
    mix.js("resources/js/app.js", "public/js")
      .postCss("resources/css/app.css", "public/css", [
    +    require("tailwindcss"),
    ]);
  6. .resources/css/app.css içerisinde @tailwind direktifi ile base, components ve utilities stillerini ekle.
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
  7. views/layout klasöründe ana bir şablon olarak app.blade.php dosyasını oluştur.
  8. <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <title>Planbro</title>
    </head>
    <body class="antialiased">
    <div class="relative flex items-top justify-center bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
        @if (Route::has('login'))
            <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
                @auth
                    <a href="{{ route('home') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Planbro</a>
                @else
                    <a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>
    
                    @if (Route::has('register'))
                        <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
                    @endif
                @endauth
            </div>
        @endif
    </div>
    
    @yield('content')
    </body>
    </html>
  9. Sonra bu layout dosyasını kullanarak ilk sayfayı oluştur index.blade.php 
    @extends('layouts.app')
    
    @section('content')
        <h1>Planbro</h1>
    @endsection
    
  10. Ana layout sayfasına stil dosyasını ekle. 
    <link href="{{ mix('css/app.css') }}" rel="stylesheet">
  11. routes/web.php içerisinde Ana sayfa için düzenleme yap. 
    use App\Http\Controllers\MainController;
    ...
    Route::get('/', [MainController::class, 'index'])->name('home');
  12. MainController'ı yap php artisan make:controller MainController diyerek
    class MainController extends Controller
    {
        public function index()
        {
            return view('index');
        }
    }
  13. Webpack Watcher ile çalıştır npx mix watch

Veritabanı Kurulumu

  1. Terminal'den MySQL'e root user olarak müdahale edebilmek için mysql -u root komutunu çalıştır.
  2. Yeni veritabanı olluşturmak için create database veritabanı_adi; komutunu çalıştır.
  3. Oluşturduğun veritabanını kontrol etmek için Terminal'de show databases; komutunu çalıştır.
  4. exit; diyerek çıkıyorum.

Github Kurulumu

    1. Projeyi Github'da bir repoya koymak için öncelikle Github'da yeni bir repo oluştur.
    2. Terminalde klasör içindeyken 
      git init
      git add .
      git commit -m "Vira bismillah"
      git branch -M main
      git remote add origin [email protected]:homer/<REPOSITORY_NAME>.git
      git push -u origin main
    3. Bu şekilde pushladığında Access Token hatası verdiyse Terminal'den token ile pushlayabilirsin. 
      git push https://<GITHUB_ACCESS_TOKEN>@github.com/<GITHUB_USERNAME>/<REPOSITORY_NAME>.git

SSH Your Device Key

  1. Forge'da çalışmak için cihazımızın SSH Key'ini eklememiz gerekiyor. Bunu Forge içerisinde Account > SSH üzerinden yapabiliriz.
  2. Bu alana ekleyeceğimiz SSH Key'ler bundan sonra oluşturacağımız her server'a otomatik olarak eklenecek.
  3. İsim verip SSH Key oluşturduktan sonra bu key'i istediğim server'a ekleyebilirim.
  4. Oluşturduğun SSH Key'i clipboard'a kopyalamak için. 
    #pbcopy < ~/.ssh/id_rsa.pub
    #or
    cat ~/.ssh/id_rsa.pub | pbcopy
  5. Server'a ssh ile giriş yapabilmek için ssh [email protected]
  6. SSH'i Account seviyesinde yaptığım zaman buraya eklediğim kişi bütün server'lara girebiliyor. Ama belli bir server için bunu yapmak istersek Server seviyesinde de bunu yapmamız mümkün.

Forge Kurulumu

      1. Forge'da istediğin server'a gir ve yeni bir site oluştur. (Bu arada database adını da belirleyip oluşturabilirsin.)
      2. Oluşturduğun site için Github reposunu belirle <GITHUB_USERNAME>/<REPOSITORY_NAME> ve branch adını main olarak yaz.
      3. Repo yüklendikten sonra Enable Quick Deploy özelliğini aç.
      4. Server içinden Database ve kullanıcı oluştur.
      5. Uygulamanın Environment Variablelarında database adını, database kullanıcısını ve şifresini yaz.

Hover Kurulumu

      1. Hover kontrol panelinde domainin ayarlarına gir.
      2. A* ve A@ değerlerini Forge IP değerlerine göre güncelle.

Forge Üzerinde SSL Sertifikası

      1. Tekrar Forge Panelinde sitenin sayfasına gir.
      2. SSL bölümünden LetsEncrypt seçeneğini işaretle ve Domain olarak hem alanadi.com hem de www.alanadi.com u kaydettirerek SSL oluştur.

Prod Veritabanını Sequel Pro'ya Al

    1. Sequel Pro'da SSH ile yeni veritabanı aç.
    2. MySQL Host ve SSH Host Forge üzerindeki IP adresi.

Auth Scaffolding: Laravel/UI (Bootstrap)

  1. Bu adımlar için yukardaki tailwind adımlarını yapmamış olman daha iyi.
  2. Laravel/UI - link
  3. composer'dan yükle composer require laravel/ui
  4. generate auth scaffolding with php artisan ui bootstrap --auth bunu yapınca app.blade.php tekrar düzenlenir.
  5. Öncelikle node dependencyleri yükle npm install
  6. npm run dev diyerek dependencyleri compile et.
  7. npm run watch diyerek değişiklikleri takip et
  8. Prod'a yollarken npm run prod

Creating Controllers & Models

  1. Yeni bir controller oluşturmak ve oluştururken onu da bir modele bağlamak istersen ör. UsersController 
    php artisan make:controller UsersController --model=User

Kaynakça

  1. Türkçe Laravel - link