Geceli gündüzlü yap-yık denemelerin sonucunda düşündüğümden de basit şekilde çözdüm. Çözümü sizinle de paylaşıyorum.

Öncelikle twig için neden ayrı simge tanımlamak istiyorum. Çünkü 3 tane dosya tarayıcısını aynı anda kullanıyorum! Ubuntu ile gelen nautilus/files çok sık şekilde donup cevap veremediği oluyor. Henüz sebebini çözemedim. Bunu telafi etmek için flatpak ile kurulmuş gecelik nautilus var ve onun da yavaş çalışması sebebiyle KDE dosya yöneticisi olan Dolphin var. Üç farklı dosya yöneticisi, 3 farklı simge ile sonuçlanıyordu. Bu duruma kendi çapımda bir son vermek istedim.

Öncelikli olarak şu iki makaleyi denedim:

* https://askubuntu.com/questions/52138/how-do-i-change-the-icon-for-a-particular-file-type
* https://elementaryos.stackexchange.com/questions/3995/how-can-i-change-the-icon-for-a-specific-file-type

İki makaleden de elde ettiğim sonuç, malesef bazı simgelerin seçtiğim simge şeklinde görünürken, bazılarının aynı kalmasıydı. Bir şeyler yanlıştı ve nedir bilmiyordum.

Sonra twig eklentisinin geçtiği tüm dosyaları arattım. Şu dosya ile karşılaştım.

/usr/local/share/mime/packages/freedesktop.org.xml

Bu dosyada zaten Twig tanınan bir eklenti olarak tanımlanmıştı ve üstteki 2 makaledeki yeniden uzantı tanımlama ile çakışıyordu.

Geçici olarak olayı kullandığım simge temasında (breeze) twig için yeni simge oluşturarak çözdüm. Lakin bu çözüm tema değiştirdiğim zaman

sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/breeze/mimetypes/32/text-x-twig.svg
sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/breeze/mimetypes/64/text-x-twig.svg
sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/breeze/mimetypes/22/text-x-twig.svg
sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/breeze/mimetypes/16/text-x-twig.svg
sudo gtk-update-icon-cache /usr/share/icons/breeze/

Bir simge de Adwaita için atayalım. Fallback amaçlı.

sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/Adwaita/scalable/mimetypes/text-x-twig.svg
sudo gtk-update-icon-cache /usr/share/icons/Adwaita/

Son defa hicolor içine de bir tane atayalım. Breeze içindeki silinirse bu kullanılabiliyor ve nautilus’u öldürelim.

sudo cp /usr/share/icons/breeze/mimetypes/32/text-css.svg /usr/share/icons/hicolor/scalable/mimetypes/text-x-twig.svg
sudo gtk-update-icon-cache /usr/share/icons/hicolor/
killall nautilus

Nautilus yeniden başlatıldığınde ekteki gibi bir görüntü oluştu bende. Sonuçta özel bir simgesi olmasa da twig artık silik beyaz değil.

Yine de kullandığınız temaya göre simgeyi oralara da çoğaltmanız gerekebilir. Mesela yaru teması yeni simgeyi bende görmedi.

WebP yeni bir format olduğu için olmalı ki Linux altında bile çalışmak bazen çok zor olabiliyor.

Daha da darlayan ise bu formatı nautilus üstünde küçük resim olarak gösterebilmek. Çok takla attım, lakin neyi nerede çözdüğümü de unuttum. Şimdi sırf bu yazıyı yazabilmek için tüm WebP desteğini kaldırıp, yeniden başlıyorum. Kıymetini bilin.

Baştan belirtelim, resim formatı olduğu için doğal olarak GIMP bu formatı da destekliyor ve açabiliyor, değiştirebiliyor, kaydedebiliyor. Lakin 300 resmi tek tek GIMP ile açıp kontrol etmek çok saçma bir çaba. Hem de bunu küçük resim (thumbnail) ortada yokken yapmak çok daha zor.

İlk önce GNOME/Ubuntu ortamındaki sorunu çözelim. Korktuğunuz kadar zor değil, sadece bir PPA ekliyoruz ve küçük bir kurulum yapıyoruz. Tedbir amaçlı en son dosyalar uygulamasını yani nautilus’u kapatıyoruz.


sudo add-apt-repository ppa:krifa75/eog-ordissimo
sudo apt update && sudo apt install webp-pixbuf-loader
nautilus -q

Şimdi aynı dosyalara yeniden bakalım.

Her şey üstünkörü güzel görünüyor. Peki Webp resme tıklayınca ne oluyor? Bende olan şey GIMP açıldı! Beklentim tabii ki de GNOME ortamının öntanımlı uygulaması olan EOG’un açılmasıydı. Kimi durumda Google Chrome kuruluysa, o bile açılabiliyor. Can sıkıcı değil mi? Gıcık olan bir değer konu da WebP üstüne sağ tıklayıp birlikte aç dediğimizde EOG listelenmiyor. Neyse ki onun da bir çözümü var. Tabii ki yine terminale dadanıyoruz.

Gedit varsa Gedit ile, yoksa nano ile şu dosyayı açıyoruz. Başka editörler de muhtemelen açar, lakin bende Kate yüklü ve açmıyor!

sudo gedit /usr/share/applications/defaults.list
veya
sudo nano /usr/share/applications/defaults.list

Bu dosyanın içinde şu değeri arıyoruz (image/webp) ve karşısındaki uygulamayı aşağıdaki şekilde düzenliyoruz.

image/webp=org.gnome.eog.desktop

Artık EOG ile WebP biçimini ilişkilendirdik. Açması gerekiyor. Webp resmin üstüne tıklıyoruz. Bakalım ne olacak. Yine GIMP açıldı!

Neyi unuttuk! Tabii ki eog uygulaması bende kurulu değil. Sırf bu makaleyi yazabilmek için kaldırmıştım. Yeniden kuruyoruz.

sudo apt-get install eog

Yeniden resme tıkladık, bu sefer sonunda EOG açıldı!

Elleriniz dert görmesin.

Bu makale, aşağıdaki 2 makaleden derlenmiştir.

* https://fostips.com/enable-thumbnails-webp-ubuntu-fedora/
* https://libre-software.net/change-the-default-application-linux-mint-ubuntu/

Küçücük bir web sitesiyiz ama türlü türlü dertlerimiz var. kitaphaber.com.tr sitemizin en önemli baş ağrıtan varlığı tabii ki kodları değil, kodları git ile sürüm takibi yapıyoruz ve bitbucket.org üstünde yedekliyoruz.

Veritabaın derseniz, onu da mysqldump erimişimiz olmadığı için şu araç ile çözüp, cron ile ilişkilendirdik ve yedek aldık!

https://github.com/ifsnop/mysqldump-php

Peki bu yedekler ne olacak, elbette bir yere indirmek gerekiyor. Linux kullanıcısı olduğum için LFTP diye bir küçük programcık ile bunu da çözdüm.


#!/bin/bash
lftp -c "open ftp://KULLANICI@ALANADI.COM:RAPOLA@IPADRESI; \
set ssl:check-hostname no; \
mirror --parallel=10 --only-missing \
HEDEFDIZIN DOSYANINYEDEKLENECEGIYERELDIZIN";
exit;

Sitemizin en çok baş ağrıtan ikinci varlığı resimleri. Evet her içerik için jpg ve webp formatında en az 2 resim tutuyoruz. Bunun üstüne manşet resimleri, yazıların içine eklenen resimler, yazar profil resimleri, derken kitaplar sayfamız var kitapların kapakları vs yani liste uzuyor.

Onu da LFTP ile çözdük.


#!/bin/bash
lftp -c "open ftp://KULLANICI@ALANADI.COM:RAPOLA@IPADRESI; \
set ssl:check-hostname no; \
mirror --parallel=1 --no-perms --only-missing --only-newer --scan-all-first \
HEDEFDIZIN DOSYANINYEDEKLENECEGIYERELDIZIN";
exit;

Geriye bunları cron ile otomotize etmek kaldı. Lakin benim bilgisayar daima açık olmadığı için bu işi elle her gün kendim yapmayı tercih ediyorum.

Şimdilik bu kadar. Sağlıcakla kalın.

Ş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