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 php ve memcached birlikte kuruyorum. Arada xdebug, curl, gd, intl, json, mysql, xml ve memcached kütüphanelerini de aktif ediyorum.
Sürpriz bir şekilde Ubuntu 16.04 php 7 ile geliyor ve muhtemelen benim çok başımı ağrıtacak 🙁
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 php-gd php-intl php-json php-mysql php-xml memcached php-memcached php7.0-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 kate kullanıyorum) ini dosyamızı açıyoruz. php 7 kullandığımız için ini dosyamızın yolu şöyle:
sudo kate /etc/php/7.0/apache2/php.ini
ilgili dosya boş ise bir sürüm üste bakıyoruz
sudo kate /etc/php/7.1/apache2/php.ini
iki 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 kate /etc/apache2/apache2.conf
aşağıdaki kısmı buluyoruz ve yorum haline getiriyoruz
Options FollowSymLinks
AllowOverride None
Require all denied
AllowOverride None
Require all granted
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
sonrasında şu direktifi ekliyoruz
DocumentRoot /c/www/
# bu kısım supheli, test edip bakacağım
#
# Options FollowSymLinks
# AllowOverride all
#
Options FollowSymLinks
Options +indexes
AllowOverride all
Order allow,deny
allow from all
Sonrasında virtualhost dosyasındaki documentRoot değerini düzenleyelim
sudo kate /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