Bölüm 4 Apache Web Sunucu
Transkript
Bölüm 4 Apache Web Sunucu
İrfan MACİT Bölüm 4 Apache Web Sunucusu Bölüm 4 Apache Web Sunucu 1. Giriş Hizmet sunucuları işlevini görecek bilgisayarlar iki alt grupta toplanabilir. Birincisi Internet erişimini sağlayan diğer bir deyişle Internet bağlantı hizmetini verecek olan bilgisayar,diğeri ise hizmet sunucu bilgisayar buna da web servislerinin verildiği bilgisayar olarak tanımlayabiliriz. Değişik firmaların ürettiği çeşitli web sunucu yazılımları bulunmaktadır. Dünyadaki web servislerinin yarısından fazlasını apache web sunucuları vermektedir. Bu sunucular güvenli erişim ve web üzerinde yönetim sağlayan cgi (Common Gateway Interface) yapısında web arayüzlerini de sağlamaktadır. Bu proje kapsamında apache web sunucusu kurulumu ve yapılandırmasında bahsedilecektir. Apache web sunucusunun tercih edilmesinin ana sebebi geniş uygulama ve kullanım alanı yanı sıra değişik işletim sistemi platformlarında çalışabilmesidir. Internet erişiminin sağlanması işlevini yine Linux işletim sistemi veya FreeBSD/OpenBSD işletim sistemlerinden birisi tarafından verilmesi tasarlanmaktadır. Projenin maliyetlerinin düşürülmesi için daha çok herkes tarafından kolayca bulunup kullanılabilen ve uygulama alanının geniş olduğu işletim sistemleri tercih edilmektedir. Internet erişiminin sağlanacağı işletim sistemin olarak belirlenen Linux işletim sisteminin yanı sıra güvenlik testlerinden uzmanların tercih ettiği ve önerdiği bir diğer işletim sistemin ise OpenBSD Unix’tir. OpenBSD Berkeley üniversitesindeki bir araştırma projesi sonucunda ortaya çıkan ve Unix çekirdeğini kullanan güvenli bir işletim sisteminin. Profesyonel güvenlik sağlayıcı şirketlerinde önerdiği bu sistemin geliştirilme amaçlarından birisi güvenli Internet erişiminin sağlanmasıdır. Kurulumu ve yapılandırması bir güç olan bu sistemin kurulduktan sonra herhangi bir ek yapılmaya ihtiyaç kalmadan güvenli olarak çalışması ise güvenilirliğinin artmasını sağlamıştır. 59 İrfan MACİT Bölüm 4 Apache Web Sunucusu Apache web sunucusu hakkında detaylı bilgi ve belgelere ulaşmak için URL:http://httpd.apache.org/docs-2.0/ adresini veya URL:http://www.belgeler.org adresi kullanılabilir. 2. Windows İşletim Sisteminde Apache Web Sunucu Servisinin Kurulması ve Yapılandırılması Apache web servisi ilk olarak Microsoft Windows işletim sistemi üzerinde nasıl kurulacağından bahsedilecektir. Apache http://www.apache.org/dist/httpd/binaries/win32 web sunucusunu adresinden güncel Internet sürümünü üzerinde temin edebiliriz. Bu web sitesinde çalıştırılabilir kod uzantılı (.exe), derlenmiş Windows dosyası (.msi) ve sıkıştırılmış (.zip) apache web sunucusunun hangisini sistemimize kurmak istiyorsak bilgisayarımıza indirip kurabiliriz. Kurulumun Microsoft Windows versiyonu kurulumu sırasında bir Windows bilgisayar programının kurulumu gibidir. Apache web sunucusun kurulumu sırasında sunulan seçeneklerden yararlanılarak kolayca kurulabilmektedir. Kurulum başladıktan sonra ilk gelen pencere Şekil 1’deki gibidir. Bu pencereden web sunucusunun sürümü ile ilgili bilgiler gelecektir. Burası web sunucusunun kurulumunun ilk aşamasıdır. “Next” düğmesi işaretlenerek kurulumun bir sonraki aşamaya geçmesi sağlanır. Şekil 3.1. Apache web sunucusu kurulum başlangıcı İkinci aşamada web sunucusunun ilgili firmanın lisans anlaşması görüntüsü Şekil 2’de gelmektedir. Bu aşamada lisans anlaşmasının kabul edilip edilmediği sorulu ve kurulum 60 İrfan MACİT Bölüm 4 Apache Web Sunucusu yapan kullanıcıdan burayı dikkat ile okuması istenir. "I accept the terms in the license agreement" işaretlendikten sonra “Next” düğmesi ile kuruluma devam edilir. Eğer ikinci seçenek olan “I do not accept the term in the license agreement ” seçilirse kurulum kesilmesi istenip istenmediği sorulur. Bu soruya “yes” cevabı verilir ise kurulum yarıda kesilir ve programın kurulumu durdurulur. Şekil 3.2. Lisans anlaşması metni Üçüncü aşamaya gelindiğinde apache web sunucusu ile ilgili teknik bilgilerin bulunduğu Şekil 3’teki görüntü ekrana gelir. Burada geliştiricilerin yaptığı yenilikler veya apache web sunucusunun sürümü ile ilgili kısa kurulum bilgileri verilmektedir. “Next” düğmesini işaretleyerek kurulumun diğer aşamasında geçilmesi sağlanır. 61 İrfan MACİT Bölüm 4 Apache Web Sunucusu Şekil 3.3. Apache web sunucusu kısa kurulum bilgisi. Diğer aşama olan dördüncü aşamada apache web sunucusu ve kullanıcı ile ilgili bilgilerin girilmesi beklenir. “Network Domain” kutusu apache web sunucusunun çalışacağı bilgisayar ağının bölge ağ adı verilir. Burada kişisel bir bilgisayar yüklenmesi durumunda “localhost” olarak girilmesi istenir. Eğer bir “DNS” kaydı olan bir ağ kullanılıyor ise örneğin “bizimsirket.com” gibi ağ kaydı yapılmış ise buraya kaydı bulunan bu ağ adının girilmesi beklenir. “Server Name” kutusuna apache web sunucusunun çalışacağı ağ kaydı yapılmış olan bilgisayarın adı tamamı ile girilir, örneğin bilgisayarın ismi “www” ise buraya girilecek olan adres “www.bizimsirket.com” seklindedir. Bu adres bize Internet üzerinden erişecek olan bilgisayarların bu adresi yazdığında ulaşmasını ve ağ üzerinde tanımlı olmasını sağlar. En alt kutucukta “Administrator’s E-mail Adress” kısmında apache web sunucunun cevap bekleyen kullanıcıya hata mesajı vermesi durumunda iletişimde bulunacağı yönetici e-posta adresidir. En altta bulunan "Install Apache HTTP Server programs and shortcuts to" seçimilik düğme ise bilgisayarımızın çalıştığı işletim sisteminin özelliğinden kaynaklanan bir duruma göre yapılandırma yapmamızı sağlar. Microsoft Windows XP,NT ve 2000üzeri işletim sistemlerinde kullanıcıları ayrı olarak açılması sağlandığından her kullanıcı sisteme kendi adı ile açılış sağlar. Bu durumda kullanıcılar aynı bilgisayarı kullansalar bile kendilerine ait olan hesaplara ait haklar ile işlem yapabilirler. Bu durumda yönetici olmayan birisi bu bilgisayarı açması durumunda apache web sunucusunu çalıştıramayacaktır. Eğer bu bilgisayarı kullanan tüm kullanıcıların web sunucusunu çalıştırması isteniyor ise ilk seçenek olan “Run as a service for All Users -- Recommended” seçeneğin işaretlenmesi istenir. Bu kutucuğun işaretlenmesi durumunda apache web sunucusu bir Windows işletim sistemin servisi gibi çalışacaktır . Diğer seçenek olan “Run when started manually, only for me (kişi)” işaretlenmesi durumunda apache web sunucusu sadece bilgisayar kullanıcısı olan “kişi” tarafından çalıştırılabilir. 62 İrfan MACİT Bölüm 4 Apache Web Sunucusu Şekil 3.4. Kurulum ve kullanıcı bilgileri Kurulum tipinin seçildiği beşinci aşamada kurulumun nasıl yapılması istendiği sorulur bu aşamada kurulumu yapan kişi kendi isteğine göre bir takım değişiklikler yapmak istiyor ise buradaki “Custom” seçeneğini seçerek kendine özel kurulum yapabilir. Eğer kurulum yapan kişi “Complete” seçeneğini seçerek devam eder ise kurulum standart olarak daha önce geliştiriciler tarafından belirlenen tüm ayarları ile kurulur Şekil 5. “Custom” seçeneği ile kurulum yapan kullanıcı kurulum sırasında apache web sunucusuna ait dokümanları veya “Runtime” olarak bahsedilen apache web sunucusunun çalıştırma dosyalarını seçmesi beklenir. Apache web sunucusu “Runtime” dosyaları programın çalışması için gerekli olan tüm dosyaları içerdiğinden kurulması gerekir kurulmadığı durumda web sunucusu çalışmayacaktır. Dokümantasyon apache web sunucusunun sürümüne göre yaklaşık olarak 5 megabyte disk alanı kaplamaktadır. Yardım ve yapılandırma ayarları sabit olarak kalacak ve geliştirilme işlemi yapılmayacak ise dokümanların kurulması işlemi iptal edilebilir. Günümüzde web sunucularının disk alanları kısıtlı olmadığı için kurulması tavsiye edilmektedir. 63 İrfan MACİT Bölüm 4 Apache Web Sunucusu Şekil 3.5. Kurulum tipinin seçilmesi Şekil 6’da kurulum seçeneği “Custom” olarak seçildiği durumda sunucu bilgisayardaki kurulum yolu değiştirilmek isteniyor ise “Change” düğmesi ile disk üzerindeki programın kurulacağı dizin değiştirilebilir. Ayrıca “Custom” seçeneği seçildiğinde kurulum sırasında yardım dosyaları da kurulumu sağlanmaktadır. Şekil 3.6. Kurulum yeri ve yardım dosyalarının yerleşiminin seçimi Kurulum yerinin seçimi web sunucusunun kullanacağı dosyalarının yerleşiminin belirlenmesi amacıyla düzenlenmektedir. Genellikle kurulum yeri “C:\Program Files\Apache2 Group” dizini içerisindedir. Beşinci aşamada kurulum 64 İrfan MACİT Bölüm 4 Apache Web Sunucusu seçeneği “Complete” olarak seçilirse kurulum dizini belirtilen yol olarak kalır. Eğer farklı bir kurulum yeri belirlenecek ise “Change” düğmesine basılarak Şekil 7’deki gibi kurulum dizininin yeri değiştirilebilir. Şekil 3.7 Kurulum dizininin değiştirilmesi. Kurulum yerinin değiştirilmesinin tercih nedeni kurulum yapılacak disk alanı her zaman bilgisayarın kendi disk alanı üzerinde olmayabilir. Bazı durumlarda dağıtık dosya sistemi kullanılabilir. Bu durumlarda disk yerinin seçimi önem kazanmaktadır. ”change” düğmesi kullanılarak bu durum düzeltilir. Şekil 3.8. Kurulumun başlatılması. 65 İrfan MACİT Bölüm 4 Apache Web Sunucusu Kurulum ayarları tamamlandıktan sonra artık bilgisayara web sunucusunun kurulması işlemi başlayacaktır. Şekil 8’de “Install” düğmesine basılarak kurulum aşamasına geçilir. Şekil 3.9 Kurulum işlemi. Kurulum işlemi başladıktan sonra disk alanına kurulum için gerekli dosyalar kopyalanmaya başlar. Bu aşamada kurulum programı web sunucusuna ait dosyaları bilgisayarda daha önce ayarladığımız yerlere kopyalanmaya başlamıştır. En son aşamada kopyalanma işlemi bitmiştir. Şekil 10’da “Finish” düğmesine basılarak kurulum işleminin bitirilmesi sağlanır. Şekil 3.10. Kurulumun sonlandırılması. 66 İrfan MACİT Bölüm 4 Apache Web Sunucusu Kurulum işlemi bittikten sonra Windows gezgini ile “C:\Program Files\Apache2 Group” dizinine gidilerek apache web sunucusu kontrol paneli çalıştırılarak web sunucusunun durumu kontrol edilebilir. Bu kontrol panelinde daha sonradan ihtiyaç duyulur ise web sunucusu “stop” düğmesi ile durdurulur. Kontrol panelinde bulunan “start” düğmesi daha önceden durdurulmuş olan web sunucusu yeniden başlatır. Kontrol paneli bize web sunucusunun durumu hakkında bilgi verir. Eğer web sunucusu herhangi bir nedenden dolayı durmuş veya çalışmıyor ise yeniden çalıştırmak için veya diğer araçlar yardımıyla durma nedenini araştırmamıza yardımcı olmaktadır. Windows 2000 veya Windows XP işletim sistemleri Windows NT çekirdeği üzerinde çalıştığından “services” Windows yönetim modülünden servis olarak kontrol edilebilir. Windows 2000 veya Windows XP işletim sistemlerinde yönetimsel araçlar veya bilgisayarımdan yönet mönüsüne girilerek “services” araçlarının bulunduğu mönüye ulaşılır burada Windows işletim sistemi servisi olarak görünen “apache” servisi ile web sunucusunun çalışması kontrol edilebilir. Eğer istenirse Windows bilgisayar programlama araçları ile servislere ek yazılımlar geliştirilerek web sunucunun kontrol edilmesi sağlanır. Bu sistem yöneticisine bulunmadığı başka bir ortama gsm mesajı gönderilmesini veya çağrı bırakılmasını sağlayan mekanizmaların çalışmasını sağlar. Yüksek bulunurluluk gerektiren çalışma durumlarında bu programlama araçları sistem yöneticilerinin işlerini oldukça kolaylaştırmaktadır. Şekil 3.11. Windows Servis Penceresinde Apache web Sunucu Servisi 67 İrfan MACİT Bölüm 4 Apache Web Sunucusu Apache web sunucusu ayarlarının yapılması işlemi kurulum işleminin hemen ardından yapılması beklenir. Genellikle Windows işletim sisteminde kurulum sonrası ayarlamalara gerek duyulmamaktadır. Bir betik dili desteği verilecek ise bu kurulum yapılan dizindeki “conf” dizini içerisinde bulunan httpd.conf dosyası bir kelime işlemci ile açılarak gerekli düzeltmelerin yapılması gerekir. Bu düzeltmeler öncelikle sunucunun çalışacağı port numarası sunucu ismi ve bağlantı kurulacak e-posta adresleri gibidir. Windows işletim sisteminde olduğu gibi httpd.conf dosyası bir kelime işlemci ile açılarak gerekli düzeltmelerin yapılması gerekir. Bu yapılandırma dosyasının bir çok ayarı Windows işletim sisteminin aynısıdır. Farkları sadece dizin yapılarında değişmektedir. Dizin yapısı Windows işletim sisteminde “C:\Program Files\Apache2 Group” şeklindedir. Linux veya unix işletim sisteminde dizin yapısı ise “/usr/var/www” veya “/home/www” şeklindedir. Daha sonra betik dili veya veritabanı desteği gibi verilecek desteklere göre yapılandırma ayarları oluşturulur. Burada daha çok PHP betik dili ile ilgili ayarların nasıl yapılacağından bahsedilecektir. PHP betik dili ile geniş açıklama ayrı bir bölümde ele alınacaktır. PHP betik dili kurulumu için gerekli dosyaları http://www.php.net/downloads.php adresinden indirilebilir. bu web adresinde bulunan zip uzantılı dosya bilgisayarın kök dizininde açılacak olan “C:\PHP” dizinine kopyalanarak sıkıştırılmış dosya açılır. Bu dizin içerisine açılan dosyalar içerisinde bulunan “php.ini-dist” isimli dosyayı “php.ini” olarak ismini değiştirerek Windows işletim sisteminizin bulunduğu dizine kopyalayınız. Bu dosya içerisinde kullanmak istediğimiz satırları aktif hale getirmek için satır başlarında bulunan ; işaretini kaldırmamız yeterlidir. Bu dizin kullanmakta olduğunuz işletim sisteminin özelliğine göre değişmektedir. Windows işletim sistemini kurduğunuz kök dizi “C:\windows” veya “C:\winnt” şeklinde olabilir. Kopyalama işleminden sonra “php.ini” dosyasını bir kelime işlemci ile açarak “extention_dir” satırını bulunuz. Bu satır php yorumlayıcısının hangi uzantılar ile ilişkili olarak çalışacağını gösteren ayarların olduğu dizini işaret eder. Bu dizin “php_xxx” ile başlayan dll uzantılı dosyaların olduğu dizindir. Php betik dili ile ilişkili olarak kullanmak istediğimiz php uzantısından başka bir uzantıda olan betiklerin ilişkili olduğu dosyaları bu dizine kopyalamamız gerekir. Bu satırdaki ayarlama aşağıdaki gibi olmalıdır. extention_dir = C:\PHP\extention Bu dizinde php betik dilinin görüntü (images) dosyaları ile ilgili olarak kullanılan fonksiyonları kullanmak için “php.ini” dosyasında bulunan bir satıra extention=php_gd.dll yazmak yeterlidir. Bu satır yazıldıktan sonra artık php ile görüntülere ait olan fonksiyonları 68 İrfan MACİT Bölüm 4 Apache Web Sunucusu kullanabiliriz. Aşağıdaki satırlar ise Windows işletim sisteminde çalışan apache web sunucusunun çalıştırılmasını sağlayan dll dosyasının dizin yerini göstererek yükleyen ve php’nin bir uygulama olduğunu belirten tanımlamadır. Bu tanımlama sonucunda php uzantılı dosyalar apache web sunucusu tarafından Windows işletim sisteminden bir uygulama gibi çağrılacaktır. LoadModule php4_module c:/php/sapi/php4apache2.dll AddType application/x-httpd-php .php Diğer değişiklikler ve yapılandırma ayarlarının bir çoğu Linux işletim sistemindeki gibi yapılandırılmaktadır. Sanal web sunucusunun oluşturulması işlemine “virtual hosting” denmektedir. İki türlü olarak yapılandırılabilir. İlki IP (Internet Protokolü) numarası tabanlı yapılandırma, ikincisi dns (Domain Name Server) tabanlı yapılandırmadır. Detaylı bilgi Linux işletim sistemindekinin aynısı olarak yapılandırılmaktadır. Unutulmaması gereken önemli bir nokta apache web sunucusunun yapılandırma dosyalarında bir değişiklik yapıldığında değişikliğin geçerli olabilmesi için sunucuyu tekrar çalıştırmak gerekir. Bu durumda web sunucu yapılandırma dosyasını tekrar okuyarak değişikliğe göre yeniden başlatılacaktır. 3.3 Linux İşletim Sisteminde Apache Web Sunucu Servisinin Kurulması ve Yapılandırılması Önceki bölümde web sunucusunun daha önceden var Windows işletim sistemi altında kurulması ve yapılandırmasından bahsedilmişti. Linux veya unix işletim sisteminde web sunucusu işletim sistemi kurulurken sunucu olarak yapılandırıldığında kendiliğinden bilgisayara yüklenir. Bu işlem işletim sistemi kurulan bilgisayarın sunucu olarak kullanılması durumunda geçerlidir. Eğer bilgisayarımızı masa üstü olarak kurulu ise yine Apache web sunucusunu yükleyebiliriz bunun için yapılması gereken kullandığımız Linux dağıtımının cdrom medyasına sahip olmamız veya bilgisayarımızın internet’e bağlı olması yeterlidir. Kullanılan dağıtımlarda çok değişiklik yoktur. Unix işletim sistemi kullanılıyor ise burada önemli olan bilgisayarın mimarisine bağlı olarak değişmektedir. Aynı durum Linux dağıtımlarını da ilgilendirir örneğin sun microsystem ultra sparc 4 veya 5 işlemcili bir bilgisayara Linux (RedHat, Gentoo, Gelecek, SuSE v.s) veya unix (Solaris, FreeBSD, OpenBSD, SCO v.s.) dağıtımı kurmak istiyorsak bu mimariye uygun bir dağıtım seçmemiz 69 İrfan MACİT Bölüm 4 Apache Web Sunucusu gerekmektedir. Birçok dağıtım firması bunları göz önüne alarak dağıtımlarını medya üzerine yerleştirmektedir. Bu kitapta intel işlemci mimarisine uygun olan RedHat Linux dağıtımı ve kurulum ayarlarından bahsedilecektir. Genellikle Linux dağıtımlarının hepsinde aynı paketleme sistemi ile gelmektedir. RedHat dağıtımının rpm ve tar uzantılı dosyalara desteği olduğu için her iki şekilde de kurulabilmektedir. Bunun kurulumları sadece paketleri bilgisayara yüklerken bazı komut değişikliklerine gerek duyduğu bilinmektedir. Apache web sunucusu paketi debian dağıtımlarında tar veya deb uzantılı gelmektedir. Bu tamamen dağıtımın veya geliştiricilerin kendi uygulama genelleştirme politikaları ile ilgilidir. Linux işletim sistemi dağıtımının seçilmesi kurulumun başlatılması ve komutların verilmesini değiştirebilir. Bu projede daha çok rpm uzantılı paketlerin kullanıldığı işletim sistemi esas kabul edilerek anlatılacaktır. Bu tip uzantılı dosyaların seçilmesinin diğer bir nedeni kurulum komutlarının çok kolay olması ve parametrelerinin akılda kalır olmasıdır. Önce bilgisayarımızda Apache web sunucusunun bulunup bulunmadığını test etmemiz gerekmektedir. Bunun için komut satırında root yetkisiyle sorgulamamız gerekmektedir. #rpm –q Apache komutu ile gelen cevaba göre tekrardan bilgisayarımıza Apache web sunucusunu yükleriz. Bunun için komut satırında #rpm –i Apache yazarak web sunucusunun yüklemesini sağlarız. Yükleme sonunda ekrana gelen yazıda apahce web sunucusu bilgisayarınıza başarı ile yüklendi yazmaktadır. Bu aşamadan sonra Yapılandırma dosyaları genellikle “/etc/www” veya “/etc/Apache” dizini gibi olabilmektedir. Yapılandırma işlemine başlarken kullanacağımız kelime işlemci (vi, emacs, xedit v.s.) ile yapılandırma ayarlarının bulunduğu dizine giderek (burada/etc/apache olduğu varsayılmıştır) httpd.conf dosyası açılarak önce ServerName satırı bulunarak önündeki # (diyez) işareti kaldırılır. Bu satıra sunucunun çalıştığı FQDN (Fully Qualyfied Domain Name) olarak bilinen sunucunun tüm Internet kayıt adres ismi yazılır. Bu işlem daha çok isim tescili “Domain Registrar” servisleri tarafından yapılır. Bu tür kayıtları tutan veya bu hizmeti veren firmalar tüm adresleri http://www.internic.net adresindeki yönergelere göre yaparlar veya bir DNS (Domain Name Service) servisi veren bir firmaya kayıt yaptırarak kullanırlar. 70 İrfan MACİT Bölüm 4 Apache Web Sunucusu Aşağıdaki yapılandırma ayarında web sunucusunun çalışacağı kök dizinin neresi olduğunu göstermektedir. Bunun anlamı sunucu bilgisayar yazılan dizin içerisinde çalışmaktadır. Bazı durumlarda sunucu bilgisayar NFS (Networked File System) şeklinde bir dizin hizmeti olan sistemde çalışabilir ve bağlanılan dizin başka bir bilgisayarda olabilir. Bu durumda bu satıra bağlanılan (mount edilen) dizin yazılır. Örneğin sunucunun çalıştırıldığı bilgisayar www.bizimsirket.com adresine sahip bilgisayarda yapılandırma ve dokümanların bulunduğu bilgisayar ise NFS sisteminde URL:nfs://doc.bizimsirket.com adresinde olsun, buradaki doc bilgisayarının “/var/htdocs” dizinine www sunucu bilgisayarı “/etc/htdocs” olarak bağlansın. Web sunucusunun çalıştığı bilgisayar dizini aşağıdaki gibi olacaktır. # Do NOT add a slash at the end of the directory path. # ServerRoot "/etc/httpd" # # # # # ScoreBoardFile: File used to store internal server process information. If unspecified (the default), the scoreboard will be stored in an anonymous shared memory segment, and will be unavailable to third-party applications. Dokümanların bulunduğu dizin ise NFS ile başka bir biligisayarda bağlandığı için biz aşağıdaki satıra ise “/etc/htdocs” yazarak yapılandırmayı tamamlayacağız. Bu tanımlama bize diğer bilgisayarda bulunan ve NFS hizmeti ile sanki bizim bilgisayarımızda bir dizinde çalışıyormuş gibi ayarlama yapmamıza olanak verir. # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/etc/htdocs” # # Each directory to which Apache has access can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). Yukarıda bahsedilen durum NFS kullanılan gerekli durumlara bir örnek olarak verilmiştir. Genellikle bu durum istisnadır. Eğer kurulum yaptığımız bilgisayar bir NFS sisteminde değil ve bizde buna ihtiyaç duymuyorsak yapılandırma ayarları RedHat dağıtımlarında doküman dizini“/var/www/html/” altında standart olarak tanımlıdır. Bu satırları değiştirdiğimizde aşağıdaki yazan satırlarada aynı dizin yolunu girmemiz gerekir. # This should be changed to whatever you set DocumentRoot to. # 71 İrfan MACİT Bölüm 4 Apache Web Sunucusu <Directory "/var/www/html"> # Yapılandırma ayarlarında önemli ve dikkat edilmesi gereken bir nokta ise PID (Process IDentification) olarak tanımlanan ve çalışma süreç bilgisidir. Bu bilgi apache web sunucusu başladığında tutulan bir dosyadır. Sistem yöneticisi web sunucu servisini başlattığında ve sonlandırdığında bu dosyaya bir sistem sinyali gönderilir. Bu sinyalin gönderilmesinin amacı sistemin çalışmasının çekirdek tarafından kontrolünü sağlamaktır. Örneğin sistemin yeniden başlatılması için HUP (HangUp) veya unix sinyali olan USR1 sinyali gönderildiğinde web sunucusu yapılandırma ayarlarını tekrar okuyarak yeniden başlatılır. # PidFile: The file in which the server should record its process # identification number when it starts. # PidFile run/httpd.pid # Apache web sunucusunun çalışacağı port numarasını değiştirmek için aşağıdaki yazılı olan satırdaki geçerli numarayı değiştirmemiz yeterlidir. Bu değişiklik apache web sunucusunun bilgisayarımızın farklı bir port numarası ile çalışmasını sağlar. Port numarasının değişikliğin temel sebebi web sunucumuz bir güvenlik duvarı (FireWall-FW) arkasında çalışması istendiğinde veya bu port numarasını başka bir bilgisayara port yönlendiriciler ile yönlendirildiğinde ihtiyaç duyulmaktadır. Burada önemli olan bir konuda web sunucumuz bir içağ (Intranet) çalışıyor ise ve web sunucusunun çalıştığı bilgisayara dışarıdan yönlendirilecek veya ilerletilecek (forwarding) olan port numaralarının kontrolünü de sağlar. # #Listen 12.34.56.78:80 Listen 80 # Linux işletim sisteminde kullanıcılar ve gruplar sınıflandırılmıştır. Bu sınıflandırma servis hizmetleri içinde geçerlidir. Web sunucu bir servis mekanizması içerisinde çalıştığı için çekirdek sistemine bunun bilgisin verilmesi gerekir. Bu bilgi aşağıdaki satırda verilmektedir. # don't use Group #-1 on these systems! # User apache Group apache 72 İrfan MACİT Bölüm 4 Apache Web Sunucusu # Apache web sunucusu bazı durumlarda istemcilere hata mesajı gönderebilir. Karşılaşılan bu durumlarda sistem yöneticisinin bilinmesi veya iletişim kurulacak e-postanın istemciye gönderilmesi gerekir. Yapılandırma dosyasında bu isim ve e-poasta adresini aşağıdaki satırda belirleyerek gerekli olduğu durumlarda istemcilerin iletişim kurmasını sağlarız. # ServerAdmin: Your address, where problems with the server should be # e-mailed. This address appears on some server-generated pages, such # as error documents. e.g. [email protected] # ServerAdmin [email protected] # Sunucun kendi kendini tanımlaması için aşağıdaki satırın yazılması gerekir. Web sunucusunun adresinin DNS tanımlamaları yapılmış ise buraya bu adres ve port numarasın girilmesi gerekir. Bir çok dağıtımda gelen web sunucusu bu adres girilmediği için çalışmayacaktır. “ServerName” satırı aktif olmadığı durumda sunucu tarafında oluşturulan yönlendirme (server-generated redirection) özelliği çalışmayacaktır. Eğer DNS kaydı yapılmamış bir sunucu kullanıyorsanız bu durumda buraya sunucu bilgisayarın IP adresini girmeniz gerekecektir. # #ServerName new.host.name:80 ServerName www.bizimsirket.com:80 # # Redirect permanent /etc/htdocs http://yedek.bizimsirket.com/var/www/html # Web sunucularında çalışacak sayfaları değişik programlama dilleri ile oluşturmak mümkündür. Betik dilleri veya Internet’in temel betik dili olan html kodları ile oluşturulan web sayfalarını uzantılarını tanımlanması gerekmektedir. Web göz atıcıları (browser) ile internet üzerinde gezinirken adres olarak yazdığımız yerde hangi betik dilinin geçerli veya öncelikli olduğunu belirlememiz gerekecektir. PHP veya htm uzantılı bir web sayfasının hangisinin web sunucu üzerinde dizine yönlendiğinde çalışacağını bu sıralamada belirlemek mümkündür. Bunu şu şekilde açıklayabiliriz; web göz atıcı adres çubuğuna girilen adresi 73 İrfan MACİT Bölüm 4 Apache Web Sunucusu DNS kaydını arayarak bulur ve 80 numaralı port’tan erişim kurmaya çalışır. Bu sırada sunucu isteğin sıralanacağı sayfa şekline göre sunucudaki doküman dizininden ilgili dosyayı çağırır. Bu dosyalar index.html, index.htm veya index.php olabilir. İste bu sıraların hangisinin bağlantı esnasında geçerli ve öncelikli olduğunun belirlenmesi işleminde aşağıdaki satırlardaki sıralama kullanılır. Aşağıdaki sıralamada bir göz atıcı bu sunucuya ulaşmaya çalıştığında sunucunun doküman dizininde bulunan dosyalardan index.php’yi öncelikle istemci yani göz atıcı tarafına göndermeye çalışacaktır. Sıralama ilk olarak index.php, sonra index.html şeklindedir. Açıklamayı şu şekilde genişletebiliriz; göz atıcı adres çubuğuna http://www.bizimsirket.com yazıldığında sunucu göz atıcıya ilk olarak index.php dosyasını göndermeye çalışacak ve göz atıcıda bunu görmeye çalışacaktır. # DirectoryIndex index.php index.html index.html.var # Web sunucularda Türkçe problemi karşılaşılan problemlerden birisidir. Web sunucusu değişik dillerde destek vermek üzere yapılandırılmaktadır. Dünyadaki bir çok dilin yazımında kullanılan alfabe farklıdır. Bu farlılıklar çeşitli sorunları da beraberinde getirmektedir. Örneğin Japonca’nın kendine özgü bir dili ve yazım kuralı vardır. Aynı şekilde Türkçe’de bulunan bir çok harf İngilizce’de bulunmamaktadır. Bu durumda Türkçe harflerin görülmesinin sağlanması gerekmektedir. Apache web sunucusunda bunun için karakter setlerini ve dil kodlamasının yapılandırılması gerekir. Geçerli dil kodlaması için aşağıdaki satırı yazmak yeterlidir. Bundan sonraki aşamada dil kodunun eklenmesini sağlayan satır yazılır. # DefaultLanguage tr # AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage tr nl en et fr de he el it ja pl kr pt .tr .nl .en .et .fr .de .he .el .it .ja .po .kr .pt 74 İrfan MACİT AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage Bölüm 4 Apache Web Sunucusu nn .nn no .no pt-br .pt-br ltz .ltz ca .ca es .es sv .se cz .cz ru .ru tw .tw zh-tw .tw hr .hr Dil kodlaması geçerli dil kodlama yapılandırmasında sonra dil önceliğinin göz atıcılara bildiren satırı yazmak gerekir. Bu satırda web sunucunun dil önceliği belirlenmiştir. # LanguagePriority tr en da nl et fr de el it ja kr no pl pt pt-br ltz ca es # Dil öncelikleri belirlendikten sonra geçerli kodlama sayfasının eklenmesine gelir. Bu sayfada uluslar arası karakter seti tablosunda belirlenen kodlama şekli kullanılır. Her dil ve kodlamasının uluslararası yapı tablosu bulunmaktadır. Genellikle o ülkede konuşulan dile ve yazım kurallarına göre çeşitli kısaltmalar veya simgeler bulunmaktadır. Bu ifadeleri gösteren tablolarda web sayfaları tasarlanırken kullanılacak olan dil kodları da html veya web kodları içerisine gömülmektedir. Bu kodlamalar web sayfalarının hangi dilde nasıl görüneceğini fontlara kadar bir çok değişkeni etkilemektedir. Türkçe için kullanılan karakter seti tablosu ISO-8859-9 ve latin9 şeklindedir. Geçerli kodlamalar ve diğer ülke karakter setleri tablolarına ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets dizininden ulaşılabilir. # AddDefaultCharset ISO-8859-9 # # Commonly used filename extensions to character sets. You probably # want to avoid clashes with the language extensions, unless you # are good at carefully testing your setup after each change. # See ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets for # the official list of charset names and their respective RFCs # AddCharset ISO-8859-1 .iso8859-1 .latin1 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddCharset ISO-8859-3 .iso8859-3 .latin3 AddCharset ISO-8859-4 .iso8859-4 .latin4 AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk AddCharset ISO-2022-JP .iso2022-jp .jis AddCharset ISO-2022-KR .iso2022-kr .kis AddCharset ISO-2022-CN .iso2022-cn .cis 75 İrfan MACİT Bölüm 4 Apache Web Sunucusu AddCharset Big5 .Big5 .big5 # For russian, more than one charset is used (depends on client, mostly): AddCharset WINDOWS-1251 .cp-1251 .win-1251 AddCharset CP866 .cp866 AddCharset KOI8-r .koi8-r .koi8-ru AddCharset KOI8-ru .koi8-uk .ua AddCharset ISO-10646-UCS-2 .ucs2 AddCharset ISO-10646-UCS-4 .ucs4 AddCharset UTF-8 .utf8 # Apache bilgisayar sunucu sistemlerinde bazı durumlarda birden fazla web sitesi tek sunucuda barındırılabilir. Sanal web sunucuları tanımlama ve yapılandırmaları temel olarak beş kısımdan oluşmaktadır. Buna sanal web sunucusu kullanma denir. Sanal web sunucuları iki şekilde barındırılabilir. Birincisi IP tabanlı web sunucusu tutma, ikincisi isim tabanlı web sunucusu tutmadır. IP tabanlı sunucu tutma işleminde her web sitesi için ayrı IP adresine ihtiyaç yoktur. Örneğin 1.2.3.4 nolu IP adresine birden fazla sanal web sunucusu oluşturulabilir. Bu adreslerin DNS tanımlamaları yapılmalıdır. Eğer DNS tanımlamaları yapılmadı ise web sunucuları oluşturulamayacaktır. Web sunucusunun oluşturulması sırasında tanımlama kısmına sadece IP numarası girilir ise DNS’te reverse dns tanımlamasının yapılması gerekir. Aksi takdirde IP numarasının kaydı bulunamadığı mesajı gelecek ve web sunucusuna erişilemeyecektir. Aşağıdaki yapılandırma örneğinde her IP adresi DNS kayıtları yapılarak bir web sunucusu üzerinde çalışmaktadır. Listen www.bizimsirket.com:80 <VirtualHost www. bizimsirket.com> ServerAdmin webmaster@mail. bizimsirket.com DocumentRoot /groups/bizimsirket/www ServerName www.bizimsirket.com ErrorLog /groups/bizimsirket/logs/error_log TransferLog /groups/bizimsirket/logs/access_log </VirtualHost> <VirtualHost www.digersirket.org> ServerAdmin [email protected] DocumentRoot /groups/digersirket/www ServerName www.digersirket.org ErrorLog /groups/digersirket/logs/error_log TransferLog /groups/digersirket/logs/access_log </VirtualHost> 76 İrfan MACİT Bölüm 4 Apache Web Sunucusu Bu tanımlamaları açıklayacak olursak temel olarak altı kısımdan oluştuğunu söyleyebiliriz. İlk kısımda yapılandırma dosyasında DNS kaydı yapılmış hangi web adresi ve dinleyeceği port numarasının bildirimi vardır. sanal web sunucusunun tanımlanması vardır. Listen www.bizimsirket.com:80 İkinci kısımda sanal sunucunun adresi ve yapılandırma ayarlarının olduğu satır yeralır. Bu satır bize sunucumuzun hangi kayıtlı adres üzerinden çalışacağı bilgisi vardır. <VirtualHost www.bizimsirket.com> Üçüncü kısımda sunucu yetkilisinin adı yeralır. Sunucu arızası veya herhangi bir kırık link veya diğer öenmli durumların bildirileceği sistem yetkilisi tanım olarak anılır. ServerAdmin webmaster@mail. bizimsirket.com Dokümanların yer alacağı dizinin tanımlanması ise dördüncü kısım olarak belirteceğimiz yerde bulunmaktadır. Buradaki dizin yolu kendi bilgisayarımızda olabileceği gibi NFS üzerinde başka bir bilgisayar üzerinde de bulunabilir. DocumentRoot /groups/bizimsirket/www Beşinci kısım sunucunun adının yer aldığı bölümdür. Bu bölümde DNS kaydı yapılmış olan kayıt ismi vardır. ServerName www.bizimsirket.com Altıncı kısımda sunucu hata ve erişim kayıtlarının tutulduğu dizinleri yeri belirtilir. İstenmesi durumunda syslogd sunucu sistemi devreye alınarak diğer baçka kayıtlarında buradan tutulması mümkündür. Bu kısmın sonunda sanal web sunucusunun bitirildiği başlık etiketi bulunur. ErrorLog /groups/bizimsirket/logs/error_log TransferLog /groups/bizimsirket/logs/access_log </VirtualHost> 77 İrfan MACİT Bölüm 4 Apache Web Sunucusu İsim tahsisli web sunucusu ise bir web sunucusunun DNS kaydı üzerinde birden fazla web sunucusunun tutulması işlemidir. Bu işlem httpd.conf dosyası tanımlama kısmında aşağıdaki yapılandırma satırı eklenerek oluşturulur. Bu satırda web sunucusunun hangi web sitelerine hizmet vereceği yazılır. NameVirtualHost *:80 <VirtualHost *:80> ServerName www.bizimsirket.com ServerAlias bizimsirket.com *.bizimsirket.com DocumentRoot /www/bizimsirket </VirtualHost> <VirtualHost *:80> ServerName www.digersirket.com DocumentRoot /www/digersirket </VirtualHost> Bazı durumlarda web sunucularında bir adresin birden fazla karşılığı olması istenmektedir bu durumda ise aşağıdaki satırları yapılandırma dosyasında “VirtualHost” kısmına ekleyerek bu işlemi sağlarız. ServerAlias www.digersirket.com *.digersirket.com Kullanıcılar kurumlarında bazı durumlarda kendilerine ait web sayfalarının olmasını veya web sayfalarını kendileri oluşturmak isterler. Böyle durumlarda yapılandırma dosyasına “Userdir” satırı yazılarak tanımlamalar yapılır ve her kullanıcıya kendisine ait dizin içerisinde web sayfası oluşturulmasına izin verilir. Bu yapılandırma ayarı Linux sistemi üzerinde bulunan kullanıcıları kendi ev dizinlerinde web sayfalarının tutulmasına olanak tanır. Userdir http://www.bizimkurum.org.tr/~kullanıcı1 Linux veya unix altında betik dillerinin desteği genelde modüller ile verilmektedir. Modül bildirimi sistemin kurulacağı yapı ve kullanılacak betik dilleri ile birlikte web sunucusunun üzerinde çalışacak olan yapının da önemi vardır. Örneğin PHP betikleri ile yapılandırılan bir sistemde Perl betik dili ile CGI programlama yapılamayacak ise bu modüllerin de 78 İrfan MACİT Bölüm 4 Apache Web Sunucusu yüklenmesinin bir anlamı olmayacak ve güvenlik açlıklarının çıkmasına sebep olabilecektir. Modül olarak bir PHP desteği Linux işletim sisteminde aşağıdaki gibi verilebilmektedir. <IfModule mod_php3.c> AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3-source .phps AddType application/x-httpd-php3 .phtml </IfModule> <IfModule mod_php4.c> AddType application/x-httpd-php .php AddType application/x-httpd-php .php4 AddType application/x-httpd-php-source .phps </IfModule> Yukarıdaki ilke blokta php sürüm 3 desteğinin verilişi, alttaki blokta ise php 4 sürümünün desteği verilişi gösterilmiştir. Bu satırların yazılması ile php modülleri yüklendiğinde php uzantıları ve çalışma zamanı dosyalarının (runtime) apache web sunucusundan çalıştırılması mümkün olacaktır. Web sunucularında yetkilendirme işlemi çok kapsamlı olarak yapılandırılması gereken önemli bir durumdur. Web sunucunuza belirlediğiniz kişilerin erişimine izin verilmesi istendiğinde “allow from all” satırında işlem yapılır. <Directory> Allow from all </Directory> Diğer bir durum ise bir bizine belirli kullanıcıların erişmesini durumudur. Bu durumda ise .htaccess dosyası oluşturulur. Apache web sunucusu bu dosyayı kontrol ederek dizin veya dosya erişiminde izin verir. Bu işlemler genel olarak üç aşamaya ayrılabilir. Birinci aşamada kullanıcı ve parolaların bulunduğu bir dizin oluşturulur. Bu dizine tüm kullanıcıların erişiminin olabileceği “/usr/local” dizini altında olması tercih edilmelidir. Çünkü kullanıcılar bu dizinde bulunan erişim bilgilerinin yetkilendirme işlemleri ile dosya veya dizin erişimine sahip olacaktır. İkinci aşamada oluşturduğumuz bu dizin altına “.htaccess” içeriği aşağıdaki gibi olan satırları ekleriz. 79 İrfan MACİT Bölüm 4 Apache Web Sunucusu #bizim şirket özel erişim alanı AuthName “Sirket Özel Erişim Alanı” AuthType Advaced AuthUserFile /usr/local/sirket/sifre Require valid-user En son aşama olan üçüncü aşamada ise kullanıcıların ve şifrelerinin oluşturulması işlemi vardır. Burada komut satırından gerekli olan parametreler verilerek bu şifrelerin oluşturulması sağlanır. burada dikkat edilmesi gereken bir nokta “-c” parametresi yalnızca dosya oluşturulurken sadece bir kez girilir ve daha sonra bu parametre eğer bu dosya yeniden oluşturulmayacaksa kullanılmaz.Kullanıcı1 için şifre oluşturulması sırasında ekrana gelen şifre girme mesajında şifre girilirken ekranda güvenlik nedeniyle herhangi bir karakter görünmez. E#htpasswd –c /usr/local/sirket/sifre kullanici1 Adding password for kullanici1 New pasword: Re-type new password: Bu işlemin sonucunda “/usr/local/sirket/sifre” dosyasında oluşturulan kullanıcılar ve bun kullanıcılara ait şifreler bulunur. herhangi ir web göz atıcısından ilişki kurulan bu dizine ulaşılmaya çalışıldığında istemci ekranına kullanıcı ve şifresinin girilmesini isteyen bir mesaj kutucuğu çıkar. Kullanıcı ve şifre doğrulandığı durumda göz atıcının dizine erişimine izin verilir. 80
Benzer belgeler
08220 Internet Programcılığı II
3.3 Linux İşletim Sisteminde Apache Web Sunucu Servisinin Kurulması ve
Yapılandırılması
Önceki bölümde web sunucusunun daha önceden var Windows işletim sistemi altında
kurulması ve yapılandırmasınd...