Ubuntu 22.04 Altında Apache Kurulumu ve Veriyolu Değişimi

Merhaba,

Ne kadar uğraşsam da her kurulum sonrası Apache ve MariaDB’yi 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. Ayrıca Timeshift ile arada root dizinini daha önceki ayarlara getirdiğim de oluyor. Bu sebeple / -> Root dizini altında kıymetli verileri tutmuyorum.

/c dizininde web siteleriyle ilgili yaptığım işleri tutarken
/d dizininde diğer film, müzik, video, youtube’a yüklediğim işlerimi yani home dizine atamadığım ne varsa burada tutuyorum.

/c/www -> localhost yani PHP dosyalarını tuttuğum yolum iken
/c/www-db -> veritabanı dosyalarının tutulduğu yol oluyor.

Bu sebeple her kurulumdan sonra dosya Apache ve MariaDB veri yollarını değiştirmem gerekiyor. İlaveten kullandığım PHP sürümü 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, mbstring, mysql, xml kütüphanelerini de etkinleştiriyorum.

Kurulumun ilk aşamasında PHP sürüm desteğini genişletmek için PPA eklemek gerekiyor. Böylece ihtiyacımız olan PHP sürümünü kullandığımıza emin olabiliyoruz.

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

Sonrasında paket kurulumuna geçiyorum. Temel dosyaları kuruyorum.

sudo apt-get install curl apache2 

PHP 8.0 sürümünü kullanacaksam şunları kuruyorum

sudo apt install php-common libapache2-mod-php8.0 php8.0-cli php8.0-common php8.0-opcache php8.0-readline  
sudo apt install php8.0-curl php8.0-gd php8.0-imagick php8.0-intl php8.0-mbstring 
sudo apt install php8.0-mcrypt php8.0-mysql php8.0-xdebug php8.0-xml

PHP 8.1 sürümünü kullanacaksam şunları kuruyorum

sudo apt install php-common libapache2-mod-php8.1 php8.1-cli php8.1-common php8.1-opcache php8.1-readline  
sudo apt install php8.1-curl php8.1-gd php8.1-imagick php8.1-intl php8.1-mbstring 
sudo apt install php8.1-mcrypt php8.1-mysql php8.1-xdebug php8.1-xml

Şu paketi de kurduğum oluyormuş fakat neden kurduğumu veya bağımlı olup olmadığımdan emin değilim.

sudo apt install php-json

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 8.0 için ini dosyamızın yolu şöyle:

sudo gedit /etc/php/8.0/apache2/php.ini

PHP 8.1 için ise ini dosyamızın yolu şöyle:

sudo gedit /etc/php/8.1/apache2/php.ini

Ben genel olarak şu değişiklikleri yapıyorum. Bir kısmı tamamen tercih ve ayar meselesi.

;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING

;display_errors = Off
display_errors = On

;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 /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.

Peki iyi hoş da yukardaki iki PHP sürümünü de kurduktan sonra aralarında nasıl geçiş yapacağız?

İlk yöntem şu küçük komut ile çıkan ekrandan seçim yapmak ve sonrasında sunucuyu yeniden başlatmak.

sudo update-alternatives --config php
sudo service apache2 restart

Ondan daha karışık olan yöntem ise elle açıp kapatmak.

PHP 8.0 sürümünden PHP 8.1 sürümüne geçiş yapalım.

sudo a2dismod php8.0
sudo a2enmod php8.1
sudo service apache2 restart

PHP 8.1 sürümünden PHP 8.0 sürümüne geçiş yapalım.

sudo a2dismod php8.1
sudo a2enmod php8.0
sudo service apache2 restart

Aslında site bazında da ayarlamanın bir yolu olması lazım ama, kaynakçadaki digitalocean makalesini hiç test etmedim.

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
* https://stackoverflow.com/questions/42619312/switch-php-versions-on-commandline-ubuntu-16-04
* https://ostechnix.com/how-to-switch-between-multiple-php-versions-in-ubuntu/
* https://www.digitalocean.com/community/tutorials/how-to-run-multiple-php-versions-on-one-server-using-apache-and-php-fpm-on-ubuntu-18-04

1 comment

  1. 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.

Leave a Reply

Your email address will not be published.