Özellikle sürekli gelişen Laravel, Symfony gibi frameworklerle çalışırken doğru Virtual Host yapılandırmaları çok önemli.
Girizgahı okumak istemiyorsanız buradan direkt kurulum işlemlerine atlayabilirsiniz.
Versiyonlar arasında geçiş için basit bir switch işlemi birçok farklı sürümle çalışırken ciddi faydalar sağlayacak. Her ne kadar sunucu ortamını simüle eden docker ile çalışmak uyumluluk sorunlarını en aza indirgese de hareket kabiliyetini zayıflattığı bir gerçek. Çok fazla kısa süreli projelerle ilgilenen kişiler için bu bir zorluk yaratacaktır. Docker konfigürasyonları ile çok fazla zaman harcamak ve docker çöplüğüne dönüşen bilgisayarınızda php ağırlıklı çalışmanın daha kolay yöntemi bir LAMP yığını olabilir.
Önce yeni başlayanlar için kısaca LAMP'ın ne olduğundan bahsedelim
LAMP yığını, Linux, Apache, MySQL ve PHP gibi önemli açılımları içeren bir web sunucusudur. Bu açılım, web sunucusunun çalışması için gerekli olan işletim sistemi, web sunucusu, veritabanı ve programlama dili gibi temel unsurları kapsamaktadır. Linux, işletim sistemi olarak kullanılır ve çok sayıda uygulamayı çalıştırmak için güçlü bir çekirdek ve geniş bir kullanıcı topluluğu sunar.
Apache, web sunucusu olarak kullanılır ve HTTP isteklerini yönetmek için tasarlanmıştır. MySQL, veritabanı olarak kullanılır ve verileri saklamak ve yönetmek için kullanılır. PHP, programlama dili olarak kullanılır ve web uygulamalarının dinamik olarak oluşturulmasını sağlar.
LAMP yığınının en büyük avantajlarından biri, ücretsiz ve açık kaynak kodlu olmasıdır. Bu, kullanıcıların ücretsiz olarak kurulum, yapılandırma ve bakım gibi işlemleri gerçekleştirmelerine olanak tanır. Ayrıca, bu yığın Linux, Apache, MySQL ve PHP gibi popüler ve meşhur araçları içermektedir ve bu nedenle, çok sayıda web uygulamasının geliştirilmesi ve yönetilmesi kolaydır. Bu yüzden özellikle küçük ve orta ölçekli işletmeler için idealdir.
APACHE2 Kurulumu
Önce Ubuntu depolarımızı güncelleyelim ve apache kurulumunu başlatalım. Farklı distrolar kullananlar bu tip kodları kendi distrosuna göre uyarlayabilir.
Örneğin Fedora için : dnf check-update && dnf upgrade -y
gibi.
sudo apt-get update && apt-get upgrade -y
sudo apt install apache2
Şimdi UFW ayarlarını yapalım ve Apache için 80 portunun çıkışına izin verelim.
UFW, Ubuntu işletim sistemi için kurulumu ve kullanımı kolay bir güvenlik duvarı aracıdır. UFW, Uncomplicated Firewall olarak adlandırılmaktadır. Duvar, bir ağın giriş ve çıkış trafiğini kontrol etmek için kullanılır. (?)
sudo ufw app list
Burada bize kurulum seçenekleri görünüyor. Apache sadece 80 portuna izin verir, Apache Full 80 ve 443 portlarına izin verir, Apache Secure ise sadece 443 portuna izin verir. Kısaca 80 portu şifrelenmemiş olan http trafiğini, 443 ise TLS/SSL ile şifrelenmiş https trafinğini ifade eder.
Buradan https ile çalışma gereksinimiz olma ihtimali yüksek olacağı için Apache Full seçiyoruz;
sudo ufw allow in "Apache Full"
İşlem tamamlandığında bilgisayarınız için "ben" anlamına gelen ip'den yani http://127.0.0.1
adresinden Default Apache sayfasına erişim sağladığınızı görmelisiniz. Buraya kadar sorun yoksa devam edebiliriz.
MYSQL Kurulumu
Mysql Server paketini depodan kuralım
sudo apt install mysql-server
Şimdi mysql server için bir şifre belirleyelim.
Aşağıdaki kodlar ile parola validasyonu aktifse deaktif ediyoruz.
Ardından mysql kullanıcıları listelenecek. Burada root'un şifre alanının boş olduğunu göreceksiniz.
sudo mysql
UNINSTALL COMPONENT "file://component_validate_password";
SELECT user,authentication_string,plugin,host FROM mysql.user;
Şimdi bunu istediğimiz şifre ile değiştirelim. your_password
yazan kısımda basit bir şifre yazabilirsiniz. Localinizde olacağı için spesifik bir şifreye gerek yok;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
exit
PHP Kurulumu
PHP son sürümü apache modu ve mysql pakedi ile kuralım;
sudo apt install php libapache2-mod-php php-mysql
Buradaki sürümü not alın örn.: php8.2
Şimdi bunu manuel kurmuş gibi göstermemiz gerekecek çünkü eski php sürümlerini destekleyen projeler için geçiş yapmamız gerekecek.
sudo apt install php8.2
Eski PHP sürümlerini indirebilmek için ondrej deposunu kullanacağız;
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php5.6 && sudo apt install php7.4 && sudo apt install php7.1 -y
Genellikle üstteki üç php sürümü eski sürümleri test edebilmeniz için yeterli olacaktır. Daha fazlasına ihtiyacınız olursa php7.0 & php7.2 && php7.3 sürümlerini de indirebilirsiniz.
İhtiyaç duyabileceğiniz php paketlerini yükleyelim;
sudo apt install php8.2-common php-bz2 php-curl php-gd php-imagick php-intl php-json php-json-schema php-log php-mbstring php-memcache php-memcached php-mime-type php-mongodb php-mysql php-net-socket php-net-whois php-parser php-readline php-redis php-soap php-tokenizer php-yaml php-zip php8.2-bcmath php8.2-bz2 php8.2-common php8.2-curl php8.2-gd php8.2-xml php8.2-zip php8.2-xmlrpc php8.2-cli libphp8.2-embed php8.2-fpm php8.2-cgi php8.2-phpdbg libapache2-mod-php php-mysql php8.2-mbstring -y
Buradaki 8.2 sürümünü bir dosyada CTRL+H
ile 7.4 ile değiştitirseniz ilgili versiyonun paketlerini de eklemiş olursunuz.
Daha fazla paket yüklemek için şuradan paket isimlerini listeleyip seçebilirsiniz;
apt search php- | less
Şimdi genel ayarları yapalım;
sudo nano /etc/apache2/mods-enabled/dir.conf
# change to : index.php index.html ..
Dosyayı açın ve index.html'in hemen önüne index.php ekleyin.
Ardından .htacces dosyaları ve çokbaytlı karakter desteği için aşağıdaki kodu çalıştırın;
sudo a2enmod rewrite && phpenmod mbstring
Htaccess için birkaç işlem daha yapmamız gerekiyor. Aşağıdaki komutla apache2.conf dosyamızı açalım;
sudo nano /etc/apache2/apache2.conf
AllowOverride ayarını All olarak değiştirelim;
<Directory /var/www/>
Options Indexes FollowSymLinks
# AllowOverride None
AllowOverride All
Require all granted
</Directory>
Sanal Konak (Virtual Host) Oluşturalım
Diyelim ki ugurakcil.com
domaininiz var. Aşağıda your_domain
yazan kısımları bu durumda ugurakcil
olarak değiştirmelisiniz;
sudo mkdir /var/www/your_domain
Klasörlerin (ve alt klasörlerinin) sahiplik durumlarını ayarla;
sudo chown -R $USER:$USER /var/www/your_domain
Klasörler (ve alt klasörlerin) erişim sınırlamalarını değiştir;
sudo chmod -R 755 /var/www/your_domain
Virtual Host dosyasını tanımla;
sudo nano /etc/apache2/sites-available/your_domain.my.conf
Açtığınız dosyaya your_domain'leri değiştirip aşağıdakini konfigürasyonları ekleyein;
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain.my
ServerAlias www.your_domain.my
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ardından konfigürasyonları apache'ye dahil edelim;
sudo a2ensite your_domain.my.conf
Herhangi bir sözdizimi hatası yapıp yapmadığınızı kontrol etmek için sudo apache2ctl configtest
kullanabilirsiniz. Syntax: OK
yazıyorsa endişe edecek birşey yok. Ancak bir uyarı mesajı göreceksiniz;
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Bu sorundan kurtulmak için;
sudo echo "ServerName 127.0.0.1" >> /etc/apache2/apache2.conf
Tabii ki websitemiz adresimizin 127.0.0.1
'e gitmesi için /etc/hosts
dosyamızı da düzenlememiz gerekiyor;
sudo nano /etc/hosts
ile dosyayı açtıktan sonra en alta 127.0.0.1 your_domain.my
yeni satır olarak eklenebilir.
Ya da direkt aşağıdaki komutla hosts dosyasına yazdırabilirsiniz;
echo "127.0.0.1 your_domain.my" >> /etc/hosts
systemctl restart apache2
Şimdi domaini yönlendirdiğiniz dizine bir index.php
oluşturarak your_domain.my
adresinizi tarayıcıdan test edin.
PHPMyAdmin Kurulumu
sudo apt install gettext
sudo apt install phpmyadmin php-mbstring -y
Kurulum sırasında çıkan ekranlarda kullanıcı adı kısmına root ve şifre kısmına mysql için daha önce belirlediğiniz şifreyi girebilirsiniz. Parola hatası alırsanız retry seçeneği ile tekrar işlemleri yapın ve kontrol edin. Bunun dışında kalan tüm kısımlar için evet seçenekleri ve ilk seçenekleri seçip ilerleyebilirsiniz.
Aktif kullandığınız dil için dil yapılandırmasına ihtiyaç duyabilirsiniz. Örnek olarak Türkçe için aşağıdaki komut ortam dil desteğini sağlayacaktır;
locale-gen tr_TR.UTF-8
PHPMyAdmin konfigürasyonlarını apache'ye kısayol oluşturalım
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl restart apaache2
şu an tarayıcınızdan 127.0.0.1/phpmyadmin
yazarak phpmyadmin'e erişebilmelisiniz
PHP Version Değiştirmek
PHP versiyonunu değiştirmek için aşağıdaki kodları uyarlayıp çalıştırabilirsiniz.
Örneğin PHP 5.6'yı aktif etmek için;
sudo update-alternatives --set php /usr/bin/php5.6
sudo 2dismod php8.2
sudo a2enmod php5.6
sudo service apache2 restart
Eğer PHP 8.2'e tekrar dönmek isterseniz,
sudo update-alternatives --set php /usr/bin/php8.2
sudo 2dismod php5.6
sudo a2enmod php8.2
sudo service apache2 restart