Kategori arşivi: İnternet

NGINX’i Reverse Proxy Olarak Kullanmak

Bir önceki yazımda Heroku üzerinde Play! Framework tecrübemden bahsetmiştim. Heroku‘yu çok çok başlangıçta bir projede kullanırken bazı dezavantajları var. Bunlardan en önemlisi sistemden bir süre ücretsiz faydalanarak bir yerlere gelebileceğinizi hayal ederken, ücretsiz verilen tek işlemcinin belli bir süre uygulamanıza erişilmediği zaman idle konuma alınıyor olması. Mesela uygulamanıza 1 saat kimse erişmediyse, 1 saat sonra gelen kişi, uygulamanın baştan çalıştırılmasını beklemek zorunda kalıyor, bu da 15-20 saniye tutabiliyor. Düşününce daha da önemli olan diğer bir konu ise veritabanı kısmı. Heroku’da 10bin satıra kadar PostgreSQL yada 10MB MySQL’i ücretsiz olarak kullanmanız mümkün. Ödeme seçeneklerine gelindiğindeyse Xen yada KVM sanallaştırmasını kullanan VPS’leri tercih etmek toplamda daha ucuza geliyor yine.

Alternatif olarak Heroku’nun da sistemlerini çalıştırdığı Amazon’u direk kendiniz kullanmanız seçeneği var. Birçoğunuzun bildiği üzere Amazon micro instance’larını 1 yıl süreyle ücretsiz olarak kullanmanıza izin veriyor. Facebook uygulaması olarak geliştirdiğimiz TASK’ı şu an Amazon’un sunucularında çalıştırıyorum. Sunucularında diyorum çünkü EC2 üzerinde bir application server çalıştırırken, RDS üzerinde veritabanını ve S3 üzerinde de uygulamaya yüklenen resimleri barındırıyorum.

Konuya başlama amacından biraz fazla uzaklaştık sanırım. Konuya dönersek, Amazon üzerinde kısıtlı olan kaynaklarınızla bütün işi Play! Framework’e yıkarsanız bazı sıkıntılar yaşayabilirsiniz. Yaşadığım en büyük sıkıntıysa Facebook uygulamalarında zorunluluk haline gelen SSL sertifakası işini Play! Framework’e verirseniz, 1.2.5 sürümünde bilinen bir bug olarak zaman zaman exception fırlatabiliyor. Bundan kurtulmanın en kolay yoluysa NGINX’i reverse proxy olarak kullanmak. Eğer sunucunuzda Ubuntu kullanıyorsanız bu işlemi yapmak inanın çok kolay. Repo’dan nginx’in kurulumunu tamamladıktan sonra /etc/nginx/sites-available/default yolundaki dosyada 1-2 düzenleme yapmanız gerekiyor. Bu dosyadaki server { … } etiketlerinin arasındaki location kısmını aşağıdaki gibi düzenlemelisiniz,

location / {
proxy_pass http://127.0.0.1:8080;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Buradaki proxy_pass kısmına sunucunuzdaki app-container’ınızın çalıştığı adresi vermelisiniz. Eğer uygulamanızda SSL kullanıyorsanız aynı ayarlarla bir de 443 portunu dinleyen sunucu tanımlamalısınız, hepsi bu kadar.

NGINX’i reverse proxy olarak kullanarak statik dosyaların cache’lenmesinden de faydalanabilirsiniz. Emin olun sunucunuzdan her megabyte’ına kadar faydalanmanızı sağlayacak bir iyilik yapmış olacaksınız kendinize.

Heroku’da Play! Framework Tecrübesi

Günümüzde PHP sunucusu bulmak artık işten bile sayılmaz, her yerde PHP koşturabilecek çok makul fiyatlarda sunucular bulmanız mümkün. Ama konu Java, Python, Ruby gibi dillere gelince hele bir de farklı framework’lerine gelince her sunucu istekleri karşılayamayabiliyor. Daha doğrusu bu dillerle yazılan uygulamaların başlangıçtaki tüketimi PHP’ye oranla biraz daha masraflı olduğu için bu dillere verilecek sunucularda fazladan satışlar (over-use) mümkün olmuyor. Doğal olarak taban fiyatlarda yüksek oluyor.

Dünyada cloud computing’in gerçek anlamda yaygınlaşmasıyla ekonomik sunucular bulmak mümkünleşti. Hatta bazıları uygunluğu abartarak geliştirme aşamasında ve az miktarda ziyaretçisi olan uygulamalara hizmetlerini ücretsiz sunuyorlar. Bunlardan en önemlisi tabi ki de Amazon.

Amazon üzerinde kendi sunucunuzu yapılandırabiliyorsunuz. Bunun yanında hazır veritabanı sistemleri ve CDN hizmetleri gibi birçok servis yapılandırılmış durumda, size sadece bunları kullanmak kalıyor. Üstelik yeni üyelik açtığınız zaman 1 yıl boyunca bu hizmetlerin hepsinden belli miktarlara kadar ücretsiz yararlanabiliyorsunuz. Şimdi gelelim yazının başlığında geçen Heroku‘ya.

Heroku sunucu yapılandırmalarının tamamını kendi üstüne almış ve scalability denen kavramın sorumluluğunu da kendisi yüklenmiş. Yani bugün tek çekirdek işinizi görürken yarın 3 çekirdek ihtiyacınız olursa bunu sadece 1-2 tık ile çözebiliyorsunuz.  Ücretlendirmesi de kullandığınız işlemci saati üzerinden yapılıyor. Eğer uygulamanızı o anda kullanan yoksa otomatik olarak boştaki işlem gücü kapatılıyor ve sizin fazladan ücret ödemeniz önlenmiş oluyor. Bütün bunların yanında uygulamanızda tek işlem birimi kullandığınız sürece sizden bir bedel talep etmiyorlar.

Deployment konusuna gelirsek, işin o kısmınında çok kolaylaştırıldığını söylemek isterim. Ben Play! Framework uygulamamı deploy ederken hiç sıkıntı yaşamadım desem yalan olmaz. Sitelerinde anlatılan basamakları sırayla uyguladığınızda normal bir git sunucusuna uygulama yükler gibi yüklemiş oluyorsunuz. Sizin adınıza onlar uygulamayı derleyip çalıştırıyorlar. Veritabanı olarak PostgreSQL kullanırsanız 10bin satırlık veriyi tutmanız ücretsiz, bunun yerine MySQL’u seçerseniz, add-on’lar kısmında ClearDB var bu seferde 5MB’lık verinizi ücretsiz olarak tutuyorlar. Uygulama belli bir kullanıcıya ulaştığı anda bedel ödemeniz gerekiyor ki başlangıç bence yüksek bedeller. Development sürecinden sonra alternatiflere göz atılmalı diye düşünüyorum.

Jetpack 1.4 Yorum Alanını Nasıl Kullanacağız?

WordPress’in 3.4 sürümüne geçmesinin yanı sıra Jetpack’te artık 1.4 sürümüne geldi ve güzel tarafı WordPress’in yorum alanına facebook gibi hesaplarınızla yorum yapabilmeniz eklenmiş oldu. Ancak ne yazık ki kullandığımız temalarda bu eklentiyi etkinleştirmemize rağmen bir türlü değişikliği göremeyenlerdenseniz, temanızda bir ufak değişikliğe gitmeniz gerekiyor.

Temanızın single.php dosyasının için yorum formunu oluşturan kodunuzu bulun ve tamamen kaldırın. Yerine
php etiketleri arasında comment_form(); kodunu çağırınız. single.php’yi kaydettikten sonra sayfanızı yenilediğinizde, yeni yorum alanının sitenize dahil olduğunu göreceksiniz.

WordPress.Org’a İlk Eklenti

WordPress için yarı yıl tatili süresinde birkaç eklenti yazmam gerekmişti. Bunlardan bazılarını genele yönelik olarak düzenleyip yayınlama kararını vermem yarı yıl tatilinin son bulmasıyla başlamıştı ve ilk eklentimi okul açıldıktan birkaç hafta sonra yayınlamıştım. Ancak hakkında birşeyler yazmak ancak şimdiye kendisinin birkaç ufak hatasını gideren ikinci sürümünü yayınladığım bugüne kısmet oldu.

Eklenti temel olarak içerik türlerine bir de yemek tariflerinizi ekleyebileceğiniz bir tür ekliyor ve şimdilik ayarları ingilizce olarak yer alıyor. Önümüzdeki günlerde içerisinde kendi sayfa görünümünü de içeren Türkçe sürümünü de yayınlamayı düşünüyorum ancak ben o sürümü geliştirecek vakit bulana kadar şu anki sürümüne buradan ulaşabilirsiniz. Karşılaştığınız hataları ve geliştirilmesi gerektiğini düşündüğünüz yerlerini yorum yazarak bana iletirseniz çok sevinirim. Ancak dikkat etmeniz gereken bir nokta var eklentiyi kullanabilmek için sitenizi barındırdığınız sunucuda PHP 5.3 veya yukarısı bir sürüm bulunması gerekiyor.

Google Chrome ve GNOME-Keyring Anlaşmazlığı

Bu yıl aldığım birçok ders Windows üzerinde çalışan araçları kullanmamı gerektirdiği için Linux’uma daha az uğrar oldum. Vizeler ve ödevlerden nefes alma fırsatım olduğu bir aralıkta geri döndüğümde gelen güncellemeleride yaptıktan sonra birde ne göreyim benim Chromium kaydettiği şifrelerimi hatırlamaz olmuş. Yüzlerce sitenin şifresini ben nasıl aklımda tutayım? Çoğunu hatırlamıyorum bile, Google üzerinden senkronizasyon ile bu sorunu aşıyorum genellikle ama şifrelerim hatırlanmadığı zaman büyük bir sorun oluştu tabiki…

Nasıl üstesinden gelirim diye internette dolaşırken problemin gnome-keyring’le olan ilişkide çıkan sorunlardan kaynaklandığını öğrendim ve çözüm önerisi olarak Chromium’u tamamen kaldırıp tekrar kurmam ve parametre olarak “–password-store=basic” ile başlatırsam bilgisayarımda saklanan şifrelerimin artık şifrelenmeyeceğini ama erişlebilir olacağını öğrendim. Kişisel bilgisayarıma erişimin zaten birkaç kişi ile sınırlı kaldığınıda göz önünde bulundurarak bu yöntemi kullanmaya başladım.

Tekrardan şifrelerimin tarayıcım tarafından hatırlanması güzel bir duygu…

CentOS VPS’e Transmission Kurulumu *Güncellendi*

Elimde uzun zamandır bulunan bir vps’i torrent istemcisi olarak kullanmak istiyordum. Tabi ilk olarak aklıma ssh üzerinden bir torrent istemcisi kullanmak geldi ve google üzerinden onlarca arama yapmama rağmen beni tatmin edebilecek düzeyde bir istemci bulamadım. Sonra araştırma yapmaya devam ederken, halihazırda zaten kullanmakta olduğum transmission’ın GTK arayüzünden çok daha güzel bir web arayüzüne sahip olduğu aklıma gelince neden onu kullanmıyorum diyerek paket yöneticisinde var mı diye baktım. CentOS’çular beni hayal kırıklığına uğratmak için çabalıyor olsalar gerek ki bütün torrent istemcilerini depolarından kaldırmışlar.

Örnek Ekran Görüntüsü
Örnek Ekran Görüntüsü

Kaynak kodundan derleyerek kurma düşüncesine girdim ama bu seferde karşıma çıkan bağlılıklar cileden çıkarmaya yetecek boyutlardaydı. Sağolsun birileri transmission için gerekli depoları oluşturmuş ve bağlılıklarıyla beraber sunuyor. Bu durumda yapmanız gerekenlerin listesi %80 azalıyor. Eğer bir Linux kullanıcısıysanız terminalinizden direk ssh komutuyla vps’inize bağlanabilirsiniz, Windows kullanıcısıysanızda bu işi putty ile gerçekleştirdikten sonra CentOS 5 kullanıcı iseniz

cd /etc/yum.repos.d/

wget http://geekery.altervista.org/geekery-el5.repo

komutlarıyla, CentOS 6 kullanıcısıysanız da

cd /etc/yum.repos.d/ wget http://geekery.altervista.org/geekery-el6.repo

komutlarıyla depolarımızı ekliyoruz. Sonrasında

yum install transmission*

komutunu kullanmanız kurulum için yeterli oluyor. Konsola transmission-daemon yazarak uygulamanın çalışmasını sağlayabilirsiniz. Artık transmission emrinize amade. Çok basit bir kullanıma sahip olan arayüze erişmek için yapmanız gereken tek şeyse http://vpsin-ip-adresi:9091/ yazarak enter tuşuna basmanız.
Bol seed’li günler dilerim… 🙂

Güncel repo adresleri için: http://geekery.altervista.org/dokuwiki/doku.php

27 Haziran Tarihli PR Güncellemesi

Google’ın kullanıp kullanmayacağı belli olmayan, Trust Rank’a geçiliyor artık PR’lar değersiz dedikodularının döndüğü şu dönemlerde yeni bir Page Rank güncellemesi daha yapıldı. 27 Haziran’da başlayan güncelleme tamamlanmıştır diye düşünüyorum.

Anneme açmış olduğumuz, yapmış ve yaptırmış olduğu el işlerini sergilediği RemziyeNAKIŞ’ın PR değeri de 3 olarak belirlenmiş. Site bu şekliyle gelebileceği doyum noktasına ulaştı diye düşünüyorum, farklı güncelleştirmeler gerekiyor artık ilerliyebilmesi için.

Diğer projelerimde bir ilerleme şimdilik göremiyorum, zaten bu yaz kendi projelerimden çok staj yapacağım yerin projeleriyle ilgilenceğim. Umarım başarılı projelere imza atarız.

Yeni PR değerleri, beklentileri olan arkadaşlarımıza hayırlı olsun…

%99 Uptime Ne Demek Oluyor?

Web alanı sağlayan şirketlerin sitelerin hep %99.9 uptime gibi ibareler karşılaşırsınız. Peki bunun ne anlama geldiğini hiç düşündünüz mü? Küçük bir açıklama olsun diyerek küçük bir tablo hazırladım. Bakalım tam olarak karşılığı neymiş… 🙂

1 gün = 86,400 saniye (24 saat)
1 hafta = 604,800 saniye (7 gün)
1 ay = 2,592,000 saniye (30 gün)
1 mevsim = 7,862,400 saniye (91 gün)
1 yıl = 31,536,000 saniye (365 gün)
Kabul Edilen Maksimum Kapalı Kalma Süresi 

Gün(d):Saat(h):Dakika(m):Saniye(s)

99% 99.9% 99.99% 99.999% 99.9999% 99.99999%
1 Gün d:h:14:24 d:h:01:26 d:h:m:08 d:h:m:s d:h:m:s d:h:m:s
1 Hafta d:01:40:00 d:h:10:04 d:h:01:00 d:h:m:06 d:h:m:s d:h:m:s
1 Ay d:07:12:00 d:h:43:12 d:h:04:19 d:h:m:25 d:h:m:02 d:h:m:s
1 Mevsim d:21:50:00 d:02:11:00 d:h:13:06 d:h:01:18 d:h:m:07 d:h:m:s
1 Yıl 03:15:00:00 d:08:45:00 d:h:52:33 d:h:05:15 d:h:m:31 d:h:m:03

Bu tabloları gördükten sonra hâla hosting şirketinizin size verdiği sözleri tuttuğunu düşünüyor musunuz?

Remziye Nakış

Bilgisayar Mühendisliği okuyan bir evlat ve yıllarını Nakış Öğretmenliğine vermiş bir annenin birlikte hazırladığı bir proje. Evet buradaki evlat ben oluyorum, nakış öğretmeni olanda benim annem oluyor. 🙂 Ne zamandır içeriğini annemin dolduracağı bir proje hazırlamak istiyordum, neler konulabilir sorusunun cevabı hazırdı, birbirinden güzel işlemelere sahip ürünlerinin resimimlerini kısa birer yorumla paylaşabileceği bir site çok faydalı olacaktı. Hem evdeki boş vakitlerini değerlendirecekti hem de ürünlerini bütün dünyaya sergileme imkanı bulacaktı. Her yıl yaptıkları birbir eziyetle hazırlayıp sadece 2-3 gün sergileyebildikleri Aydın içi sergilerdende bu sayede kurtulmuş oldu.

Şimdiden Google üzerinden gelen bir sürü ziyaretçiye sahip olan bu projenin önünün hep açık olmasını diliyor, anneme bu emekleri için eline sağlık diyorum… 🙂 Gezip görmek isterseniz buradan erişebilirsiniz.

Drupal Guestbook Modülüne CAPTCHA Ekleyelim

Yaklaşık bir ay önce bir akşam tamamen can sıkıntısından küçük bir proje başlattım, gördüğü ilgi kayda değer oldu. Proje genel olarak tertemiz bir Drupal kurulumu ve Guestbook modülünden oluşuyordu. Bunların dışında da hiç bir eklenti kullanılmamıştı. Ancak internet o kadar kirlenmiş durumdaki, bizim herkese açık olan bu duvarımızı reklam botlarının fark etmesi çok zaman almadı ve bizi tedbir almaya zorladı.

Bu bilgisayarlar artık, bizim duvara yazmak isteyen kardeşlerimizden ayrılmalıydı. Doğal olarak benim de aklıma hemen hemen bütün sitelerde kullanılan CAPTCHA modülü geldi aklıma. (CAPTCHA için bir doğrulama standartı denebilir) Drupal için bulunan CAPTCHA modülünü kurdum ancak Guestbook modülü ile çalışabilmesi için bir ayara ihtiyacım olduğunu fark edince biraz araştırmayla Abhishek bloguna ulaştım. Meğer olayımız bir SQL sorgusuyla çözülüyormuş.

INSERT INTO `captcha_points` ( `form_id` , `module` , `type` ) VALUES ( 'guestbook_form_entry_form', NULL , NULL );

Bu sorguyu yaptırdıktan sonra /admin/user/captcha yoluyla ulaşacağınız ayarlar üzerinden Guestbook için CAPTCHA‘yı aktifleştirebilirsiniz. Abhishek‘e bu güzel paylaşımı için teşekkürler…