Şablon motorları faydalı araçlardır, ah bir de güncellemek gerekmese 🙂

Kullandığım Şablon Motoru / Template Engine adı Twig ve çok meşhur bir motor. Uzun zamandır yeni site yapmıyorum ve doğal olarak günceli takip etmiyordum. Lakin TinyMCE’de orta seviyede 3 açık çıkınca hala yayında kalan ve kendi özel altyapımı kullandığım tek sitemi (http://www.kitaphaber.com.tr) güncelleme durumu hasıl oldu. Güncellerken de madem güncelliyoruz tüm vendor klasöründeki scriptleri sırasıyla güncelleyeyim dedim.

Uzun zamandır web sitesi yapıyorum. Açık kaynak olarak ve başkalarının kullanımına açtığım bu alt yapıdan 2 tane site bulunuyor. Lakin bu iki siteye pek kimsenin ilgisi olmadı. (https://github.com/libreajans/superhaber.tv/ ve https://github.com/libreajans/video.superhaber.tv).

Neyse, konumuza dönersek elde kalan tek aktif siteyi twig 1 sürümünden twig 3 sürümüne geçirdim. Peki bunu nasıl yaptım.

İlk önce Composer kurmak gerekti. Bunu şu sayfadan çözdü: (https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-20-04). Linkte hata yok arkadaşlar, Ubuntu LTS sürümlerini bilgisayarımda kullanıyorum.

Sonra twig indirmek gerekti. Projenin ana klasöründe şu kodu çalıştırdım.

composer require "twig/twig:^3.0"

Sonrasında neleri değiştirmek gerektiğini bulmaktı. Onu da şu sayfadan çözdük (https://twig.symfony.com/doc/3.x/intro.html)

Peki neleri kendi projemde değiştirmek zorunda kaldım. lib.init.php diye tüm dosyaları çağırdığım başlangıç çağrı dosyasında şu değişiklikler yapıldı.

Öcnelikle eski autoloader çağrısını kaldırdım.

Bul:

include SITEPATH.'vendor/Twig/Autoloader.php';

Değiştir:

require_once SITEPATH.'/vendor/autoload.php';

Şu satırı tamamen kaldırdım. Çünkü artık autoloader içinden otomatik hallediliyor.

Twig_Autoloader::register();

Sonrasında tema klasörlerinin yolunu gösterdiğimiz kodu değiştirdik.

Bul:

$loader = new Twig_Loader_Filesystem(SITEPATH.'app/Template/view');

Değiştir:

$loader = new \Twig\Loader\FilesystemLoader(SITEPATH.'app/Template/view');

Sonra template dosyalarının nerede derleneceğini belirttiğimiz cache kodunu değiştirdik.

Bul:

$twig = new Twig_Environment($loader, array('cache' => SITEPATH.'cache/tmp/'));

Değiştir:

$twig = new \Twig\Environment($loader, ['cache' => SITEPATH.'cache/tmp/']);

Bunları yapmak yetmiyor, template control dosyalarını da tek tek değiştirmek gerekti. Örnek olarak bir dosyadaki değişikliği göstereyim.

Bulduğum


$template = $twig->loadTemplate('site_footer.twig');
$footer = $template->render(array('year' => date("Y")));

Değiştirdiğim


$footer = $twig->render('site_footer.twig', ['year' => date("Y")]);

Bu kadar az değişiklikle Twig 1 sürümünden (ki 5 sene önce son sürüm yayınlanmış) yeni twig sürümüne geçiş yapabildim.

En son olarak kod renklendirmenin berbat olması dolayısıyla 2 ekran görüntüsü bırakayım.

Sevgili Ubuntu’mu 20.04 sürümüne güncelledikten sonra fark ettim ki, PHP ile proje geliştirirken Apache VirtualHost seçeneği yerine sürekli Localhost yolu ile yaptığım projelere erişmekteyim.

Lokalimdeki/Yerelimdeki projeye http://localhost/Laravel/BenimYeniProjem şeklinde erişmek yerine http://benimyeniprojem.xyz şeklinde erişmeye ihtiyaç duyunca ne kadar basit olduğunu fark ettim.
Okumaya devam et

sudo apt-get install mariadb-server 

dediğim andan itibaren başıma gelenler.

a) Parola tanımlı değil ve tanımlanması gerekiyor…

sudo pkill -9 mysqld
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-networking & 
mysql -u root
use mysql;
update user set password=PASSWORD("123") where User='root';
update user set plugin='' where User='root';
flush privileges;
\q

Sonra asıl çile başlıyor; data yolunu değiştirmek. Veritabanlarını ayrı bir bölüm olarak bağladığım /c/www-db altında tutmayı tercih ettiğim için, benim için zorunluluk oluyor.

Dönersek, data yolunu nasıl değiştireceğiz!

Önce mysql servisini durduruyoruz.

sudo service mysql stop

Sonra datalarımızı taşıyacağımız hedef klasörü oluşturuyoruz. (Hedef klasör zaten varsa es geçebilirsiniz.) ve veritabanı dosyalarımızı hedef dizine taşıyoruz ve en son hedef dizindeki dosyaları listeliyoruz.

mkdir -p /c/www-db
sudo cp -R /var/lib/mysql/* /c/www-db/
sudo chown -R mysql:mysql /c/www-db
ls -lZ /c/www-db

Şimdi datayolumuzu değiştirmek için conf dosyamızı açabiliriz.

sudo gedit /etc/mysql/mariadb.conf.d/50-server.cnf

datadir değerini /c/www-db olarak değiştiriyoruz. bind-address = 127.0.0.1 önüne # işareti koyup yorum haline getiriyoruz.

Sonra servisi tekrar başlatıyoruz.

sudo pkill -9 mysqld
sudo pkill -9 mysql
sudo service mysql restart

gnome-system-monitor ile açıp mysql’in yeni verdiğimiz data yolunu okuyup okumadığını kontrol etmekte fayda var.

Kaynaklar:
* http://www.liberiangeek.net/2014/10/reset-root-password-mariadb-centos-7/
* http://ubuntuforums.org/showthread.php?t=2275033
* http://stackoverflow.com/questions/26474222/mariadb-10-centos-7-moving-datadir-woes

(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 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


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

* Öncelikle sizi tanıyabilir miyiz?

Ben 2 Mart 1982 İstanbul Kartal’da doğdum. 6 kardeşin en büyüğüyüm. İlkokulu mahallemizde, ortaokulu Kocaeli, Gölcük’te yatılı olarak okudum. 2000 yılında Pendik İHL’den mezun oldum. 2009 yılında uzun bir eğitimin ardından Harran Üniversitesi İlahiyat Fakültesinden mezun oldum. Aslen Giresun ili Espiye ilçesi Avluca köyünden babam, annem ise Ericek köyünden. Yazları dedemin koyunlarına çobanlık yapmak için ilk okuldayken sık sık memlekete gelirdim. Yaylada geçen çocukluğum güzel anılarla doludur. İlahiyat fakültesindeyken yazılım öğrenmeye karar verdim ve web yazılımları konusunda kendimi geliştirdim. Uzun süre kitabevlerinde ve yayınevlerinde çalıştım. Kitap biriktirmeyi seven bir insanım. En son tüm biriktirdiğim kitapları Espiye İmam Hatip Lisesi kütüphanesine bağışladım. Çocukluğumdan beri pilot olmayı istediğim için bir yanım sürekli savunma ve havacılık ile ilgili olmuştur.
Okumaya devam et

ffmpeg -i in.mp4 out.srt komutu ile yapılan eylemdir.

Linux ortamında şöyle çirkin altyazılar görünce elle müdahale etmek kaçınılmaz olur. MP4 dosyasındaki altyazıları srt formatına dönüştürür. Sonrasında altyazılardan font geçen yerleri elle kaldırmanız gerekir.

Linux dünyasında iki büyük ve pek çok küçük yazılım ekosistemleri bulunmaktadır. Bunların başlıcaları GNOME ve GNOME masaüstü uygulamaları ile KDE ve KDE Plasma uygulamalarıdır.

GNOME uygulamalarını gecelik olarak denemek için sağlam bir vakit ayırmak gerekiyor. Lakin KDE uygulamalarını denemek için bu kadar yorulmaya gerek yok. Flatpak ve KDE ekibinin özverili gayretleri sayesinde gecelik sürümleri denemek artık çok kolay.

İlk önce Flatpak kurulumu yapalım. Flatpak pek çok Linux dağıtımı tarafından desteklenen bir kapsayıcı paket (konteyner) sistemi. Bağımlılıkları kendi içinde çözüp, sisteme ek paket bağımlılığı oluşturmamayı ve uygulamaları kum havuzlarına hapsetmeyi hedefliyor.

Ubuntu LTS, yani uzun süre desteklenen sürümü kullanıyorsanız aşağıdaki PPA (kişisel paket arşivini) öncelikli olarak eklemekte yarar var.

sudo add-apt-repository ppa:alexlarsson/flatpak && sudo apt-get update

Sonrasında Flatpak paketini kuruyoruz

sudo apt-get install flatpak

Flatpak doğası gereği sadece bir araçtır ve dağıtık depolara izin verir. Şimdi depolarımızı ekleyelim.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --if-not-exists kdeapps --from https://distribute.kde.org/kdeapps.flatpakrepo

Sonrasında yaygın kullanılan bir paketi Flatpak ile kuralım

flatpak install kdeapps org.kde.okular

Flatpak kurulumun geçerli kullanıcıya özel veya sistem geneline mi yapılmasını istediğinizi soracaktır. İngilizce çıktı muhtemelen aşağıdaki gibi olacaktır.

Looking for matches…

org.kde.okular permissions:
    ipc     wayland     x11     dri     file access [1]     dbus access [2]     tags [3]

    [1] xdg-config/kdeglobals:ro, xdg-run/dconf, ~/.config/dconf:ro
    [2] com.canonical.AppMenu.Registrar
    [3] nightly


        ID                             Arch            Branch          Remote           Download
 1.     org.kde.okular                 x86_64          master          kdeapps          < 28.4 MB
 2.     org.kde.okular.Locale          x86_64          master          kdeapps           < 1.3 MB (partial)

Proceed with these changes to the Default system installation? [Y/n]: 

Y/N (Evet/Hayır) ile kurulumu onaylamanız yeterli olacaktır.

Kurulum sonrasında GNOME kabuğunda uygulama adını aratarak uygulamayı başlatabilirsiniz. Veya komut satırından

flatpak run org.kde.okular

komutunu ile de uygulamayı çalıştırabilirsiniz.

kdeapss deposundaki yazılımları listelemek için

flatpak remote-ls kdeapps

komutunu çalıştırmak da mümkün. İlgili uzak depodaki tüm paketleri listelemesi gereken bu komut, malesef çok yavaş çalıştığı için bir sonuç dönmeyebiliyor.

Kaynakça: https://community.kde.org/Guidelines_and_HOWTOs/Flatpak