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

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...

Detaylı