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
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.
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.
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
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ı
-
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'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.
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 %*"
Sonrasında VSCode'da ayarları JSON olarak açarak, aşağıdaki tanımlamayı ekliyoruz.
"php.validate.executablePath": "c:\\ProgramData\\WSL\\php.bat",