Kategoriler
PHP

Ubuntuda PHP Geliştirme Ortamı

sudo -i

komutu ile “Süper Kullanıcı” yetkilerini alabilirsiniz. Böylece her komut başına “sudo” komutunu vermeniz gerekmeyecektir. Parola isteyecek parolanızı girip Enter’a bastığınızda işlemlere devam edebilir. (Parolanızı yazarken terminal bir tepki vermeyecektir. Siz şifrenizi yazın.)


Apache2 Kurulumu

Öncelikle makinemizin yerel IP adresinin (varsayılan olarak) 80 portunu dinleyerek HTTP isteklerine cevap vermesi için Apache2 kurulumu ile başlayalım.

apt install apache2 -y

Kurulum tamamlandıktan sonra internet tarayıcınıza http://localhost ya da http://127.0.0.1 yazarak Apache2 kurulumunun çalıştığını doğrulayabiliriniz.


PHP Kurulumu

Sonrasında PHP kurulumunu yapabiliriz. PHP’nin Linux repolarına yüklenmiş güncel sürümünü kurmak için aşağıdaki komutu yürütün.

apt install php -y

Ardından MySQL sunucusu ile PHP’nin iletişim kurmasını sağlaması için gerekli olan paketi kuralım;

apt install php-mysql -y

MySQL Kurulumu

Şimdi sırada MySQL sunucunun kurulması var.

apt install mysql-server -y

Kurulum işlemi tamamlandıktan sonra gerekli güvenlik ayarlamalarını yapabilmek için;

mysql_secure_installation

komutunu verin.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Yerel bilgisayarıma kurulum yaptığım için kullanıcıların şifrelerinde bir seviye kriteri aramama gerek olmadığını düşünüyorum. Bu yüzden bu soruya bir şey yazmadan Enter’a basarak geçiyorum.

Ardından MySQL sunucusunda root kullanıcısının parolasının ne olacağını belirtmemi istiyor. Bu bilgisayarınız değil MySQL sunucusunun root kullanıcısıdır. Unutmayacağınız bir şifre belirleyebilirsiniz.

Şifrenizi yazıp Enter’a bastığınızda şifrenizi onaylamanızı isteyecektir. Aynı şifreyi tekrar yazıp Enter’a basarak sonraki adıma geçebiliriz.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No)

Anonim kullanıcıları kaldırıp kaldırmama konusunda bir karar vermenizi istiyor. “y” tuşuna basıp devam edeceğim. Böylece benim için anonim kullanıcıları kaldıracaktır.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely?

Bu soruya da “y” diyerek Enter’a basacağım. Bu bir yerel makine olduğu için uzaktan erişilmesini istemiyorum.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? 

MySQL kurulumu sırasında oluşturulan test veritabanını kaldırmak istiyormusun diye soruyor. Buna da “y” diyerek Enterlıyorum.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now?

Ayrıcalık tabloları geri yüklensin mi sorusuna da “y” diyerek devam ediyorum. Ve işlem tamamlanmış oluyor.


Apache2 Dizinini Değiştirme

Apache2 varsayılan olarak /var/www/html/ dizininde çalışır. Ancak bu benim kullanımımı zorlaştırıyor. Bu yüzden Home dizinim içinde www isimli bir klasör oluşturup, Apache2’nin bu dizinden çalışmasını sağlayacağım.

Siz bu adımı gerçekleştirmek zorunda değilsiniz. Bir sonraki adımdan devam edebilirsiniz.

Önce Dosya Yöneticisini açın ve Home dizininizde www adında bir klasör oluşturun.

cd /etc/apache2

komutu ile Terminalden Apache2’nin kurulum dizinine giriyoruz. Burada ilk düzenleme yapacağımız dosya “apache2.conf” isimli dosya bu yüzden düzenleme yapmadan önce bu dosyanın bir yedeğini oluşturalım.

cp apache2.conf apache2.conf.bak

Artık “apache.conf” dosyasını düzenleyebilirim.

nano apache2.conf

Burada aşağıya doğru inin ve aşağıdaki satırı bulun.

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

değiştirin;

<Directory /home/safak/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

DİKKAT : Burada özellikle dikkatinizi çekmek istiyorum. Dizin kısmındaki (/home/safak/www/) “safak” ibaresi benim kullanıcı adımdır. Sizin Home dizin yolunuz farklı olacaktır. Genellikle /home/{USERNAME} şeklinde olur.

Dosyayı kaydedip (CTRL + O), kapatabiliriz (CTRL + X).

Şimdi sırada bir diğer yapılandırma dosyasındaki dizin yolunu değiştirmek var.

cd /etc/apache2/sites-enabled

Burada değiştireceğimiz dosyanın adı ise 000-default.conf
Değiştirme işlemine geçmeden önce bu dosyanın da bir yedeğini alalım.

cp 000-default.conf 000-default.conf.bak

Buradaki DocumentRoot tanımı bulup aşağıdakine benzer şekilde düzeniyorum;

DocumentRoot /home/safak/www

Dosyayı kaydedip (CTRL + O), kapatıyoruz (CTRL + X).

Apache2 yeniden başlatmadan önce yapmamız gereken son bir işlem daha var. Apache2 şuanda bizim dosyalarımıza erişebiliyor olmasına karşın, dosyalarda bir yetki sahibi değil. Haliyle kodlarınızı yazmaya çalıştığınızda ya da en basitinden bir WordPress kurmak istediğinizde Permission (yetki) hataları alacaksınız. Bu durumu önlemek için aşağıdaki komut ile “www” klasörümüz için “www-data” grubunu yetkilendiriyoruz.

chgrp -R www-data /home/safak/www

Apache2 sunucusunu yeniden başlatmak gerekiyor.

service apache2 restart

PHPMyAdmin Kurulumu

MySQL sunucumuz mevcut ancak bu sunucuyu konsol üzerinden komutlar vererek yönetmek son derece zahmetli ve zaman alan bir süreçtir. Bu yüzden en çok tercih edilen ve MySQL komutlarını bir arayüz üzerinde tıklamalar yaparak kolayca vermemizi sağlayan PHPMyAdmin yazılımını da kurup çalışır duruma getirmemiz gerekiyor.

apt install phpmyadmin -y

Kurulum sırasında bize hangi sunucu yazılımı üzerinde kurulum yapacağını soruyor. Biz Apache2 kullandığımız için bunu işaretliyoruz. (İşaretleme işlemi Space / Boşluk tuşu ile yapılıyor.) TAB tuşuyla Tamam üzerine gelip Enter‘a basabiliriz.

Ardından paket yapılandırma seçeneği geliyor;
Evet diyerek devam ediyoruz.

Ardından bizden MySQL root kullanıcısının parolasını istiyor. Bu MySQL server kurulumu sırasında belirlediğiniz root kullanıcı şifresidir.

Şifrenizi girdikten sonra TAB tuşu ile Tamam‘a gelip Enter‘a basıp onaylayabilirsiniz.

Parolayı onaylamamızı isteyen ikinci bir ekran gelecektir.

Bu adımı da geçtikten sonra PHPMyAdmin paketi kurulmuş olacak ancak henüz yapmamız gerekenler bitmedi. 🙂

MySQL artık PHPMyAdmin’inin elini kolunu sallayarak root kullanıcısına giriş yapmasına izin vermiyor. Bu yüzden bizde PHPMyAdmin’i kullanabileceğimiz süper kullanıcı yetkilerine sahip bir MySQL kullanıcısı oluşturacağız ve PHPMyAdmin’i o kullanıcı üzerinden kullanacağız.

mysql -p -u root

Komutu ile root olarak MySQL’e bağlantı yapmak istediğimizi söylüyoruz. Sizden MySQL kurulumu sırasında root için belirlediğiniz parolayı isteyecektir. Parolayı doğru verdiğinizde komut satırının değiştiğini göreceksiniz. Satır başında “mysql>” ibaresi bulunur.

Ben MySQL sunucum üzerinde myadmin isimli bir kullanıcı oluşturup, bu kullanıcı ile PHPMyAdmin kullanıyorum. Siz farklı bir kullanıcı adı belirleyebilirsiniz.

Komut sonunda tek tırnak içesinde kırmızı ile vurguladığım PAROLAM ibaresi myadmin kullanıcısının parolası olacaktır. Orada kendinize uygun yine unutmayacağınız bir parola belirtin.

CREATE USER 'myadmin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PAROLAM';

“Query OK, 0 rows affected” şeklinde bir çıktı aldıysanız işlem başarılı demektir. Şimdi sıra yeni oluşturduğumuz myadmin kullanıcısına süper kullanıcı yetkisi vermeye geldi.

GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost';

Bu sorgu da “Query OK, 0 rows affected” şeklinde çıktı verdiyse artık PHPMyAdmini bu kullanıcı üzerinden kullanabiliriz.

exit

komutunu verip MySQL komut panelini sonlandırıyoruz. PHPMyAdmin arayüzüne http://localhost/phpmyadmin adresinden ulaşabileceğinizi de ilk kez kullanacaklar için belirtmiş olayım.


Buraya kadar aslında PHP kodlarını çalıştırıp kullanabileceğimiz yapıyı oluşturduk. Artık PHP betiklerini çalıştırabilir durumdasınız. Şayet amacınız PHP betikleri sadece çalıştırmak değil aynı zamanda geliştirme ve hata ayıklama işlemleri yapmaksa uygulamak zorunda olduğunuz bir adım daha var. 🙂


XDebug Kurulumu

Öncelikle sistemimizde kurulu olan PHP’nin bilgilerine ihtiyacımız var. Terminalde

php -i

komutu ile bunu öğrenebiliriz. Komut bize yüzlerce satırlık bir çıktı verecektir. Bu çıktının tümünü Mouse yardımıyla seçip kopyalayın.

https://xdebug.org/wizard adresine gidin. Kopyaladığınız metni yapıştırabileceğiniz bir alan var. Yapıştırın ve altındaki “Analyze my phpinfo() output” butonuna tıklayın.

Bizim için uygun Xdebug sürümünü bir indirme bağlantısını basit bir kurulum rehberi ile bize verecektir. “Instructions” altındaki adımları uyguladığınızda sorunsuz şekilde XDebug kurulumu tamamlanmış olmalıdır. Kurulumu tamamladıktan sonra Apache2 servisini yeniden başlatmanız gerektiğini unutmayın.

service apache2 restart

Örneğin benim için verdiği kurulum yönergeleri bu şekilde.

Burada bana verdiği kurulum yönergelerini takip ederek kurulum işlemi adım adım açıklamaya çalışacağım. Yönergeler sizde farklı olabilir ve farklı işlemler yapmanız istenebilir.

  1. xdebug-3.0.4.tgz isimli dosyayı indirmemi istiyor. Adından XDebug 3.0.4 sürümü olduğunu anlayabilirim.
  2. XDebug kurmak ve kullanmak için 3 pakete ihtiyacım olduğunu ve XDebug kurulumuna başlamadan önce bunları kurmam gerektiğini söylüyor. Burada 3 paketi de tek komut ile vermiş ancak bu durum bazen sorunlara neden olabiliyor. O yüzden aşağıdaki komutları tek tek vererek bu üç paketi kurucam. (Hala “sudo -i” ile girdiğim terminalde olduğumu da hatırlatayım)
    apt install php-dev -y
    apt install autoconf -y
    apt install automake -y
    Bazı paketler sizde zaten var olabilir. Bu durumda terminal kurulum işlemini atlayarak zaten paketin kurulu olduğunu bildirecektir. Kurulum işlemleri tamamlandıktan sonra 3. adıma geçebiliriz.
  3. Benden indirdiğim tgz uzantılı dosyayı ayıklamamı yani çıkarmamı istemiş. Bu işlem için terminali önce xdebug-3.0.4.tgz dosyasının indirildiği dizine götürmem lazım. Bende Home dizinimde İndirilenler altında bulunuyor. Muhtemelen sizde de aynı dizindedir. (Burada home dizininin kullanıcı adınıza göre değişeceğini unutmayın. Benim Home dizinimin yolu /home/safak şeklinde bu sizde /home/{UserName} şekilde olacaktır. {UserName} kullanıcı adınızı ifade eder.)
    cd /home/safak/İndirilenler
    komutu ile indirme dizinime girmiş oldum.
    tar -xvzf xdebug-3.0.4.tgz
    ile dosyamın çıkarma (ayıklama) işlemini gerçekleştiriyorum.
  4. Terminalde dosyanın çıkarıldığı dizine girmemizi istiyor.
    cd xdebug-3.0.4
  5. Sonrasında phpize komutunu vermemi istiyor. Aşağıdaki gibi bir çıktı döndürüyor.
  6. Terminalde ./configure komutunu yürütmemi istiyor.
  7. Sonrasında make komutunu yürütmemizi istiyor. Bu komutun yürütülmesi biraz zaman alabiliyor. Komutun yürütme işlemi bittiğinde sonraki adıma geçebilirim.
  8. xdebug.so dosyasını /usr/lib/php/{PHP_Api_Version} dizinine atmamı istiyor. Aşağıdaki komut ile bu işlemi yapıyoruz.
    cp modules/xdebug.so /usr/lib/php/20190902
  9. Sonrasında php.ini yapılandırma dosyasında attığım bu xdebug.so dosyasını göstermemi istiyor. Benim php.ini dosyamın yolu “/etc/php/7.4/cli/php.ini” bu yüzden aşağıdaki komut ile php.ini dosyamı açıyorum.
    nano /etc/php/7.4/cli/php.ini
    ve dosyanın en alt satırına inerek aşağıdaki kodları ekliyorum.
[XDebug]
zend_extension = /usr/lib/php/20190902/xdebug.so
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000

Dosyayı kaydedip (CTRL + O), kapatıyorum (CTRL + X).

/etc/php/7.4/cli/php.ini dosyası için yaptığım şeyin aynısını /etc/php/7.4/apache2/php.ini dosyasında da yapıyorum.

Apache2 servisini service apache2 restart komutu ile yeniden başlattığımda XDebug artık aktif ve kullanıma hazır olması gerekiyor.


XDebug Kurulumunu Doğrulama

phpinfo çıktısında xdebug terimi bulunuyorsa kurulum başarılı şekilde gerçekleşmiş demektir. Bunu içerisinde phpinfo() fonksiyonu çalışan bir php dosyası oluşturup tarayıcıdan o dosyaya erişerek görebilirsiniz. Ve ya terminal üzerinde php -i çıktısıyla da aynı işlemi gerçekleştirebilirsiniz.

php -i | grep 'xdebug'

Bir şey çıktılamazsa bir yerde bir hata olduğu anlamına gelir.

Bir Cevap Yazın