Skip to content


VPS’le WordPress’i Anlaştırma

Türkiye’deki hosting firmalarını geçersek, paylaşımlı sunucu firmalarının çoğu WordPress konusunda büyük rahatlık sağlıyor. Sistemin dosya yükleme aracı gerekli klasörleri otomatik olarak yaratıyor ve Core Update fonksiyonu FTP bilgisi istemeden sorunsuzca güncelleme yapıp eklenti/tema kurmamıza izin veriyor.

VPS’lerde ise bunun için kendimiz uğraşmamız gerekiyor. Birçok sorunun çözümü yokmuş gibi gözükse de, aslında çok basit bir şekilde tüm özellikler çalıştırılabiliyor.Öncelikle VPS’lerde başımıza gelebilecek hatalara bir göz atalım:

Dosya Yükleme: WordPress’in dosya yükleme sistemi süper çalışıyor. Özellikle fotoğraflar için mucizeler yaratıyor sistem. Otomatik olarak farklı boyutlar yaratıyor, tarihe göre klasörlere atıyor, hatta otomatik olarak galeriler yaratmanıza izin veriyor. Fakat VPS’lerde dosya izinleri nedeniyle bunların hiçbirini yapamıyor. Bunun için ya /wp-content/uploads dizinine 777 izni veriyorlar, veya kullanıcısını www-data yapıyorlar ki, birincisi büyük bir güvenlik açığı, ikincisi ise kullanıcının kendisinin dizini kullanamaması anlamına geliyor.

Otomatik güncelleme, eklenti/tema yükleme: WordPress’i 1.5 sürümünden beri kullanan biri olarak en başta ben sorabilirim “ananınızın karnından otomatik güncellemeyle mi doğdunuz” diye. Fakat sağladığı rahatlığı tattıktan sonra vazgeçemiyorsunuz. Ne yazık ki, dosya izinlerini tamir etseniz bile bu özellik inatla çalışmayabiliyor. FTP bilgilerini verince çalışabilme ihtimali olsa da, çoğu kullanıcı VPS’ine FTP sunucusu kurmamayı tercih ediyor.

Önemli not:

Ben 2 yıldır VPS kullanmama rağmen, Slicehost’ta Debian kullanırken Zerigo’da Ubuntu’ya geçtim. Kısaca kullanacağım kullanıcı isimleri ve terimler, özellikle www-data, Debian tabanlı dağıtımlara özgü olabilir. Başka dağıtımların sunucu grubu için apache veya nobody kullanabildiğini gözönünde bulundurup dağıtımınıza göre ayar yapmak isteyebilirsiniz.

Aşama Aşama VPS Tamiri

1. Aşama: Dosya İzinleri Belirleme

Bu, bu yazıda okuyacağınız en uzun, en hileli, en karmaşık, ve büyük ihtimalle beceremeyip yine bir güvenlik açığı verdiğim tek bölüm olacak. (Eğer bir hata bulursanız lütfen uyarın, na yorum kısmı aşağıda.)

Öncelikle, www-data grubunu kendi kullanıcımıza eklememiz gerekiyor. Burada, kendi kullanıcı adımın cemk olduğunu varsayıyoruz.

sudo usermod -a -G www-data cemk

Bunun geçerli olduğunu görmek için, çıkış yapıp tekrar girmeniz gerekiyor. Daha sonra test etmek için groups komutunu çalıştırabiliriz. Kendi kullanıcı adımızın yanında bir de www-data‘yı görmemiz gerekiyor.

c111 ~: groups
cemk www-data

Şimdi klasörlerimizin gruplarını değiştirmemiz gerekiyor. Eğer bilmiyorsanız, devam etmeden önce chmod, chown ve chgrp komutları hakkında detaylı bilgi almak isteyebilirsiniz.

Bu aşamada, bütün sitelerimizin grubunu www-data yapacağız. Apache www-data grubuna dahil olduğu, ve biz de kendi kullanıcımızı bu gruba dahil ettiğimiz için, chmod ile bu dizinlere verdiğimiz tüm grup izinlerini hem Apache kullanabilecek, hem de biz kullanabileceğiz.

Önce bir ek bilgi: Ben sitelerimi ev dizinimin altında “sites” isimli bir dizinde tutuyorum. Aynı şekilde “logs” ve “apps” diye ayrı dizinlerim de var. Fakat bizi şu anda ilgilendiren “sites” ve içindekiler. Burada varolan tüm öğelerin grubunu cemk‘dan www-data‘ya tek satırla çeviriyoruz.

sudo chgrp -R www-data /home/cemk/sites/

Peki ya yeni eklenecek klasörler? Onun için de bir satır komutumuz var. Normalde tüm dizinlere 750 (kullanıcıya yazma, gruba okuma, gerisine nanik) ve uploads dizinine 770 (kullanıcı ve gruba yazma, gerisine nanik) hakkı vermek mantıklı olan, fakat WordPress otomatik güncellerken tüm dizinleri ve dosyaları güncellediği için bütün sitelere olduğu gibi 770 veriyoruz.

sudo chmod -R 2770 /home/cemk/sites/

En baştaki 2, “set group ID” biti oluyor. Böylece o dizin altında sizin tarafınızdan yaratılan yeni dizin ve dosyalar da www-data grubuna dahil olurlar otomatikman.

Şimdi bir WordPress kurulumu yapın, ve dosya yüklemeyi deneyin. Et voilà! Çalıştığını göreceksiniz. Tabii belli bir boyuttan fazlasını yüklemeye çalışmazsanız.

2. Aşama: Dosya Boyutu Belirleme

Bunun için önce php.ini ayar dosyamızı bulmamız gerekiyor. Bunun nerede olduğunu phpinfo() komutuyla öğrenebiliyoruz. Loaded Configuration File kısmında yazan dizin, ayar dosyamız oluyor.

sudo nano /etc/php5/apache2/php.ini

Burada upload_max_filesize ve post_max_size ayarını bulup “2M”den istediğimiz değere çıkartıyoruz. Ben 64M yaptım. VPS’inizin RAM miktarına göre istediğiniz gibi arttırıp azaltabilirsiniz.

3. Aşama: Otomatik Güncelleştirme, Eklenti/Tema Yükleme

Diyeceksiniz ki “iyi güzel hoş, ayarı verdik, dizinlerimize artık sunucumuz da yazabiliyor, e zlib desteği de var PHP’mizin, peki biz neden hâlâ otomatik güncelleştirmeye veya eklenti/tema yüklemeye tıkladığımızda FTP bilgisi istiyor bu WordPress?”

Haklısınız. Ben de çok araştırdım. Meğerse son bir tanımlama yapmamız gerekiyormuş WordPress’e, bu özelliği kullanabileceğini anlatan. wp-config.php dosyasını açıp sonuna aşağıdaki satırı eklemek yetiyor.


define('FS_METHOD', 'direct');

Böylece artık bütün WordPress özelliklerini rahatça VPS’imizde, tıpkı paylaşımlı hosting’lerde olduğu gibi, ama daha fazla esneklikle kullanabiliyoruz.

Afiyet olsun!

Dipnot: Bu işlemleri yaparken sık sık yedek alın. Bunun için Slicehost veya Zerigo gibi “snapshot” almanıza izin veren VPS’leri tercih edebilirsiniz. (Hatta kendinizi cömert hissediyorsanız Zerigo’dan referrer kodumla bir paket alıp bana hosting desteğinde bulunabilirsiniz.)

Posted in Teknik.

Tagged with , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.