Linux, cpanel ve cron jobs (görevleri)
Uzun bir aradan sonra tekrar notlarıma birşeyler ekleyebilecek zamanı ve imkanı bulabildim. Imkanı diyorum, çünkü sitelerimin sunucusunu değiştirmem ve birçok sorun yaşamam nedeniyle yazacak blog bulamadım 🙂 Yaşadığım sorunlardan en büyüğü mysql veri tabanı ve Türkçe sorunlarıydı. Bu sorunların ne şekilde aşılacağını daha önce joomla için yazmama rağmen, wordpress ve SMF forum yazılımıyla deneyimim olmamıştı. Bu sistemlerdeki deneyimlerimide önceki notlarıma ekledim ve umarım birilerine faydalı olur.
Yaşadığım sorunlardan bir diğeri ise, yeni site barındırma hizmeti aldığım firmanın, sunduğu kullanıcı arayüzü cpanel deki deneyimsizliğimle ilgili. Mysql veritabanıyla ilgili sekmede, veritabanını silmenin bu kadar basit olabileceğini düşünmemiştim 🙂 sonuçta commodore.gen.tr veritabanını bir anda sili verdim. İşin kötüsü, veritabanı yedeği almakta dikkatli davranmama karşın, birçok siteyi taşıma problemleriyle uğraşırken, veritabanı yedeğini almayı unutmuştum 🙁 Herkes unutabilir… Hatalıyım biliyorum ama, benim yerime belirli aralıklarla veri tabanı yedeğini alacak bir sistem olsa fena olmaz diye düşündüm… Böyle bir sistemin varlığınıda biliyordum, ama o güne kadar nasıl yapacağıma bakmamıştım… İşte Linux Cron görevleri ve cpanel’de nasıl kullanılacağıyla ilgili bilgiler…
Cron jobs, ya da cron görevleri, belirli bir zamanda, Linux’un çalıştırdığı sistem işlevlerinden biridir. Bir başka ifadeyle Linux, verilen periyotlarda sizin tanımladığınız bir programı görevi yerine getirebilir. Mesela her gün saat 24:00’da mysql veritabanımın yedeğini al ve şu klasöre koy, ya da her saat başı veritabanını yedekle… Örnekler çoğaltılabilir… Ama daha önce belirttiğim gibi, benim amacım, veritabanı yedeğini benim yerime alacak bir sistem oluşturmaktı.
cpanel arayüzünde cron jobs sekmesine tıkladığınız zaman (6.satır, 2.sütunda – benim kullandığım sürümde) karşınıza standart ve Advanced olarak iki seçenek çıkmakta. Standart işimizi görecektir. Tıklayarak giriyoruz. Karşımıza aşağıdakigibi bir ekran gelecektir.
Bu arayüzü iki kısma ayırabiliriz. Birinci kısım “command to run” yani işletilecek komut satırı ve diğer kısımda bu işlemin ne zaman ya da ne sıklıkta yapılacağını belirten bölüm.
command to run kısmına mysql veri tabanından bir yedek almayla ilgili komutu aşağıdaki şekilde yazabiliriz.
mysqldump -u<kullanıcıadı> -p<kullanıcışifresi> | gzip > /absolute path/klasoradi/dosyaadi.gz
Kullanıcıadı ve şifresi mysql veritabanındaki kullanıcı adı ve şifrenizdir. gzip, mysql veritabanının sıkıştırılmasını sağlar
> işareti bu işlem sonucunun nereye taşınacağını ifade ediyor. Sunucuda çalışan bir komut olacağı için, sunucu içerisindeki klasör yapısını yani absolute path girmelisiniz. Bu path’i barındırma işlemini yapan firmadan öğrenebilirsiniz. Sonrasi size kalmış…
Örnek vermek gerekirse, kullanıcı adimiz gokhan, sifremiz 1234567 oldugunu varsayalim. Sunucumdaki path’in ise “/home/gokhansonmez/” olduğunu varsayalım. Bu adres sizin ftp yazılımıyla bağlandığınızda hesabınızın kökü yani root’dur. Çoğu zaman public_html klasörü altına dosyalarınızı atarsınız ve sitenize girenler bu klasöre ulaşamazlar. Bu sayede bir güvenlikte sağlanmış olur. Hemen burada yeni bir klasör oluşturmanızı ve dosyaları oraya aktarmanızı öneririm. mesela db_yedek…Uzun lafın kısası…
mysqldump -ugokhan -p1234567 | gzip > /home/gokhansonmez/db_yedek/mysqlyedek.gz
yazmamız yeterli olacaktır. Bu durumda verilen kullanıcı ve şifreyle bağlanılan mysql veritabanındaki tablolar yedeklenir ve db_yedek klasörüne kopyalanır.
Peki bu işlem ne zaman? hangi sıklıkla yapılacak?
Cron görevleri panelinde ikinci kısımda da bunlar belirlenir. Biraz göz gezdirince kendiliğinden ortaya çıkabileceği gibi…
Minute(s), Hour(s), Day(s), Month(s), Weekday(s) yani dakika, saat, gün, ay ve haftagünleri olarak belirlemeniz mümkün.
Minute(s) için 0, Hour(s) 0 -12AM Midnight ve diğerleri için EveryDay, EveryMonth ve EveryWeekday seçmeniz durumunda, veritabanı yedeğiniz her ay, haftanın her günü, saat 24:00’da yedeklenir ve belirttiğiniz klasöre atılır.
Yukardaki sistemde eğer Hour(s) kısmından EveryHour seçerseniz her saat başı veritabanı yedeği alınır. Bu özellikle çok aktif forumlarda olabilir. Örnek olarak ben, Commodore.gen.tr sitesinde her 2 saatte bir yedek alırken, pek güncellenmeyen (şimdilik), bilgisayarmuzesi.com sitesinde günde 1 kere yedek alıyorum.
Tüm bu işlemlerden sonra sayfanın altında yer alan “Save CronTab”tuşuna basarak, belirlediğiniz işlemin cron görevi olarak kayıt edilmesini sağlarsınız. Hayırlı Uğurlu olsun…
Umarım bu bilgiler birilerine faydalı olur ve hayır dualarını alırız…
Makaleniz ve paylaşdıgınız için çok teşekkür ederim 🙂
Kendi alanımda hemen deniyecem…