UBUNTU ‘DA WEB GELİŞTİRME ORTAMININ HAZIRLANMASI

Merhaba, web geliştirme üzerine çeşitli eğitim videoları çekmeye karar verdiğimi birkaç gün önce Instagram hesabımdan duyurmuştum. Bu eğitim videolarında ben Ubuntu 20.04 sürümü yüklü olan bilgisayarımda geliştirme yapacağım için, eğitimleri takip edecek olanların da aynı sistem özelliklerine sahip olmalarının faydalı olabileceğini düşünüyorum. Öncelikle hem bir tanıtım hem de kurulum için yapmanız gerekenleri içeren bu makale ile serüvenimize başlayalım istedim. Ubuntu’da geliştirici ortamının hazırlanması başlığı ile yayınladığım bu makale de öğreneceklerimiz ;
1- Laravel Nedir?
2- Neden Ubuntu ?
3- Neler Yapacağız?
4- Kurulum Komutları
Laravel Nedir?
Daha önce web geliştirme ile uğraşanlar ve en az bir web programlama dili bilenler Laravel’i mutlaka biliyordur zaten. Normal şartlarda hangi web programlama dilini kullanırsanız kullanın bir projeyi ayağa kaldırmak için yazmanız gereken çok fazla sayıda kod satırı vardır. Örneğin sitemizin url yapısını oluşturmak için bile pek çok class ve method tanımlaması yaparız. Geçen süreçte web programlama dilleri ile standart diller arasındaki farklar yavaş yavaş ortadan kalkmaya başladı. Birkaç yıl önceki PHP tanımı ile bugünkü PHP tanımı bile farklı bir hal almış durumda. Bunun sebebi web programlama dillerinin de NYP ( Nesne yönelimli programlama ) konseptine dönüş yapmış olmalarıdır. Bu yolda atılan adımlar sonrası ortaya çıkan fırsatlardan biri de bugün Framework adını verdiğimiz yapıların yaygınlaşmasıdır. Laravel’de bu Frameworklerin en gelişmiş ve en popüleridir. Kurulumundan itibaren ihtiyaç duyduğunuz tüm temel paketleri beraberinde getirirken, bize kullanımı, geliştirmesi ve genişletmesi kolay bir ortam sunar.
Projenize dahil etmek istediğiniz harici paketleri composer yardımı ile terminalden yazacağınız tek satırlık kod ile projeye dahil edebilir ve birkaç ayardan sonra kullanmaya başlayabilirsiniz. Bununla beraber sunduğu değişik yapılar ile yine terminal üzerinden vereceğiniz komutlarla sisteminizi daha işlevsel yapabilir, daha hızlı kodlayabilir ve projenizi daha hızlı hayata geçirebilirsiniz.
Burada derslere başlamadan önce bilmenizi istediğim birşey var. Bu eğitim setlerinde sadece sırası geldiğinde teorik bilgi verirken hemen akabinde pratik olarak da gösteriyor olacağım. Yani önce teorik bilgi ile kafanızı şişirip, bozulan konsantrasyon ile öğrenme kapasitenizi sınırlandırmamak için elimden geleni yapacağım.
Neden Ubuntu?
Php bir programlama dilidir ve kullandığınız donanımdan, işletim sistemine ve ram miktarına göre her sistemde farklı bir cevap alma olasılığınız vardır. Örneğin windows üzerinde herhangi bir sorun yaşamadığınız bir web yazılımını linux bir sunucuya yüklediğinizde sorunlarla karşılaşmaya başlarsınız. Bunun sebebi işletim sisteminin yorumlama tarzı ile alakalıdır. Bugün web hosting satın alırken zaten büyük çoğunluğumuz linux sunucu tercih ediyoruz. Linux sistem kaynaklarını daha verimli kullanmamıza olanak tanıyan, açık kaynak bir işletim sistemidir. Ubuntu da belki de kullanıcı deneyimi olarak en gelişmiş sürümüdür demek yanlış olmaz.
Eğer donanım olarak ciddi bir yatırımınız yoksa ve evinizdeki eski laptopunuzdan bile geliştirme yapmak istiyorsanız Ubuntu kesinlikle düşünmeniz gereken bir tercih olacaktır. Windows gibi gerekli gereksiz birçok dosyayı arkaplanda çalıştırarak sistemi meşgul etmediği gibi daha hızlı yanıt süreleri ve daha fazla hakimiyet kurmanızı sağlar. Bir de komut satırından komut girerek bir uygulama yükleyebilir, kurabilir ve çalıştırabilir olmak da harika bir deneyimdir.
Neler Yapacağız?
Video çekimlerine henüz başlamadım. Daha doğrusu tabiri caizse henüz müfredatı yazmadım 🙂 Şaka bir yana herşeyi planlı programlı yürütmek başarmanın en önemli ön şartlarındandır. Bu nedenle planlamayı yapıp kısa sürede harekete geçmeyi planlıyorum. Peki ilk eğitim setinde ne yapacağız?
Video dersleri paylaşmaya başladığımda yine bu sitede hem frontend hem de backend için kullanacağımız hazır temaları indirebileceksiniz. Sonrasında ise sıfırdan kurumsal bir web sitesini beraber yapıyor olacağız. Sitenin hangi bölümlerden oluşacağına gelirsek; 1- Anasayfa 2- Hakkımızda 3- Referanslar 4-İletişim 5- Blog ve şu an bilmediğim ama geliştirilebilir farklı şeyler…
Backend tarafında ise temel veritabanı işlemlerinin dışında, yedekleme, analytics, görsel optimizasyonu, güvenlik ve diğer işlemleri de projede öğrenmiş olacağız.
Ben şimdiden çok heyecanlıyım. Kalabalık bir kitle olmasa da, bir insanın bile kendini geliştireceği bir ortam sağlayabilirsem ne mutlu bana.
Kurulum Komutları
Şu an yeni kurulmuş bir ubuntu işletim sistemi ile başbaşa olduğunuzu farzediyorum. Bu noktadan sonra yapmamız gereken sadece aşağıdaki komutları sırası ile terminal (ctrl+alt+t) ekranınıza yazmanızdır.
sudo apt update && sudo apt upgrade
PHP 7.4 FPM KURULUMU :
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get install software-properties-common
$ sudo apt update
$ sudo apt install php7.4-fpm php7.4-common php7.4-zip php7.4-curl php7.4-xml php7.4-xmlrpc php7.4-json php7.4-mysql php7.4-pdo php7.4-gd php7.4-imagick php7.4-ldap php7.4-imap php7.4-mbstring php7.4-intl php7.4-cli php7.4-tidy php7.4-bcmath php7.4-opcache phpunit
Yukarıdaki komutları girdiğinizde php 7.4 sürümü ve ihtiyacınız olan modülleri kurulmuş olacaktır. Komutları girerken başlarında dolar işareti olmamasına özen gösterin 🙂
Kurulum bittiğinde php.ini dosyasında yapmamız gereken bazı ayarlar var. Bu ayarların bazıları kurulumda otomatik gelse de kontrol ederek düzeltmekte fayda var.
sudo nano /etc/php/7.4/fpm/php.ini
bu komut ile php.ini dosyamızı açıyoruz ve CTRL+W ile dosyada aşağıdaki her satırı tek tek bulup düzenliyoruz. Olması gereken ayarlar şu şekilde :
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = Europe/Istanbul
Ayarları da bitirdiysek sıra php7.4-fpm’i yeniden başlatmak ve kurulumun sorunsuz bittiğini doğrulamak. Bunun için sırasıyla :
sudo systemctl restart php7.4-fpm
ve kurulumu doğrulamak için de :
php -v komutunu girip php sürümümüzü kontrol ediyoruz.
NGINX Kurulumu
Eğer bir web sunucusundan performans bekliyorsanız bunun için NGINX ‘i tercih etmelisiniz. Apache’ye göre daha hafif ve esnek bir yapıda olan Nginx geliştirme ortamı için de biçilmiş kaftandır. Kurulumu da oldukça basittir. Aşağıdaki komutları girerek kurulumu hızlıca bitirebilirsiniz.
sudo apt-get remove apache2*
sudo apt install nginx
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
sudo systemctl status nginx.service
Composer Kurulumu
İster standart web programlama dilleri kullanarak proje geliştirin, isterseniz de laravel gibi bir framework kullanın Composer’ın hayatınızı çok kolaylaştıracağına emin olabilirsiniz. O nedenle kuruluma başlayalım 🙂
sudo apt install -y curl
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
MYSQL kurulumu
Laravel pek çok veritabanı tipini desteklemektedir. Mysql ve Redis bunların en yaygınıdır. Mysql kullanımı kolay ve yaygın olan olduğundan biz de sistemimizde Mysql kullanıyor olacağız. Redis ya da diğer veritabanı tiplerini öğrenmek isterseniz, youtube ve udemy gibi platformlarda yerli ve yabancı pek çok kaynak bulabilirsiniz.
sudo apt install -y mysql-server
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ŞİFRENİZ';
PHPMYADMIN kurulumu
Mysql veritabanını komut satırından da yönetebilirsiniz. Normalde veritabanı oluşturmak ve acil durumlar haricinde bir arabirime ihtiyaç duymayacağız ama yine de sisteminizde bulunmasında fayda var. Ben projelerimi /home/kullaniciadiniz/websites klasörü içinde bulundurmayı uygun buluyorum. Hem sistemin yetkilendirme sorunları ile daha az uğraşmak hem de her an kolay ulaşılabilir olmalarını sağlamak benim için önemli. Siz de benimle aynı fikirdeyseniz benzer bir yol izleyebilirsiniz. Phpmyadmin’i sitesinden indirip kurabileceğiniz gibi composer ile komut girerek de kurabilirsiniz.
cd /home/kullaniciadi
mkdir websites
cd websites
composer create-project phpmyadmin/phpmyadmin
işte bu kadar basit 🙂
Laravel Installer Kurulumu
Proje oluştururken iki tip komut ile bunu gerçekleştirebilirsiniz. Bunlardan biri composer’a vereceğiniz yukarıdakine benzer bir komutken diğeri Laravel’in bize sunduğu daha basit bir yapıdır. Bu basit yapıyı kullanmak için yapılması gereken bir ön ayar bulunuyor.
Composer ile proje oluşturmak :
composer create-project laravel/laravel projeadi --prefer-dist
Laravel installer’ı kurmak için girilmesi gereken komut :
composer global require laravel/installer
Yukarıdaki komutu girdiğinizde laravel installer sisteminize kurulacaktır ama kullanabilmek için yapılması gereken ince bir ayar daha var. Bunun için /home dizinindeyken ;
sudo nano .bashrc
açılan dosyanın en alt satırına inin ve aşağıdaki satırlardan sisteminize uygun olanı düzenleyip oraya yapıştırın.
Ubuntu 18.04
export PATH="$PATH:$HOME/.config/composer/vendor/bin"
Ubuntu 19.10
export PATH="~/.config/composer/vendor/bin:$PATH"
Ubuntu 20.04
export PATH="$PATH:$HOME/.config/composer/vendor/bin"
İlgili satırı ekledikten sonra kaydederek çıkın ve aşağıdaki komutu girerek sistemin dosyayı tekrar incelemesini sağlayın.
source ~/.bashrc
VHOST Ayarları
Sırasıyla; PHP, NGINX, MySQL, COMPOSER, PHPMYADMIN ve Laravel Installer‘ı kurduk. Bundan sonra artık nginx web sunucusuna projelerimizi tanıtarak çalışır hale getirmeyi öğrenmek kalıyor.
Yeni bir proje oluşturduğumuzda, projeye tarayıcı ekranından kolayca ulaşabilmek için vhost tanımlamak işimizi oldukça kolaylaştıracaktır. Bu nedenle yapmamız gerekenler ise ;
cd /etc/nginx/sites-available
sudo nano projeadi.uzantisi.conf
komutları ile projenin nginx ayarlarının yer alacağı boş bir dosya oluşturup açıyoruz. Daha sonra aşağıdaki kodları kendimize göre düzenleyerek kaydedeceğiz…
server { server_name projeadi.uzantisi; listen 80; root /home/kullaniciadi/websites/projedizini/public; index index.php index.html; location / { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^ /index.php last; } location ~ .php { fastcgi_index index.php; fastcgi_split_path_info ^(.+.php)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Yukarıdaki komutları düzenleyerek dosyaya yapıştırın ve kaydederek kapatın. Sonrasında ise;
cd ../sites-enabled
komutu ile ilgili dizine girerek aşağıdaki komutu yazın.
sudo ln -s ../sites-available/birazoncekidosyaadi.uzantisi.conf birazoncekidosyaadi.uzantisi.conf
bu komutu girdiğinizde oluşturduğumuz konfigurasyon dosyasının sembolik linki ( kısa yolu ) bu dizine eklenecek ve nginx’i yeniden başlattığımızda bu dosyayı da okumasını istemiş olacağız.
Bu işlem de bittiğine göre artık asıl vhost ayarımızı yapma zamanı gelmiş demektir.
sudo nano /etc/hosts
Açılan dosyada göreceğiniz üzere windows ile benzer bir satır eklememiz gerekiyor. Mavcut satırların altına
127.0.0.1 konfigurasyondabelirlediginizhost.uzanti
Örneğin :
127.0.0.1
Bu adımı da hallettiğimize göre şimdi daha önce oluşturduğumuz websites klasörü içerisine gidip yeni bir proje oluşturalım.
laravel new projeadi
Proje oluştuktan sonra lütfen dizine girerek yetkilendirmeyi yapın. Dosya yetkilerini aşağıdaki komutlarla verebilirsiniz. Sunucu tarafında bu şekilde yapmamanız güvenliğiniz için önemli. Normal şartlarda dizinler 755 dosyalar 644 olmalı…
sudo chown -R www-data:www-data bootstrap/cache storage sudo chmod -R 777 bootstrap/cache storage
Kurulum ve ayarlar şimdilik bu kadar. Aklınıza takılan ya da zorlandığınız bir konu olursa yorum kısmından iletebilirsiniz.
Şimdilik hepinize sevgiler.