Giriş
Laravel, yerleşik araç ve kaynak setiyle birlikte gelen, modern PHP uygulamaları geliştirmek için bir web uygulaması çerçevesidir. Güvenilirliği, performansı, verimliliği, modülerliği ve güvenliği ile tanınır. Çeşitli yerleşik özellikleri sayesinde Laravel, popülaritesinde inanılmaz bir büyüme kaydetti. Birçok geliştirici, web geliştirme sürecini kolaylaştırmak için Laravel'i benimsiyor.
Bu kılavuz, Ubuntu 20.04 üzerinde yeni bir Laravel uygulamasının nasıl kurulacağını ve yapılandırılacağını gösterecektir.
Ubuntu üzerinde Laravel
Laravel'i indirmek ve yönetmek için Composer adındaki PHP bağımlılık yöneticisini kullanacağız. Composer'ı kurmak için bu eğitimin talimatlarını takip edin. Uygulamayı Nginx sunucusu sunacaktır. Bu sunucu, MySQL veritabanını kullanan bir demo Laravel uygulaması kuracaktır.
Bu kılavuz bazı önkoşullar gerektirmektedir. Halihazırda düzgün şekilde yapılandırılmış ve çalışan bir Ubuntu 20.04 sunucunuz olduğunu varsayıyoruz. Referans olması açısından, bir Ubuntu sunucusu kurma hakkında hızlı bir kılavuz bulabilirsiniz. Ayrıca LEMP (Linux, Nginx, MySQL ve PHP) yığınının kurulu ve yapılandırılmış olması gerekir. LEMP yığınının kurulması ve yapılandırılması.
hakkında ayrıntılı bir kılavuzumuz bulunmaktadır. Çeşitli paketler kuracağımız için root izni gereklidir. Ubuntu durumunda, root kullanıcısı varsayılan olarak devre dışıdır. Bu nedenle, sudo yetkisine sahip root olmayan bir kullanıcıya erişmemiz gerekiyor. Diğer kullanıcılara nasıl sudo yetkisi verileceği.
Step 1 – PHP Modüllerinin Kurulması
Laravel'i kurmadan önce, framework için bazı önemli PHP modüllerine ihtiyacımız var. Bu modüller doğrudan Ubuntu varsayılan paket depolarından edinilebilir. Bu modüller karakter kodlama, XML ve hassas matematik gibi özellikleri destekler.
İlk olarak, APT önbelleğini güncelleyin ve paketleri kurun:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Step 2 – Uygulama için Veritabanı Oluşturma
Laravel'in işlevselliğini göstermek için, kullanıcının ziyaret etmek istediği yerlerin listesini ve halihazırda visited olan yerlerin listesini gösteren bir seyahat listesi uygulaması yapacağız. Bu verileri, name (konum adı) ve visited ( visited veya nonvisited olarak işaretleyen) alanlarına sahip bir yer tablosunda saklayabiliriz. Ek bir alan, her giriş için benzersiz bir kimlik içerecektir. Verileri Laravel uygulamamızla bağlamak için özel bir MySQL kullanıcısı oluşturacağız ve kullanıcıya travellist.
veritabanı üzerinde tam yetki vereceğiz. Yerel MySQL PHP kütüphanesi olan mysqlnd artık caching_sha2_authentication yöntemini desteklememektedir. Bu nedenle, veritabanımızı mysql_native_password kimlik doğrulama yöntemiyle ayarlamamız gerekiyor. MySQL kabuğuna root:
|
1 |
$ sudo mysql |
Ardından, travellist:
|
1 |
> CREATE DATABASE travellist; |
Bundan sonra, uygun bir şifre ile özel bir travellist_user kullanıcısı oluşturun:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Give the user travellist_user kullanıcısına travellist veritabanı üzerinde tam yetki verin. Bu aynı zamanda kullanıcının sunucudaki diğer veritabanlarını oluşturmasını ve değiştirmesini de engelleyecektir:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
MySQL kabuğundan çıkın:
|
1 |
> exit |
Yeni kullanıcıyı test edelim. Aşağıdaki komut, MySQL kabuğuna travellist_user kullanıcısı olarak giriş yapacaktır. -p bayrağı kullanıcı şifresini soracaktır:
|
1 |
$ mysql -u travellist_user -p |
Mevcut tüm veritabanlarını yazdırın. Daha önce yapılandırıldığı gibi, yalnızca travellist ve information_schema veritabanlarını göstermelidir:
|
1 |
> SHOW DATABASES; |
Ardından, places veri tablosunu oluşturmamız gerekiyor. Aşağıdaki MySQL ifadesini çalıştırın:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Tabloyu bazı örnek verilerle dolduralım:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
Verilerin veritabanına başarıyla kaydedilip kaydedilmediğini görelim:
|
1 |
> SELECT * FROM travellist.places; |
Gördüğümüz gibi, test tablosu geçerli verilerle dolduruldu. Şimdi MySQL kabuğundan çıkabiliriz:
|
1 |
> exit |
Adım 3 – Yeni Bir Laravel Uygulaması Oluşturma
Artık Composer kullanarak yeni bir Laravel uygulaması oluşturmaya hazırız. Demo uygulaması olarak travellist uygulamasını kullanacağız. Bu uygulama, Laravel'in temel yapılandırmasını göstererek MySQL veritabanındaki konum listesini görüntüleyecektir. Kullanıcının ana dizinine gidin:
|
1 |
$ cd ~ |
Bir sonraki adım, Composer kullanarak yeni bir Laravel uygulaması oluşturmaktır. Varsayılan ayarlara sahip temel bir Laravel uygulaması içeren özel bir travellist dizini oluşturacaktır. Aşağıdaki komutu çalıştırın:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Uygulama kurulduktan sonra, tüm bileşenlerin başarıyla yüklenip yüklenmediğini doğrulayabiliriz:
|
1 2 |
$ cd travellist $ php artisan |
Çıktı, tüm uygulama dosyalarının yerinde olduğunu doğrular. Ayrıca tüm Laravel komut satırı araçlarının işlevsel olduğunu garanti eder. Ancak, veritabanını kurmak ve birkaç ekstra ince ayar yapmak için hala uygulama yapılandırması gerektirir.
Adım 4 – Laravel Yapılandırması
Tüm Laravel yapılandırma dosyaları, kök uygulama dizini içindeki config adlı bir dizinde saklanır. Ek olarak, Laravel'i Composer ile kurarken bir ortam dosyası da oluşturulur. Bu dosya, mevcut ortama özgü çeşitli ayarları içerir. İçinde bildirilen değerler, config.
dizinindeki normal yapılandırma dosyalarında ayarlanan değerlerden öncelikli olacaktır. Her benzersiz kurulum; veritabanı bağlantı ayarları, uygulama URL'si, hata ayıklama seçenekleri vb. değerleri tanımlamak için kendi ortam dosyasına ihtiyaç duyacaktır. Ortam dosyasının veritabanı kimlik bilgileri, güvenlik anahtarları vb. hassas bilgiler içerdiğini unutmayın. Bu nedenle, bu dosyanın asla herkese açık olarak paylaşılmaması şiddetle tavsiye edilir.
Ortam dosyasını bir metin düzenleyiciyle açın:
|
1 |
$ nano .env |
İşte örnek bir ortam kodu:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
Değerleri inceleyelim:
APP_NAME: Bu alan uygulamanın adını tanımlar. Bu ad, bildirimler ve mesajlar için kullanılacaktır.APP_ENV: Uygulamanın mevcut ortamı.APP_KEY: Bu anahtar, Laravel Composer aracılığıyla kurulurken otomatik olarak oluşturulur. Salt ve hash oluşturmak için kullanılır. Değiştirilmesine gerek yoktur.APP_DEBUG: Hata ayıklama modu geçişi. Açıldığında, istemci tarafında hata ayıklama bilgilerini gösterir.APP_URL: Uygulama temel URL'si. Ayrıca uygulama bağlantıları oluşturmak için de kullanılır.DB_DATABASE: Veritabanının adı. Bu durumda, oluşturduğumuz özel veritabanı olacaktır.DB_USERNAME: Veritabanına bağlanmak için kullanılacak kullanıcı adı.DB_PASSWORD: Veritabanına bağlanmak için kullanılacak şifre.
Değişiklikler yapıldıktan sonra dosyayı kaydedin ve düzenleyiciyi kapatın.
Adım 5 – Nginx Kurulumu
Laravel'i kullanıcının ana dizinindeki yerel bir klasöre başarıyla kurduk. Bu yapılandırma yerel geliştirme ortamı için gayet iyi çalışır. Ancak, genel internete açık web sunucuları için uygulanması önerilmez.
Bir sonraki adımımız uygulamayı şuraya taşımaktır: /var/www çünkü burası Nginx üzerinde çalışan web uygulamaları için alışılagelmiş konumdur. mv komutunu kullanarak travellist klasörünü şuraya taşıyın: /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Ardından, kullanıcıya şu klasörler için yazma erişimi atayın: storage ve cache klasörleri. Bunlar Laravel uygulaması tarafından oluşturulan dosyaların konumlarıdır:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
Uygulama dosyaları artık yerinde. Ancak, Nginx'e içeriği sunmasını söylememiz gerekiyor. Yeni bir sanal ana bilgisayar yapılandırma dosyası oluşturun:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Nginx üzerinde çalışan bir Laravel uygulaması için önerilen ayarların bir örneği aşağıdadır:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
Yeni sanal ana bilgisayar yapılandırma dosyasını etkinleştirme zamanı. Şuraya bir sembolik bağlantı oluşturun: sites-enabled dizini:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Aşağıdaki Nginx komutu, yapılandırma dosyalarını sözdizimi hatalarına karşı test edecektir:
|
1 |
$ sudo nginx -t |
Ardından, Nginx'i yeniden yükleyin:
|
1 |
$ sudo systemctl reload nginx |
Uygulama artık alan adı veya IP adresi kullanılarak erişilebilir olmalıdır (şu direktif tarafından tanımlandığı gibi: server_name direktifi):
Step 6 – Customizing the Main Page
Laravel uygulaması yapılandırıldığına göre artık üzerinde çalışmaya başlayabiliriz. Gösterim amacıyla, veritabanı tablosundaki örnek verileri sergileyen örnek bir sayfa oluşturma zamanı geldi: places. İlk olarak, ana rota dosyasını bir metin düzenleyicide açın:
|
1 |
$ nano routes/web.php |
Dosya varsayılan olarak bazı içerikler barındıracaktır. Burada rotalar, statik yöntem kullanılarak tanımlanır (Route::get). Bağımsız değişken olarak bir path ve bir callback function alır.
Kodu aşağıdakilerle değiştirin:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
Dosyayı kaydedin ve düzenleyiciyi kapatın. Ardından, veritabanı sorgu sonuçlarını kullanıcıya sunmak için düzeni oluşturacağız. Şurada yeni bir dosya oluşturun: resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
Aşağıdaki kodda, değerine bağlı olarak iki yer listesi oluşturduk: visited ve togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>Seyahat Listesi</title> </head> <body> <h1>Seyahat Yapılacaklar Listem</h1> <h2>Gezilecek Yerler</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Ziyaret Edilen Yerler</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Dosyayı kaydedin ve düzenleyiciyi kapatın. Şimdi web uygulaması sayfasına tekrar erişin:
İşte bu kadar! Artık içerikler için MySQL veritabanını kullanan işlevsel bir Laravel uygulamamız var.
Son Düşünceler
Bu öğreticide, Ubuntu 20.04 sunucusunda çalışan LEMP yığını üzerinde bir Laravel uygulamasının nasıl kurulacağını gösterdik. Ayrıca, veritabanı içeriğini sorgulamak ve sonuçları özel bir görünümde görüntülemek için varsayılan rotanın nasıl özelleştirileceğini de gösterdik. Laravel hakkında daha fazla bilgi için şu konulardaki resmi belgeleri inceleyin: views, routes ve veritabanı desteği.
Bu öğreticideki kurulum bağımsız bir sanal makine üzerinde gerçekleştirilmiştir. Ancak, dilerseniz Laravel'i Docker üzerindeki LEMP yığınlarında dağıtabilirsiniz.
Keyifli Kodlamalar!









Yorumlar
Henüz yorum yapılmamış. İlk siz olun.