Mehmet Hanoğlu

Mehmet Hanoğlu

Full-Stack Developer

Etiketler


Windows 11 üzerinde, WSL2 - Ubuntu 20.04 için Apache, PHP, Composer, MariaDB (MySQL) kurulumlarını ve konfigürasyonları yapacağız. Bunların yanında VSCode ve WSL2 için birkaç ipucu paylaşacağım. Kurulum ile işlemlere başlıyoruz.

Kurulum

software-properties-common paketini yükleyerek başlıyoruz.

sudo apt install software-properties-common

Sonrasında Apache Server kuruyoruz.

sudo apt-get install apache2

Tüm PHP sürümlerine erişebileceğimiz repo'yu ekliyoruz.

sudo add-apt-repository ppa:ondrej/php
sudo apt update

PHP 7.4 için aşağıdaki paketleri kuruyoruz.. Gerekli paketler varsa sonradan da tamamlayabilirsiniz. Diğer php sürümleri için version numarasını değiştirmeniz yeterli.

sudo apt-get install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-curl php7.4-json php7.4-gd php-memcached php7.4-intl php7.4-mbstring php7.4-xml php7.4-zip

MariaDB (Repoda'ki güncel sürüm 10.3.31) Kurulum dokümanı:How To Install MariaDB on Ubuntu 20.04

sudo apt-get install mariadb-server

Konfigürasyon

MariaDB

MariaDB ayarlamaları için öncelikle servisi başlatıyoruz.

sudo service mysql start
sudo mysql_secure_installation

mariadb-secure-installation-start

Root kullanıcısı MariaDB tarafından çeşitli işlemler için kullanılıyor. Bu nedenle şifre ile giriş yerine unix_socket üzerinden giriş yapılacak şekilde ayarlanmış. Eğer harici bir uygulama ile dışardan erişilmek istenirse sorun çıkartıyor. Tavsiye edilen işlem ise root kullanıcısının özelliklerini değiştirmek değil, benzer yetkilere sahip yeni kullanıcı oluşturmak. Çünkü güncellemeler ile yaptığımız ayarlama silinecektir.

MariaDB konsoluna girerek

mariadb

admin adında şifresi 123456 olan tüm yetkilere sahip bir kullanıcı oluşturuyoruz.

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

Yetkileri yapılandırıyoruz

FLUSH PRIVILEGES;

ve çıkıyoruz.

exit

Localhost üzerinde kullanacağımız uygulamalar için veya dışarıdan bağlantı için root-123456 yerine admin-123456 kullanıcı bilgilerini kullanacağız.

mariadb-connection-ok

Composer

Repo'daki sürüm self-update yapılamadığı için kendi sitesinden güncel sürümü indirip kurmak daha sağlıklı olacaktır.

Download Composer

Veya komut satırında bu işlemi daha kolay bir şekilde yapabiliriz.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

/usr/bin/ veya /usr/local/bin/ Bu işlemi yapmadan önce composer komutunu çalıştırın. Dosyayı hangi dizinde aradığını gösterecektir. Sonrasında o dizine composer adı ile taşıyoruz.

sudo mv composer.phar /usr/bin/composer

composer-2

Apache - VirtualHost oluşturma

Localhostumuzda bir klasörde kurumlum yaptığımız sisteme özel bir domain adresi üzerinden erişmek istersek. VirtualHost tanımı yapmamız gerekiyor. Örneğin /var/www/html/gelistirme/ dizinine bir sistem kurmuş olalım. Bu sisteme de gelistirme.test adresi ile erişmek istersek;

WSL'de yapacağımız işlem:

sudo nano /etc/apache2/sites-available/gelistirme.test.conf

İçerisine yapıştırıyoruz...

Eğer Laravel projesi ise DocumentRoot'a /public eklememiz gerekiyor. Örn: DocumentRoot /var/www/html/gelistirme/public olmalı.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName gelistirme.test
        ServerAlias gelistirme.test
        DocumentRoot /var/www/html/gelistirme
        <Directory />
                AllowOverride All
        </Directory>
        <Directory /var/www/html/gelistirme>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Require all granted
        </Directory>

        ErrorLog /var/log/apache2/gelistirme.test-error.log
        LogLevel error
        CustomLog /var/log/apache2/gelistirme.test-access.log combined
</VirtualHost>

Kaydettikten sonra, siteyi aktif ediyoruz.

sudo a2ensite gelistirme.test

Apache'yi yeniden yüklüyoruz..

service apache2 reload

Tamamdır.

Windows tarafında ise: C:\Windows\System32\Drivers\etc\ dizinindeki hosts dosyasında domain tanımlaması yapmamız gerekiyor.

Her eklediğimiz domain için aşağıdaki gibi iki satır eklememiz gerekiyor.

127.0.0.1 gelistirme.test
::1       gelistirme.test

MariaDB - Veritabanı oluşturma

MariaDB mysqladmin aracı ile birlikte yükleniyor. İçerisinde birçok özellik mevcut. Kurulum sırasında oluşturduğumuz admin-123456 kullanıcısı ile bir veritabanı oluşturma için aşağıdaki komutu kullanıyoruz:

mysqladmin -u admin -p123456 create "veritabani-adi"

Veritabanı silme işlemi için ise create yerine drop yazmamız yeterli olacaktır.

WSL2 - İpuçları

  1. WSL terminalini açtığımızda home dizi ile açık gelmesi için Komutu bu şekilde değiştiriyoruz. İlk parametre olarak ~ ekliyoruz. Bu durumda her seferinde home dizininden başlayacak. Klasörde sağ tıklayıp terminali açsanız bile.

    wsl.exe ~ -d Ubuntu

    wsl-open-home-directory

  2. WSL'deki içinde bulunduğumuz klasöre Windows dosya yöneticisi üzerinden erişmek için aşağıdaki komutu yazıyoruz.

    explorer.exe .

VSCode - PHP

Windows tarafından WSL'deki PHP'yi kullanmak için araştırma yaptığımda şöyle bir yöntem buldum. Kaynak: VSCode Issues @tooy

Böylece Windows'a da PHP kurmadan, WSL'de kurulu olan PHP'yi kullanabileceğiz. php-windows-wsl2

WSL adında bir klasör (istediğiniz isimde olabilir) ve içerisinde php.bat adında bir dosya oluşturdum.

Dosya adresi:

C:\ProgramData\WSL\php.bat

Dosya içeriği ise:

@echo off
c:\Windows\System32\bash.exe -c "php %*"

php-windows-wsl2

Sonrasında VSCode'da ayarları JSON olarak açarak, aşağıdaki tanımlamayı ekliyoruz.

"php.validate.executablePath": "c:\\ProgramData\\WSL\\php.bat",

php-windows-wsl2