Categories
Açık Kaynak İşletim Sistemleri PHP Programlama Yazılım

Ubuntu’da PHP Geliştirme Ortamı Kurmak

Ubuntu üzerinde PHP geliştirme yapmak isteyen her geliştirici gibi Google’da arama yaptığımda sonuçlara şaşırdım. Güncelliğini yitiren yarım yamalak pek çok yazı var ama derli toplu güncel bir yazı bulamadım. Üstelik sadece Türkçe aramalarda değil İngilizce aramlarda da durum aynı. Bu nedenle bu yazıyı hem gelecek kurulumlarımda kendime hemde aynı sorunu yaşayan diğer geliştiriciler için yazmaya karar verdim.

Alet Çantamız

  • Apache : Özetle kullanıcıdan gelen istekleri yönetmeye yarayan web sunucu yazılımı.
  • MySQL : Açık kaynak kodlu ilişkisel veritabanı.
  • Homebrew : Çapraz platform çalışabilen paket yöneticisi. Biz bu yazıda mkcert adlı aracı yüklemek için kullanacağız.
  • mkcert : Ayarlama yapmadan tarayıcılarca tanınan yerel SSL sertifikaları yapmamıza yaran araç.
  • Composer : PHP paketleri için paket yönetimi yazılımı.

Haydi kuruluma başlayalım…

Herşeyden önce yazılım depolarımızı güncelleyelim ki yanlışlıkla güncel olmayan yazılımları indirmeyelim.

sudo apt update

Apache kuralım. Komutun sonundaki ‘-y’ parametresiyle değişiklikleri kabul ettiğimizi söylüyoruz. Böylelikle elimiz devamlı klavyeye gitmiyor. Sonraki komutlarda da bunu kullanacağız.

sudo apt install apache2 -y

MySQL’i kuralım ve güvenliğini sağlamak için güvenli kurulum komutunu çalıştıralım. İkinci komut yerel geliştirme makinemiz için (Production’da kesinlikle yapılmalı!) isteğe bağlı olsa da varsayılan olarak gelen gereksiz kullanıcı ve tabloları sildiği için yapmanızı öneririm.

sudo apt install mysql-server -y
sudo mysql_secure_installation

Birinci Adım

Karşımıza gelen bu ekranda şifrelerimizin gücünün kontrol edilmesini kabul edip, etmediğimizi soruyor. Y tuşu ile kabul edelim.

İkinci Adım

İkinci adımda ise kullanmak istediğimiz şifrenin (aslında ileride bu şifreyle bir işimiz olmayacak) hangi güçlük seviyesinde olmasını isteidğimizi soruyor. Zaten yerel bilgisayarımız olduğundan 0 ve enter tuşuna basıp, en düşük güç seviyesini seçiyoruz. Bu seçenek 8 karakterli herhangi bir şifreyi kabul edecektir. ‘New Password’ ve ‘Re-enter new password’ kısımlarında şifrelerimiz gözükmeyecektir. Endişelenmeyin, gözükmese de şifrenizi girebiliyorsunuz. Buralara 12345678 şeklinde basit bir yazıp, enter tuşuna basın. Ardından şifrenizin gücünü bize söylecektir. Yukarıdaki örnekte 100 üzerinden 50 puan verdi. Verdiğimiz şifre ile devam edip etmek istemediğimizi soracaktır. ‘y’ ardından enter tuşuna basıp devam ediyoruz.

Üçüncü Adım

Varsayılan olarak gelen anonymous kullanıcını silmek isteyip, istemediğimizi soruyor. Önce ‘y’ ardından enter tuşuna basıp devam edelim.

Dördüncü Adım

MySQL sunucusuna, bilgisayarınız dışında başka bir yerden bağlanabilmesini engellemek isteyip, istemediğinizi soruyor. ‘y’ ardından enter tuşuna basıp, engelleyelim.

Beşinci Adım

Varsayılan olarak gelen test veritabanını silmek isteyip, istemediğimizi soruyor. Önce ‘y’ ardından enter tuşuna basıp devam edelim.

Altıncı Adım

Yaptığımız değişikliklerin hemen etkin olması için ayrıcalık tablosunu güncelleyim mi diye soruyor. Önce ‘y’ ardından enter tuşuna basıp devam edelim.

Şimdi eğer komut satırından şifreyle giriş yapmaya çalıştığımızda giremediğinizi göreceksiniz. Bunun nedeni ise MySQL’in varsayılan güvenlik eklentisi olarak Unix Socketi kullanması. Daha basit bir anlatımla anlatacak olursak; yani yönetici yetkisi olan kullanıcıların girişine izin veriyor.

Sudo komutu ile MySQL komutunu çalıştıralım.

sudo mysql

Aşağıdaki kod root kullanıcısının güvenlik eklentisini unix_socket yerine caching_sha2_password olarak ayarlayıp şifresini 12345678 olarak değiştirecektir. Bu işlem ardından sudo komutu ile giriş yapamadığınızı göreceksiniz.

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '12345678';

Şimdi PHP yorumlayıcımızı ve sık kullanılan eklentilerini kuralım.
sudo apt install php libapache2-mod-php php-mysql php-cli php-mbstring php-gd php-dom php-zip php-fpm -y

Eklentileri şu şekilde açıklayabiliriz;

  • libapache2-mod : PHP ile Apache arasındaki iletişimi sağlar.
  • php-cli : php kodlarının komut satırında çalıştırılmasını sağlar. Composer için gereklidir.
  • php-mysql : MySQL işlemleri için gereklidir.
  • php-mbstring : Latin alfabesi dışındaki karakterlerin PHP’de ifade edilebilmesini sağlar.
  • php-gd : Görselleri düzenlemek için GD kütüphanesi desteğini getirir.
  • php-dom : XML işlemleri için gereklidir.
  • php-zip : Zip arşivi desteği için gereklidir.
  • php-fpm : PHP işlemlerinin yönetim aracıdır.

Eğer bir yazılımcıysanız git versiyon kontrol sistemine mutlaka işiniz düşecektir. Onu da yükleyelim.

sudo apt install git -y

Bundan sonraki kısımlar isteğe bağlı. Eğer yerel sertifikalarınızı ve sitelerinizi kurmayı teker teker elle yapacaksanız, bundan sonraki adımları uygulamanıza gerek yok. Ben uğraşmak istemediğimden bu işlemleri otomatikleştirdim.

Sıra Homebrew kurulumunda. Homebrew bir yazılım paketi yöneticisidir. Aslında Homebrew kurulumunu yapmamız tamamen mkcert aracının yüklenmesinin homebrew üzerinden yapılmasıdır. Homebrew yüklemek için öncelikle curl’u yüklememiz gerekiyor.

sudo apt install curl

Ardından Homebrew kurulum komutunu çalıştıralım.

sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Kurulum sonunda karşımıza şöyle bir ekran gelecektir. Buradaki kırmızı alandaki kodlara dikkat ederseniz kullanıcı adınızı içerdiği göreceksiniz. Buradaki komutlar size özel olduğundan buradaki kodları yazı olarak, bu yazıma eklemeyeceğim. Komutların herbirini teker teker kopyalayarak kendi uçbiriminizde (Terminal) çalıştırın. Son komutta gcc’i yüklemenizi öneriyor. Yüklemeyin.

Artık mkcert yüklemeye başlayabiliriz. Bunun için öncelikle libnss3-tools paketini yükleyelim.
sudo apt install libnss3-tools

Şimdi brew paket yöneticisi ile mkcert’i yükleyelim.
brew install mkcert

mkcert‘i yükledikten sonra mkcertin yerel kök sertifiklarını tarayıcılara yükleyelim. Bunun için daha önce en azından bir kez tarayıcıların açılması gerekiyor. Aksi takdirde hata alabiliriz. Böyle bir şey olursa tarayıcıları açıp kapattıktan sonra komutu tekrar çalıştırın.
mkcert -install

Komut hatasız çalıştıysa tarayıcınızı yeniden başlatın. Sonra buradaki bash kodunu masaüstünüz indirin. Daha sonra sırasıyla aşağıdaki kodları uçbiriminizde çalıştırın.
cd ~/Desktop

Bash kodumuza çalıştırma izini ekleyelim.
sudo chmod +x sitesetup.sh

Şimdi çalıştıralım. Çalışması için sudo ile root yetkisi vermemiz gerekiyor.
sudo ./sitesetup.sh

İlk önce kullanıcı adımızı soracaktır. Eğer kendi kullanıcı adınızı bilmiyorsanız başka bir uçbirim açıp ‘whoami’ komutunu çalıştırdıktan sonra size kullanıcı adınızı söyleyecektir. Sonra site adresimizi soracaktır. Site uzantınız yerel test ortamı için .test olacaktır. Örneğin deneme.test için yalnızca deneme yazmamız gerekiyor. Sonraki adımda MySQL root kullanıcımızın şifresini soruyor. Buraya kendi şifrenizi girdirten sonra otomatik olarak sitenizin yerel ssl sertifikasını ve veritabanınızı oluşturacaktır. Tarayıcılarınız açıksa yeninden başlatın.

İşlem bittikten sonra siteniz için `/home/{kullanıcı adınız}/development/websites/{siteadınız}` dizini yaratıldı. Buraya içinde phpinfo() fonksiyonu index.php adında bir php dosyası koyalım. Çalışıyorsa işlemi başarıyla gerçekleştirmişsiniz demektir.

Otomatik oluşturulan vhost frameworksüz kullanım içindir. Eğer Laravel gibi bir framework kullanıyorsanız, /etc/apache2/sites-available/$SITE_NAME.conf ve /etc/apache2/sites-available/$siteadınız-ssl.conf dizininizdeki config dosyalarını kullandığınız frameworke göre düzenledikten sonra apache sunucunuzu sudo services apache2 reload ile değişiklikleri apachenin göremesini sağlamanız gerekiyor. Verdiğim ilk dizin http, ikincisi https protokolleri için geçerlidir.

Kodunuza dışarıdan paketler eklemek istediğimizde imdadınıza composer yetişiyor. Composer çalışmak için unzip paketine ihtiyaç duyuyor. Önce onu aradan çıkartalım.
sudo apt install unzip -y

Ardından composer kurulumuna başlayabiliriz. Aşağıdaki kodu teker uçbirminizde çalıştırın. Dikkatlice komutları incelerseniz composer‘ın sitesinden çektiği kurulum dosyasının hash kodunu kontrol ediyor.

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH=curl -sS https://composer.github.io/installer.sig
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Bu komutların ardından ‘Installer verified’ çıktısını alıyorsak sorunsuz bir şekilde composer kurulum dosyası indirilmiş demektir. Fakat şu an composer kurulumu yapılmadı. Kurulum için son olarak şu komutu çalıştıralım.
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.