Tem 18 2010

WEB Server Performansını Nasıl Arttırırım? -4

Category: Apache,Gezegen,Lighttpd,Linux,Linux-KomutlarBayram Karagöz @ 01:58

Performans arttırımı konulu makalemin 4. kısmında sizlere database performans arttırımı ile ilgili ipuçlarından bahsedeceğim. Tabiiki bahsedilecek databaseler MySQL ve PostgreSQL dir. PostgreSQL Performansı arttırımı konusunu daha önce işlemiştim. Fakat bazı düzenlemeler yapmak amacıyla şuan yayında değildir. Düzenlemelerden sonra yayına almayı düşünüyorum ve sizi MySQL başarı arttırımı ile başbaşa bırakıyorum.

5- Database Performans Arttırımı

a) MySQL Performans Arttırımı

b) PostgreSQL Performans Arttırımı

5- Database Performans Arttırımı

ADOdb performance monitor uygulaması ile database yapılacak performans iyileştirmelerini görebilirsiniz.

a) MySQL Performans Arttırımı

  • Burada yapacağınız iyileştirmeler mysql in conf dosyası olan my.cnf üzerinde yapacağınız işlemlerdir. Dosyanın sahip olduğun değişkenler ve son değerlerini görmek için aşağıdaki komutu kullanabilirsiniz;
SHOW STATUS;
SHOW VARIABLES;
 

UYARI: ayar değişikliklerine başlamadan önce veritabanı yedeği almanızı öneririz ve her değişiklikten sonra mysql i restart etmeniz gerekmektedir.

  • İmkanınız varsa MySQLTuner ı çalıştırarak bu scriptin mevcut mysql serverınıza en uygun konfigürasyon değerlerini seçmesini sağlayabilirsiniz.
  • query cache değerini 1 yapın.
query_cache_type = 1. 
  • Diğer cache değerlerini aşağıdaki gibi ayarlayabilirsiniz. Eğer sürekli update işlemi yapıyorsanız bu işlem performans artışı sağlayacaktır.

query_cache_size = 36M
query_cache_min_res_unit = 2K. 
  • Aşağıdaki sorgu ile veritabanınıza açmış olduğunuz tablo sayısını bulup opened_tables > 3 * table_cache formülüne göre table_cache sayınızı ayarlayın. Bu sayı aynı zamanda yüklenilen modül ve plugin lerin miktarına göre değişebilir.
mysql>SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='yourdbname';
table_cache = 512 #(table_open_cache in MySQL > 5.1.2)
  • Aşağıdaki formüle göre thread cache miktarını hesaplayın ve değerini %100 doğrulukla atayın.
thread cache utilization (%) = (threads_created / connections) * 100
  • key buffer değeri SELECT sorgularına erişim hızıyla ilgili parametredir. En doğru değeri index dosyasının büyüklüğüne bağlıdır(.myi). Tavsiye edilen değer 32M dır. İdeal olarak database e 100 adet SELECT isteği yollayıp sonucuna göre değeri bulabilirsiniz. Aşağıdaki formüllerden yararlanabilirsiniz.
key_read / key_read_requests < 0.01
key_write / key_write_requests <= 1.0
 
  • maximum number of connections değerini doğru olarak ayarlamanız kullanıcılarınızın “To many connections” hatasını almaması için önemlidir. Bu değişkenin total memory kullanımını etkilediğini bilerek dikkatli olmalısınız. Mysql connectionları milisaniyeler içerisinde sonlandığından yoğun yüke sahip sistemlerde bile bu değeri 200 ün üzerine çıkarmak uygun değildir.
  • Yoğun delete ve update işlemleri olan tablolarınızı optimize ediniz. Bu sayede index leriniz yenilenecektir.

mysql>CHECK TABLE mdl_tablename;
mysql>OPTIMIZE TABLE mdl_tablename;
  • Herhangi bir tabloda problem olmasına karşın REPAIR TABLE komutunu kullanabilirsiniz.
  • Her hafta veya her ay mysql servisini durdurarak myisamchk komutunu çalıştırmak veritabanına bakım işlemlerini yapacaktır.
#myisamchk -a -S /pathtomysql/data/*.MYI

UYARI: komutu başlatmadan önce mysqld prosesinin durdurulmuş olması gerekmektedir. Aksi takdirde data kaybı yaşayabilirsiniz.

  • Geçici tabloların diske kaydedilmesi işleminin sayısını azaltın. Bunu created_tmp_disk_tables tablosundaki değeri okuyarak görebilirsiniz. Eğer bu sayı %5 ten fazla ise tmp_table_size değerini azalma görene kadar azaltın. Bu durumun RAM kullanımına etki ettiğini de dikkate almanızı tavsiye ederim.
  • Tablolarınız MyISAM formatında ise ve herhangi bir performans kazancı yaşamadığınızı düşünüyorsanız my.cnf ta InnoDB yi kapatın. skip-innodb parametresini my.cnf ye ekleyin.

Burada bulunan forumdaki tartışmadan yararlanabilirsiniz.

b) PostgreSQL Performans Arttırımı

Başka bir makalede daha ayrıntılı değinilecektir.

Web Server Performans Tuning konulu toplam 4 makaleden oluşan seride sizlere web serverınızı en verimli nasıl kullanabileceğinizi anlatmaya çalıştım. Umarım buradaki bilgiler işinize yarar. Herhangi bir kısımda takılırsanız yardımcı olmaya çalışırım. Hepinize performansı tam tuning olmuş mutlu günler dilerim…

KAYNAKLAR;

http://blog.digitalstruct.com/2008/01/31/performance-tuning-overview/

http://blog.stuartherbert.com/php/2008/01/31/more-about-performance-tuning/

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html#page-header

http://docs.moodle.org/en/Performance

http://docs.moodle.org/en/lighttpd

http://www.devside.net/articles/apache-performance-tuning

http://linuxbox.co.uk/vbulletin_performance_tuning.php

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Download    Makaleyi PDF formatında gönder

Etiketler: , , , , ,


Tem 17 2010

WEB Server Performansını Nasıl Arttırırım? -3

Category: Apache,FreeBSD,Gezegen,LighttpdBayram Karagöz @ 01:20

Yazımıza 3. kısım ile devam ediyorum. Bu kısımda sizlere performans ile alakalı anlatacaklarım altta sıralanmıştır. Tüm listeye  buradan ulaşabilirsiniz.

3- İşletim Sistemi Performans Arttırımı

4- WEB Server Performans Arttırımı

a) PHP Performans Arttırımı

b) Apache Performans Arttırımı

c) Lighttpd, NginX ve Cherokee Performans Arttırımı

3- İşletim Sistemi Performans Arttırımı

  • Grafiksel arayüzü olmadan kurulabilmesi, lisans maliyetinin olmaması nedeniyle Linux kullanmanız tavsiye edilir. Bunun yanında Unix bazlı sistemler(favorim tabiiki FreeBSD), Windows ve MAC OS X kullanabilirsiniz. Eğer çok işlemcili bir servera sahipseniz, SMP kullanımı için Solaris te kullanabilirsiniz.
  • İşletim sistemlerinin kendi optimizasyonlarını inceleyerek bunlar üzerinde gelişme kaydediniz.
    • Linux için buradan yararlanabilirsiniz.
    • Linux hdparm komutu ile çoklu sektore ve DMA ye okuma/yazma işlemini aktif edebilirsiniz. Ör: hdparm -m16 -d1
    • Diskleri async ve noatime seçenekleriyle birlikte mount ediniz.

4- WeB Server Performans Arttırımı

  • Firefox ve firebug extension unu kurarak her sayfadaki componentlerin açılma sürelerini incelemiş olursunuz. Bununla birlikte  Yslow extension ile sitenizin yahoo nun hızlı bir web sitesi için 14 kurala (video) uyup uymadığını veya ne kadar uyduğunu verdiği puanlar ile görebilirsiniz.

a) PHP Performans Arttırımı

  • CPU yükünü hafifletmek amacıyla PHP accelerator (PHP hızlandırıcıları) kullanmanız şiddetle tavsiye edilir. APC, PHPA, Xcache ve eAccelerator PHP hızlandırıcılara örnek olarak verilebilir. Bu hızlandırıcıları seçerken seçtiğiniz programın kullandığınız PHP versiyonu ile düzgün çalışabildiğine emin olun.
  • Cachelenmiş PHP sayfalarını TMPFS dosya sistemine koyabilirsiniz. Böylelikle okuma/yazma işlemlerinde performans artışı sağlarsınız. Fakat server kapanmalarında, restart veya web server restart durumlarında bu cachelenmiş dosyaların silinebileceğini unutmamak gereklidir. Dolayısıyla web servisini restart etmeden önce cachelenmiş dosyanın içeriğini kopyalayıp restart ettikten sonra tekrar geri kopyalama yapın.
  • Apache/IIS ISAPI module yüklendiğinde PHP nin performansı CGI ya göre daha iyi olur.
  • php.ini dosyasındaki memory_limit miktarını kontrol edin. PHP 5.2.1 de bu değer default olarak 128M atanmıştır. İhtiyacınıza göre bu değeri düşürün.

Nasıl Yüklenilir?

b) Apache Performans Arttırımı

Burada yapacağınız iyileştirmeler genel olarak httpd.conf dosyasında yapacağınız değişikliklerdir.

  • Eğer apache serverı windows üzerinde kullanıyorsanız,  Apache Lounge taki bilgilerden yararlanarak resmi bir apache server indirmeye göre performans ve stabilite  iyileştirmelerini yapabilirsiniz. Fakat şunuda göz önünde bulundurmak gerekiyor ki bu kurulum resmi olmayan bir kurulum olacağından hiçbir zaman resmi kurulum ile karşılaştırılamaz.
  • MaxClients değişkenini aşağıdaki formule göre ayarlayın. Bu değişken apachenin eşzamanlı olarak yapılan max. kaç isteğe cevap verebileceğinin sayısıdır. Bu değişkenı kullanıma elverişli olan RAM miktarının %80 ini yedek olarak kullanmak üzere ayırabilirsiniz.
MaxClients = Total available memory * 80% / Max memory usage of apache process
  • Apache prosesinin memory kullanma miktarı yaklaşık 10MB civarındadır. Bu yüzden pratik olarak elverişli RAM’ı 10MB lık parçalara bölerek MaxClients değerini elde edebiliriz. Apache prosesinin max. Memory kullanım miktarını öğrenebilmek için aşağıdaki komutu komut satırına yazabilirsiniz;
#ps -ylC httpd --sort:rss

Maxclients değerini 256 nın da üzerine çıkarmanız gerekiyorsa, ServerLimit değerini de değiştirmeniz gerekir.

UYARI: Maxclients değerini elverişli RAM in de üzerinde olacak şekilde ayarlarsanız swap alanı kullanılmaya başlayacağından performansta önemli düşüşler yaşarsınız.

  • Apachenin kullanacağı modül sayısını bilerek tam olarak ihtiyaca uygun olan modülleri aktif edin. Kullanmadığınız modüller aktif olarak kaldığında RAM in belirli bir miktarını kullanacak bu da performans düşüklüğüne neden olacaktır.
  • En son Apache versiyonunu kullanın. Örneğin Apache 2 versiyonu memorynin düzgün ve az kullanması üzerine geliştirilmiş özelliklere sahiptir.
  • Unix/Linux sistemlerde MaxRequestsPerChild sayısını 20-30 arasına düşürmeye çalışın.
  • Yoğun yüke sahip iseniz KeepAlive Off tanımlayarak bu KeepAlive işlemini durdurun(sitenizde link veya upload edilmiş resim dosyası bulunmuyorsa bu işlemi yapabilirsiniz) veya KeepAliveTimeout değerini 2 ile 5 arasında ayarlayın. Bu değer default olarak 15 sn ayarlıdır. Değerin fazla olması idle da bekleyen proses sayısının artacağı manasına gelir. Bu değerin size en uygun olanını seçmek için kullanıcılarınızın yaklaşık olarak sayfalarınızın gelmesi için ne kadar beklediklerini öğrenebilir veya test edebilirsiniz. Değeri değiştirdikten sonra CPU kullanımını gözleyerek çalışan httpd proseslerinde yükselme olup olmadığını kontrol edin.
  • Bir önceki performans iyileştirmesiyle alakalı önemli bir hususu belirtmek isterim. Eğer sitenizde SSL aktif edilmiş ise ve apache kullanıyorsanız KeepAlive Timeout değerini en az 60 sn yapın. Çünkü Internet Explorer da bununla alakalı bir problem mevcut(Şimdi düzeltildimi bilemiyorum).
  • KeepAlive Off değerini kapatmak yerine alternatif olarak bu değeri ON yaparak ve web server önüne HTML dosyalarının resimleriyle beraber cache lenmesini sağlayacak bir Reverse Proxy Server koyarak performans arttırımı yapabilirsiniz.
  • .htaccess dosyası kullanmıyorsanız AllowOverride parametresini None yaparak .htaccess kontrolünü engelleyin.
  • DirectoryIndex değerini doğru bir şekilde ayarlayarak web serverın içerik-araştırması (content-negotiation) yaparak zaman kaybetmesini engelleyebilirsiniz. Aşağıda bunun için bir örnek görülmektedir.
DirectoryIndex index.php index.html index.htm
  • Server üzerinde geliştirme yapmıyorsanız ExtendedStatus Off ve mod_info ile mod_status modüllerini disable edin.
  • HostnameLookups Off yaparak DNS sorgulaması gecikmelerini önleyebilirsiniz. Default olarak bu şekildedir.
  • TimeOut  değerini 30 ile 60 sn arasında ayarlayın.
  • Options yönergesini klasör taramasını önleyecek şekilde ayarlayın. Bu sayede disk I/O miktarını düşürmüş olursunuz. Aşağıda örnek konfigürasyon görülmektedir.
Options -Indexes FollowSymLinks
  • Cacheleme – web server performansı için hayati önem taşıyan durumdur cacheleme. Bir sayfayı kullanıcıların her girişinde tekrar tekrar açıp resimleri, flashları getirmeye çalışması server için büyük bir yüktür. Bu nedenle sürekli olarak değişmeyen öğelerin (resim olabilir, flash olabilir) cachelenmesi sayfanın kısa sürede gelmesi için çok önemlidir.

Cacheleme OS ye göre değişebilir. Fakat temel olarak 2 adımda incelenir.

  1. mode_expires ı kurun ve aktif edin – dökümantasyonlardan ve man sayfalarından yararlanabilirsiniz.
  2. Virtual server tanımlamasında root dizinin <directory> kısmına aşağıdaki kod parçasını ekleyin.(.htacces dosyasına da AllowOverride parametresini ON olarak set ettikten sonra ekleyebilirsiniz .)

<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 seconds"
 ExpiresByType text/html "access plus 1 seconds"
 ExpiresByType image/gif "access plus 1 week"
 ExpiresByType image/jpeg "access plus 1 week"
 ExpiresByType image/png "access plus 1 week"
 ExpiresByType text/css "access plus 1 week"
 ExpiresByType text/javascript "access plus 1 week"
 ExpiresByType application/x-javascript "access plus 1 week"
 ExpiresByType text/xml "access plus 1 seconds"
 </IfModule>

Yukarıdaki ifade HTML ve XML dosyaları haric dinamik olarak değişen tüm dosyaları cachelemektedir. Cache zamanını da resimlerinizin değişme süresine göre ayarlayabilirsiniz.

Ayrıntılı bilgi için www.metaskills.net adresini inceleyebilirsiniz.

c) Lighttpd, NginX ve Cherokee Performans Arttırımı

Web server performansını lighttpd, nginx or cherokee gibi hafif web server programları kullanarak ve PHP ile FASTCGI-mode ile kombine ederek arttırabilirsiniz.

Lighttpd web server uygulaması tamamen yüksek miktarlarda yüke sahip serverların memory ve disk I/O kullanımlarının en düşük ve en iyi düzeyde kullanılması için tasarlanmıştır.

Memory ve disk kullanımları sınırlı seviyede olan sistemler için kullanılması gayet uygundur.

Alternatif olarak lighttpd and nginx web uygulamaları load balancer (yük dengeleyici) ve/veya reverse proxy olarak kullanılarak yük dağıtım işlevi görebilirler. Bu programlar yüksek trafiğe sahip binlerce serverda denenmiş ve basit konfigürasyonlarla başarılı bir şekilde kullanılmaktadır.

KAYNAKLAR;

http://blog.digitalstruct.com/2008/01/31/performance-tuning-overview/

http://blog.stuartherbert.com/php/2008/01/31/more-about-performance-tuning/

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html#page-header

http://docs.moodle.org/en/Performance

http://docs.moodle.org/en/lighttpd

http://www.devside.net/articles/apache-performance-tuning

http://linuxbox.co.uk/vbulletin_performance_tuning.php

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Creator    Makaleyi PDF formatında gönder

Etiketler: , , , , , , , ,


Tem 15 2010

WEB Server Performansını Nasıl Arttırırım? -2

Category: Apache,FreeBSD,Gezegen,LighttpdBayram Karagöz @ 23:34

WEB performans arttırımı ile alakalı başlamış olduğum yazıma 2. kısımla devam ediyorum. Bu kısımda sizlere anlatacağım konular altta belirtilmiştir. Performans ile alakalı bahsedeceğim tüm kısımların listesine buradan ulaşabilirsiniz.

1- Giriş

2- Donanım Performans Arttırımı

Sitenize aynı anda giren kişi sayısı haddinden fazla ise sizin de web sitenizde performans arttırımı yapmanızın zamanı gelmiş demektir. Bununla birlikte sitenizde fazla kişi olmamasına rağmen sitenizin performansını arttırarak hem kullanıcıların isteklerini daha hızlı gerçekleştirebilmelerini sağlamış olursunuz hem de ileri bir zamanda sitenize girecek kişi sayısının artmasına karşı önleminizi şimdiden almış olursunuz.

Ölçüm ortamının hazırlanması

Optimizasyonlara başlamadan önce performans arttırımı yapılacak sistemin mevcut durumunu ölçmeliyiz ki yaptığımız performans arttırımından sonra karşılaştırma yapma imkanımız olsun. Bunun için Linux kullanıyor isek LBS i , Windows kullanıyorsak Performans Monitör ü kullanabiliriz.

Performans arttırımındaki en temel amaç RAM i (cacheleme için) olabildiğince fazla kullanma, disk bazlı aktivitelerin minimuma indirilmesidir. Sistemlerde swap alanının olabildiğince kullanılmaması bir başka önemli husustur. Eğer sisteminiz swap alanını kullanmaya başlamış ise bu sizin daha fazla RAM e ihtiyacınız olduğunu göstermektedir.

Optimizasyon yapılacak sistemlerde optimizasyon sırası genelde şu sırada olmalıdır;

  1. Daha fazla RAM
  2. Daha hızlı diskler, RAID konfigürasyonu doğru yapılmış
  3. Daha hızlı CPU

Ölçeklenirlik (Scalability)

Büyük yüke sahip siteler genellikle web server ve database server ı fiziksel olarak ayrı makineler üzerinde çalıştırırlar. Buna rağmen az yüke sahip sitelerde böyle bir şeye gerek yoktur. Bunun yanında load-balance uygulamasıyla bir sitedeki web server sayısı da arttırılabilir. Bu tip durumlarda farklı web serverların aynı database ve file servera bağlanması gerekebilir. Bu tip çalışma şekline clustering diyoruz. Aynı çalışma ihtiyaca göre database server tarafında da yapılabilmektedir.

Donanım Performans Arttırımı

NOT: Optimizasyon ile alakalıa yapabileceğiniz en hızlı ve en verimli gelişme web serverınızdak RAM miktarını olabildiğince arttırmaktır. RAM miktarınız arttırarak swap alanının kullanımını engelleyerek diske erişimleri azaltacak daha fazla kullanıcının işlem yapmasını sağlayacaksınız.

  • Yüksek işlemci kapasitesine sahip olmak iyi bir performans arttırım kuralıdır. Örneğin son zamanlarda sıklıkla kullanılan dual veya quad core işlemcilerin kalitesi gayet yüksek düzeydedir.
  • Eğer maddi imkanlarınız yeterli düzeyde ise SATA diskler yerine  SCSI diskleri tercih edin. SATA diskler CPU kullanımının artmasına neden olur. SCSI disklerde entegre işlemciler bulunduğu için böyle bir durum söz konusu değildir. Eğer SATA disklere sahip iseniz, anakartınızın ve diğer driver larınızın NCQ (Native Command Queuing) özelliğini desteklemesi gerektiğini kontrol edin.
  • Disklerinizin dönüş hızları ne kadar fazla ise database verilerinize o kadar hızlı ulaşabilirsiniz. Bu nedenler RPM miktarları fazla olan diskleri tercih edin. Ör : 15000RPM
  • SWAP alanını doğru belirleyin. Genel tavsiye olarak bu alanın RAM miktarının 4 katı olması gerekir.
  • Disklerinizi uygun RAID konfigürasyonu ile birlikte kullanın.
    • Donanımsal RAID controller kullanın.
    • RAID 10 kullanımı tercih edin. NOT: Web server ve database server ın mirror olmayan disklerde olmasına dikkat edin.
  • Gigabit ethernet kartı kullanın. Özellikle web server ve database server ın ayrı hostlarda olması durumunda bu durum daha önemlidir.
  • Network kartının ayarlarını kontrol edin. Kart üzerindeki buffer kullanımı miktarını, giriş/çıkış descriptorlarını arttırarak ve kart üzerinde off-loading TCP checksum hesaplama işlemini aktif ederek (bu hesaplamayı CPU yaptırmadan) ciddi performans kazanımı elde edebilirsiniz.
  • 300 kullanıcılı sistemde yapılan stres testinin buradan bir inceleyin.
  • Aynı sistemin network trafik miktarını ve server yükünü buradan bir inceleyin.
  • Burada yapılmış bir uygulama görülmektedir. Bir inceleyin derim.
  • SFSU üniversitesinde yapılmış bir prezentasyon bulunmaktadır. Burayı da bir incelemenizi tavsiye ederim.

KAYNAKLAR;

http://blog.digitalstruct.com/2008/01/31/performance-tuning-overview/

http://blog.stuartherbert.com/php/2008/01/31/more-about-performance-tuning/

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html#page-header

http://docs.moodle.org/en/Performance

http://docs.moodle.org/en/lighttpd

http://www.devside.net/articles/apache-performance-tuning

http://linuxbox.co.uk/vbulletin_performance_tuning.php

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Creator    Makaleyi PDF formatında gönder

Etiketler: , ,


Haz 27 2010

En Süper WEB Server için 5 Elementin Birleşmesi (FreeBSD 8.0, PHP52, Lighttpd, PostgreSQL ve Ben)

Category: FreeBSD,Genel,Gezegen,Linux,PostgreSQLBayram Karagöz @ 17:57

Herkesin gönlünde yatan bir server vardır. Öyle bir server ki hem stabil, hem performanslı hem de hızlı çalışsın dediğiniz olmuştur. Böyle bir server üzerinde web servisi çalıştırmak kadar zevkli birşey yoktur benim için…
İşte bu vesileyle yaptığım araştırmalar neticesinde en iyi web server için kullanılabilecek komponentleri topladım ve size bu 5 elementi sunuyorum;

  • FreeBSD 8.0 Release

  • PHP52

  • Lighttpd 1.4.26

  • PostgreSQL 8.4.4

  • Ben :)

Şimdi de sözü fazla uzatmadan bu elementleri birleştirip ortaya harika birşey çıkaralım. (Kurulum testi sanal makinede yapılmış ve başarılı olunmuştur.);

FreeBSD 8.0 Kurulumu;

FreeBSD kurulumu asıl konumuz olmadığı için burada OS kurulumu üzerinde detaylı olarak durmayacağım. Buradan 8.0 Release versiyonu indirerek minimum seviyede kurulum yapalım. Minimum kurulum yapmamızın sebebi sisteme istenmeyen ve yük getireceğini düşündüğümüz yazılımların gereksiz yere kaynak harcamasını engellemektir.

Kurulum yapıldıktan sonra kişisel olarak port ağacını, kabuk olarak bash programını kurdum. Daha sonra uzaktan ssh ile bağlanıp işlemlere devam ettim.

UYARI: Kurulum yapıldıktan sonra uzaktan ssh giriş denemelerinde root girişine sistem izin vermemektedir. Bu yüzden kurulum sırasında oluşturulan ikincil kullanıcının grubunun wheel olarak değiştirilmesi gerekmektedir. Ben bu tarafı kullanıcıyı rmuser komutu ile silip adduser ile tekrar oluşturarak çözdüm. Siz de böyle yapabilirsiniz.

PHP52 Kurulumu;

Kuruluma başlamadan önce port ağacını güncelleyelim.

#portsnap fetch

#portsnap extract

Güncellemeden sonra port ağacından php nin 5.2 versiyonu bulup yükleyelim.

# cd  /usr/ports/lang/php52
 # make
 # make install
 # make clean

Kurulum tamamlandıktan sonra php nin db desteği gibi bize lazım olacak uzantılarını extension dan işaretleyip yükleyelim;

NOT: pgsql uzantısını listeden seçmeyi unutmayın!

ctype:    The ctype shared extension for php
curl:    The curl shared extension for php
dom:      The dom shared extension for php
gd:       The gd shared extension for php
imap:     The imap shared extension for php
mbstring: The mbstring shared extension for php
mcrypt:   The mcrypt shared extension for php
mysql:    The mysql shared extension for php
mysqli:   The mysqli shared extension for php
pcre:     The pcre shared extension for php
posix:  The posix shared extension for php
session:  The session shared extension for php
simplexml: The simplexml shared extension for php
xml:  The xml shared extension for php
xmlreader: The xmlreader shared extension for php
xmlwriter: The xmlwriter shared extension for php
zlib:  The zlib shared extension for php
# cd /usr/ports/lang/php52-extensions
 # make
 # make install
 # make clean

Lighttpd 1.4.26 Kurulumu;

Lighttpd, yüksek performanslı sistemler için dizayn edilmiş güvenli, hızlı, uysal ve oldukça esnek bir web serverdır. Diğer web serverlar ile kıyaslandığında oldukça düşük memory ve cpu kullanımına sahip olduğu gözlenmektedir. Öne çıkan özellikleri FASTCGI, CGI, Auth, Output-Compression, URL-Rewriting ve daha birçokları ile yük problemi çeken sistemler için idealdir. Aynı zamanda kurulumu da oldukça basittir.

Portlardan yerini belirleyip kuralım;

# cd /usr/ports/www/lighttpd
# make
# make install
# make clean

açılışta otomatik çalışması için rc.conf a giriş yapalım;

# echo 'lighttpd_enable="YES"' >> /etc/rc.conf

test yapabilmek amacıyla www klasörü altına bir html dosyası oluşturalım;

# mkdir -p /usr/local/www/data
# echo 'HELLO. LIGHTTPD WORKS' > /usr/local/www/data/index.html

lighttpd.conf dosyasını açarak bazı değişiklikler yapalım;

# nano +43 /usr/local/etc/lighttpd.conf

bu ifadeyi…

server.errorlog             = "/var/log/lighttpd.error.log"

bu şekilde değiştirelim…

server.errorlog             = "/var/log/<em>lighttpd/</em>lighttpd.error.log"

119. satırda bu ifadeyi..

accesslog.filename          = "/var/log/lighttpd.access.log"

bu şekilde değiştirelim…

accesslog.filename          = "/var/log/<em>lighttpd/</em>lighttpd.access.log"

PHP nin FASTCGI modülünü kullanmak için lighttpd.conf dosyasında..

modülün enable olduğuna emin olun;

server.modules              += ( "mod_fastcgi" )

aşağıdaki satırları ekleyelim…

fastcgi.server = ( ".php" =>
( "localhost" =>
                     (
                        "socket" => "/tmp/php-fastcgi.socket",
                        "bin-path" => "/usr/local/bin/php-cgi"
                      )
                   )
)

log dosyaları klasörü oluşturup haklarını düzenleyelim;

# mkdir /var/log/lighttpd
# chown www:www /var/log/lighttpd

lighttpd servisini çalışmasını başlatın,

# /usr/local/etc/rc.d/lighttpd start

Browser ınıza sistemin ip sini yazıp “HELLO. LIGHTTPD WORKS” ifadesinin yazıp yazmadğını kontrol ediniz.

PostgreSQL 8.4.4 Kurulumu;

8.4 ü portlarda bulup server ve client versiyonlarını yükleyelim.(Server yüklenince clientta otomatik yüklenir.)

# cd /usr/ports/databases/postgresql84-server
# make config
# make install clean

açılışta otomatik başlama için rc.conf ayarları yapılır,

# echo 'postgresql_enable="YES"' >> /etc/rc.conf

ilk database oluşturma işlemi başlatılır,

# /usr/local/etc/rc.d/postgresql initdb

komut çıktısı;

/usr/local/etc/rc.d/postgresql initdb
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.

The database cluster will be initialized with locale C.
The default text search configuration will be set to "english".

fixing permissions on existing directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 40
selecting default shared_buffers ... 28MB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    /usr/local/bin/postgres -D /usr/local/pgsql/data
or
    /usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

postgresql servisi başlatılır;

# /usr/local/etc/rc.d/postgresql start

Tüm kurulum işlemleri tamamlanmıştır. Artık yeni ve süper server ınız kullanıma hazırdır. İyi günlerde kullanınız. Kurulum sırasında karşılaştığınız hataları burada benimle paylaşırsanız yardımcı olmaya çalışırım…

NOT: Tüm kurulumun doğru çalışıp çalışmadığını kontrol etmek amacıyla phppgadmin programını buradan indirip sisteminize kurmayı deneyebilirsiniz.

KAYNAKLAR;

http://www.cyberciti.biz/tips/howto-install-lighttpd-on-freebsd.html

http://jasonk2600.wordpress.com/2010/01/11/installing-postgresql-on-freebsd/

http://www.linuxgeek.ca/wordpress/?p=130

http://www.cyberciti.biz/faq/howto-setup-lighttpd-fastcgi-php-server/

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Download    Makaleyi PDF formatında gönder

Etiketler: , , , , ,


Eyl 11 2009

SSL Sertifikasının Apache Web Sunucusuna Yüklenmesi

Category: Apache,GüvenlikBayram Karagöz @ 12:39

Uzun bir uğraştan sonra RapidSSL den almış olduğum SSL sertifikasını apache servera yüklemeyi başardım. Uzun olmasının sebebi de sertifikayı google “SSL sertifika satın al” yazıp önüme çıkan hiç bilinmeyen bir hosting firmasından satın alıp tam 4 gün beklemem oldu. Burdan alınacak en büyük ders bilmediğim yerle iş yapmamak oldu. RapidSSL in kendi sitesinden baktığımda yıllık sertifika fiyatlarının 79$ dan başladığını gördüm. Fakat bilinmeyen hosting firmalarından aldığınız SSL sertifikalarına 29$ ödeyerek 1 yıllığına satın alabiliyorsunuz.

Verisign firmasının SSL sertifikalarını incelerseniz fiyatların çok daha fazla olduğunu göreceksiniz. Fiyatlar arasında büyük farklar olmasının çeşitli nedenleri var tabiiki. Bu fiyat farklarını belirleyen 3 önemli nokta;

1. Verdikleri teminat bedelleri. Verisign algoritmasına güvenir, 1.000.000 $ garanti verir. Rapidssl de güvenir fakat 10.000 $ verir. Baktığınızda bu iki protokol üzerindeki bilgiler 3. şahısların eline hiç bir zaman geçmediği için bu rakamları bu güne kadar alanda olmamıştır.
2. İstenilen resmi belgelerde bu rakamı etkiler. Siz rapidssl i almak için CSR kodunu gönderip mail adresinize gelen doğrulama mailini tıkladıktan sonra sertifikanızı hemen sunucunuza kurabilirsiniz. Fakat verisign da sizden bazı resmi belgeler istenir. Bu sürenin uzamasına yol açar ve baktığınızda sizinle ilgilenen kişiler olmuştur. Rapidssl de ise herşey otomasyonlarla yapılır. Bunlarda maliyeti arttıran en önemli faktörlerdir.

3. Marka… Verisign ismini sitenizde ve sertifikanızda göstermeniz halinde, siteniz hiç duyulmamış bir site bile olsa bile insanlar sitenize güvenebilir. Bunu şöylede düşünebilirsiniz. Ufak çaplı bir firma açtığınızda ister esnaf ve sanatkarlar odasına isterseniz de ticaret odasına kayıt olursunuz. Aralarında gözle görülür bir fark yoktur. Ama örneğin, esnaf vso na 50 lira verirken Ticaret odasına 200 lira verirsiniz. Aradaki ödediğiniz fark ise imajınızın daha güvenilir ve kurumsal olmasını sağlar. Genel olarak fiyat arasındaki farklar bunlardır.

Sözü çok fazla uzatmadan kurulum aşamasına geçelim;

SSL sertifikasının alınması için gerekli ön koşullar vardır.

1. sertifikanın yükleneceği serverda .csr ve .key uzantılı 2 adet key oluşturulması gerekmektedir.
2. oluşturulan .csr uzantılı key SSL sertifikası için istek keyidir ve içerisinde bazı bilgiler saklıdır. ilerleyen kısımlarda daha detaylı açıklanacaktır.
3. .csr key ile herhangi bir sertifika veren firmaya başvurduğunuzda size .crt uzantılı sertifikanızı gönderecektir. Bu sertifikayı sunucuya yükledikten sonra sertifikanızı kullanmaya başlayabilirsiniz.

Sertifikanın alınması;

1.
yukarıdaki 1. madde dediğimiz gibi öncelikle .csr ve .key uzantılı keyler oluşturmamız gerekiyor. Fakat bundan önce apache sunucunuzda openssl kurulu ve apache nin mod_ssl modülünün aktif olması gerekiyor. gerekli ön koşulları sağladıktan sonra öncelikle .key uzantılı keyimizi oluşturalım. dosyamızın ismi sertifikayı almak istediğimiz domain adı (Fully Qualified Domain Name (FQDN)) olmalıdır. ÖR: www.bayramkaragoz.org.key

aşağıdaki komutu konsola yazalım;


openssl genrsa -rand messages:messages.0.bz2:messages.1.bz2:messages.2.bz2:messages.3.bz2 -out www.bayramkaragoz.org.key 1024

buradaki -rand kısmından sonraki : işareti ile ayırdığım messages dosyaları, keyin oluşturulmasına yardımcı olacak log dosyalarıdır. İsterseniz farklı dosyalarda seçebilirsiniz. Fakat keyin oluşturulması aşamasında sisteminizde boyutları fazla olan ve sıkçe değişen 5 adet dosyanın yerini yazmanız keyin güvenliğinin daha yüksek olması açısından çok önemlidir.

komutun çıktısı;


0 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
......++++++
....++++++
e is 65537 (0x10001)

key dosyasının içeriğini göstermek istersek aşağıdaki gibidir;


-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDWngCM+Bl+pf/YH4ZXpGWqgdwjqBAhYFse8QoRFDQxrSQ1o2Ga
L01gSGAJfu4yk3/vvYJ5CdzWBIcA1YLzxPRoTiHR3CLPYKcYPg27rwJfPDI/Gj1n
Qcd2pF5Qnsxmd6SJQRoBy2UhIU3fZgpU8GwVTs3ansj+L5fbONACI2lx/QIDAQAB
AoGANADFEWNsigufGrdIziO/nrkoplsqzWuTqMOvNMQ4gXD6vSSBmeKsVRA0dRiU
jxy+e1DoNHv3TsR6EfGqcXbf4ZSxjyzRsidfVyrdDmeyY3sFpvh9BcJv3CVdUvy8
P+IunMqVlQ/e1PH4tlOTSQlLcpxUBsVgL+oB6h4tKfXi7AECQQDuHYXVTGGjKpzH
77xwXDU3VacrxcX2mUpuw91NtB+jTZQO02WWwwjOuI2FQ+gFzLqps+rTCTYlBoRL
y5MiAlOhAkEA5ryoZLY0ExivZlCpJZ3b6BVvmEC33yTo7ufTPDblfAV3kCAvAusD
Sbjo9WJFw/0t5Zter2SlL0s+a6y70h9A3QJBAKV11l3VabNcFP3J1QOuzzvYRQXh
tCIbeuFlMQ6hr6pmag+zTdBpTmF3VL/Z5AzDqqHp568lo34u/Rc+KstjGoECQFoV
oB0p8ezev2RP66ovFrNm4xnrcp5hd7wGsLcaq8AfFk4j8pbOEIuQ8QsU4i4hw/CY
F4Cc580uMGGzn+TqpNUCQHgIuP7itqNFLw4D8byx4cmIsxSjsEAkMbAkuDXF/Qcv
yVG+MzDrP6bpyyuJM/MKXeY3gbS4ZtCPZXNeNhg6pVU=
-----END RSA PRIVATE KEY-----

2.
keyi oluşturduktan sonra .csr dosyasını oluşturmak gerekmektedir. dosyamızın adı yine domain name olmak zorundadır.


openssl req -new -key www.bayramkaragoz.org.key -out www.bayramkaragoz.org.csr

komutu yazdıktan sonra bizden bazı bilgiler istenecektir. Burada önemli olan nokta `Common Name (eg, YOUR name)’ sorusuna domain adınız ne ise onu yazmanız gerektiğidir. Kendi isminizi yazmayacaksınız. Diğer bilgileri aşağıdaki şekilde kendinize uygun bilgileri yazabilirsiniz;


You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TR
State or Province Name (full name) [Some-State]:Turkey
Locality Name (eg, city) []:Istanbul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Outlier
Organizational Unit Name (eg, section) []:VoIP
Common Name (eg, YOUR name) []:www.bayramkaragoz.org
Email Address []:bayram@bayramkaragoz.org

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

csr dosyasını içeriği aşağıdaki şekildedir;


-----BEGIN CERTIFICATE REQUEST-----
MIIB3DCCAUUCAQAwgZsxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIEwZUdXJrZXkxETAP
BgNVBAcTCElzdGFuYnVsMRAwDgYDVQQKEwdPdXRsaWVyMQ0wCwYDVQQLEwRWb0lQ
MR4wHAYDVQQDExV3d3cuYmF5cmFta2FyYWdvei5vcmcxJzAlBgkqhkiG9w0BCQEW
GGJheXJhbUBiYXlyYW1rYXJhZ296Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEA1p4AjPgZfqX/2B+GV6RlqoHcI6gQIWBbHvEKERQ0Ma0kNaNhmi9NYEhg
CX7uMpN/772CeQnc1gSHANWC88T0aE4h0dwiz2CnGD4Nu68CXzwyPxo9Z0HHdqRe
UJ7MZnekiUEaActlISFN32YKVPBsFU7N2p7I/i+X2zjQAiNpcf0CAwEAAaAAMA0G
CSqGSIb3DQEBBAUAA4GBAAd8heG4YiQ3WHU0p+rEL7AZlg5hb5kBxeP88sKR5QHw
OVtXfeI21oeEGT0O9CYMHpZb29QgviZGxxdNqgXXDfZKRkSrzWGyCIsSN7WE+MLz
ox5O+Rna9Ztcs3Fr03e76IQ53yF1+zglNAphKsELGXTtf57GGAGge3x3vApunE+i
-----END CERTIFICATE REQUEST-----

3.
elde etmiş olduğumuz csr key ile ssl sertifikası veren firmaya başvurduğumuzda bizden bu istek .csr sertifikasını isteyecek ve bize .crt uzantılı sertifikamızı gönderecektir.

gelen sertifikayı yine domain_adi.crt olarak kaydedelim.

gelen sertifikanın örnek içeriği aşağıdaki gibidir;


-----BEGIN CERTIFICATE-----
MIICrzCCAhgCCQCdyYGDSkyQiDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMC
VFIxDzANBgNVBAgTBlR1cmtleTERMA8GA1UEBxMISXN0YW5idWwxEDAOBgNVBAoT
B091dGxpZXIxDTALBgNVBAsTBFZvSVAxHjAcBgNVBAMTFXd3dy5iYXlyYW1rYXJh
Z296Lm9yZzEnMCUGCSqGSIb3DQEJARYYYmF5cmFtQGJheXJhbWthcmFnb3oub3Jn
MB4XDTA5MDkxMTA5MTUyNloXDTA5MTAxMTA5MTUyNlowgZsxCzAJBgNVBAYTAlRS
MQ8wDQYDVQQIEwZUdXJrZXkxETAPBgNVBAcTCElzdGFuYnVsMRAwDgYDVQQKEwdP
dXRsaWVyMQ0wCwYDVQQLEwRWb0lQMR4wHAYDVQQDExV3d3cuYmF5cmFta2FyYWdv
ei5vcmcxJzAlBgkqhkiG9w0BCQEWGGJheXJhbUBiYXlyYW1rYXJhZ296Lm9yZzCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1p4AjPgZfqX/2B+GV6RlqoHcI6gQ
IWBbHvEKERQ0Ma0kNaNhmi9NYEhgCX7uMpN/772CeQnc1gSHANWC88T0aE4h0dwi
z2CnGD4Nu68CXzwyPxo9Z0HHdqReUJ7MZnekiUEaActlISFN32YKVPBsFU7N2p7I
/i+X2zjQAiNpcf0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCKqgdpQ8vDyVTTH+Dm
6w6Yfz6rWpQdEWlpv8hEON9zlWQOhJvTKmPoCsIDrAWj6+6w5xaBTwgIxtEpTxLr
AP79Yj4V1AqIRTTD446UsCLIxnJDTkj3Q7xv0VhXQfeK7Zv4s+ejrUVTmG5xxgRL
plDO+65mjtbi9GDpEENnMOcFkQ==
-----END CERTIFICATE-----

İstediğimiz takdirde orjinal sertifikamız gelene kadar kendimiz geçici bir sertifika oluşturabiliriz. Aşağıdaki komut ile kendi domain adımız için geçici bir sertifika oluşturabiliriz.


openssl x509 -req -days 30 -in www.bayramkaragoz.org.csr -signkey www.bayramkaragoz.org.key -out www.bayramkaragoz.crt

komutun çıktısı;


Signature ok
subject=/C=TR/ST=Turkey/L=Istanbul/O=Outlier/OU=VoIP/CN=www.bayramkaragoz.org/emailAddress=bayram@bayramkaragoz.org
Getting Private key

sertifikanın alınması işlemi tamamlandı ise şimdide kurulum aşamasına geçelim;

sertifikanın aktif edilmesi;

.csr , .key ve .crt uzantılı 3 adet keyiminizi apache altına ssl sertifikalarının olduğu yerlere taşıyalım. FreeBSD de sertifikaların olduğu kısım /usr/local/etc/apache/ssl.* dir. Örneğin www.bayramkaragoz.org.csr keyini /usr/local/etc/apache/ssl.csr/ altına, www.bayramkaragoz.org.key dosyasını /usr/local/etc/apache/ssl.key altına, www.bayramkaragoz.org.crt dosyasını da /usr/local/etc/apache/ssl.crt altına taşıyalım.

Daha sonra apache sunucuda virtual hostlarla alakalı bize ait olan virtual host tanımlamasının bulunduğu httpd.conf dosyasındaki ilgili kısıma aşağıdaki ifadeleri girerek kendi virtual hostumuz için sertifikaların yerini belirmiş olacağız;


SSLCertificateFile /usr/local/etc/apache/ssl.crt/www.bayramkaragoz.org.crt
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/www.bayramkaragoz.org.key

tanımlamayı yaptıktan sonra apache de ssl mod aktif ise apache yi restart ederek, aktif değil ise apache yi durdurup ssl mod ile çalıştırarak sertifikanın aktif olmasını sağlayabiliriz.


apachectl stop
apachectl startssl

Artık sunucu ile tüm istemciler arasındaki web haberleşmesi şifreli olarak yapılabilecektir.

Kaynaklar:

http://www.verisign.com/support/tlc/csr/modssl/v00.html

http://www.rh.com.tr/cozumler/ssl/ssl-kurulumu/apache_ssl_kurulumu.aspx

http://www.trustcenter.de/installation_instruction_for_intermediate_ca_certificate.htm#Apache

http://www.cozumpark.com/forums/thread/12906.aspx

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
Create PDF    Makaleyi PDF formatında gönder

Etiketler: , ,