(Yazıyı Ubuntu 20.04’e göre yeniden güncelledim ve memcached bağımlılığını kaldırdı)
Ne kadar uğraşsam da her kurulum sonrası Apache ve MySQL’i yeniden, kendi çalışma mantığıma göre yeniden kurmam gerekiyor.
Kendi çalışma mantığım derken; ben Ubuntu’yu kurarken
/ -> root /home /c /d
diye ayrı bölümler oluşturup kuruyorum. / -> Root dizini her kurulumda formatlanırken /home /c ve /d dizinlerine hiç dokunmuyorum.
/c dizininde web siteleriyle ilgili yaptığım işleri tutarken
/d dizininde diğer film, müzik, abur cubur dosyaları tutuyorum.
/c/www -> localhost yolum iken
/c/www-db -> veritabanı dosyalarının tutulduğu yol oluyor.
Bu sebeple her kurulumdan sonra dosya yollarını değiştirmem gerekiyor. İlaveten ek olarak kullandığım özellikler ve kütüphaneler de ayrı bir baş ağrısı.
İşte sırf bu yüzden kendime bu dökümanı hazırladım 🙂
Kurulumda xdebug, curl, gd, intl, json, mysql, xml kütüphanelerini de aktif ediyorum.
Kuruluma geçmeden önce şahsen PPA eklemek taraftarıyım. Böylece en son sürümü kullandığımıza emin olabiliyoruz
sudo add-apt-repository ppa:ondrej/php sudo apt-get update
Sonrasında paket kurulumuna geçiyorum.
sudo apt-get install apache2 php libapache2-mod-php php-cli php-cgi php-xdebug php-curl sudo apt-get install php-gd php-intl php-json php-mysql php-xml php-mbstring
Paketler kurulunca ssl, rewrite vs aktif etmek lazım
sudo a2enmod ssl sudo a2enmod rewrite sudo a2enmod suexec sudo a2enmod include
Sonrasında hata gösterimini aktif etmek için editör ile (ben gedit kullanıyorum) ini dosyamızı açıyoruz. php 7 kullandığımız için ini dosyamızın yolu şöyle:
sudo gedit /etc/php/7.4/apache2/php.ini
ilgili dosya boş ise bir sürüm üste bakabilirsiniz.
İki değişiklik yapıyoruz; error_reporting arıyoruz ve aşağıdaki gibi düzenliyoruz
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING ;display_errors = Off display_errors = On
Bir kaç php değerine daha dokunmakta fayda görüyorum. Şu değerleri de aşağıdaki gibi düzenliyorum.
;short_open_tag = Off short_open_tag = On ;memory_limit = 128M memory_limit = 512M ;post_max_size = 8M post_max_size = 200M ;upload_max_filesize = 2M upload_max_filesize = 200M ;max_file_uploads = 20 max_file_uploads = 100 ;allow_url_fopen = On allow_url_fopen = Off
Çoğu paylaşımlı sunucuda bu değer (allow_url_fopen) kapalı oluyor. Bu sebeple curl kullanmak zorunda kalıyorum ve local ayarlarımı da buna uyumlu tutuyorum.
Buraya kadar olan ayarların etki etmesi için apache’yi yeniden başlatıyoruz.
sudo service apache2 restart
Karşımıza Apache2 default sayfası çıktıysa apache çalışıyor demektir.
Şimdi Apache yolumuzu değiştirelim.
sudo gedit /etc/apache2/apache2.conf
aşağıdaki kısmı buluyoruz ve yorum haline getiriyoruz
< Directory /> Options FollowSymLinks AllowOverride None Require all denied < / Directory> < Directory /usr/share> AllowOverride None Require all granted < / Directory> < Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted < / Directory>
(Directory yazarkenki boşlukları düzenlemeniz gerecektir)
sonrasında şu direktifi ekliyoruz
DocumentRoot /c/www/ # bu kısım supheli, test edip bakacağım #< Directory /> # Options FollowSymLinks # AllowOverride all # Directory> < Directory /c/www/> Options FollowSymLinks Options +indexes AllowOverride all Order allow,deny allow from all < / Directory>
Sonrasında virtualhost dosyasındaki documentRoot değerini düzenleyelim
sudo gedit /etc/apache2/sites-available/000-default.conf
deyip dosyayı açtıktan sonra DocumentRoot değerini şu şekilde düzenleyelim
#DocumentRoot /var/www/html DocumentRoot /c/www
Sonrasında sunucuyu tekrar başlatalım
sudo service apache2 restart
http://localhost/ adresine tıkladığımızda dosyalarımız artık görünüyorsa büyük bir deveye hendek atlattık demektir.
Şimdi bir test dosyası oluşturup phpinfo() bakabiliriz.
Kaynakça:
* https://forum.ubuntu-tr.net/index.php?topic=24150.0
* http://askubuntu.com/questions/760907/upgrade-to-16-04-php7-not-working-in-browser
* https://help.ubuntu.com/16.04/serverguide/php.html
PHP-8 sürümünü kullanmaya geçtiğimiz için ilgili komut satırındaki php ile başlayan paketlerin php8 olarak düzenlenmesi gerekiyor. Lakin yazıyı zaten Ubuntu 22.04 için güncelleyeceğimiz için şimdilik dokunmuyorum.