Yahya Demircan. Muhittin Altınkaya

Benzer belgeler
SQL e GİRİŞ. Çağlar Ülküderner caglar@tubitak.gov.tr

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

Mysql Veritabanı Komutları

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

VERİTABANI Veritabanı Yönetimi

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

VERİ TABANI YÖNETİM SİSTEMLERİ I

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

Bölüm 4: DDL Veri Tanımlama Dili

1.PROGRAMLAMAYA GİRİŞ

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

İnternet Programcılığı

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Bölüm 10: PHP ile Veritabanı Uygulamaları

Kets DocPlace LOGO Entegrasyonu

SQL Komutları (2) Uzm. Murat YAZICI

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

ACCESS PLATFORMUNDA SQL

Oracle da kullanılan veri tipleri:

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

Veritabanı. SQL (Structured Query Language)

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Veritabanına Uygulanması

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

İNTERNET PROGRAMCILIĞI - II

SQL e Giriş. Uzm. Murat YAZICI

VERİTABANI ve YÖNETİMİ

SORGULAR. Öğr.Gör.Volkan Altıntaş

Veri Tabanı-I 5.Hafta

Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)

VERİ TABANI YÖNETİM SİSTEMLERİ I

Web Servis-Web Sitesi Bağlantısı

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

SORGULAR VE ÇEŞİTLERİ II

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Hafta IV. Öğr. Gör. Murat KEÇECĠOĞLU

Laboratuvar 2 Tek Kayıt Fonksiyonları

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK

VERİ TABANI YÖNETİM SİSTEMLERİ I

SQL Uyarı Programı Kurulum ve Kullanımı

VERİ TABANI YÖNETİM SİSTEMLERİ-II

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Data Programming SQL Language

Oracle Database 11g: Introduction to SQL

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

VERİTABANI. SQL (Structured Query Language)

VERİTABANI Veritabanı Sorgulama

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Çok tablolu sorgulamalar

Veritabanı Uygulamaları Tasarımı

Internet Programming II

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

Veri Tabanı Tasarım ve Yönetimi

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Internet Programming II

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

SQL Kod ile Tablo Oluşturma

çindekiler 01. Kurulum

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

UZAKTAN EĞİTİM MERKEZİ

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

PHP 1. Hafta 1. Sunum

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Veri Tabanı Programlamaya Giriş

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu tabloya göre yapacağız.

FAKS SUNUCU EĞİTİM DÖKÜMANI

SQL (Structured Query Language)

SQL Query and Table Application

MAC İşletim Sistemine Sahip Makineler İçin Elektronik İmza Kurulumu

Network üzerinde MATLAB kurulması

Veri Tabanı Yönetim Sistemleri Bölüm - 6

CHAPTER 9. DHCP Server

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Web Tasarımının Temelleri

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Transkript:

Özet... 4 1. Sunucu ve İstemci... 5 1.1. Mail Sunucu:... 5 1.2. Ftp Sunucu (File Trasfer Protocol):... 6 1.3. Web Sunucu:... 6 1.4. Veritabanı Sunucu:... 6 1.5. Web-Veritabanı ilişkisi:... 6 1.6. MySQL Neden Gerekli... 7 1.7. PHP Neden Gerekli... 7 1.8. Apache Neden Gerekli... 7 2. Araçların Kurulumu... 8 2.1. Araçların RPM paket olarak kurulması... 8 2.1.1. Apache Web Sunucu Kurulması... 8 2.1.2. PHP nin Kurulması... 9 2.1.3. MySQL kurulması... 10 2.2. Araçların Modul (Statik) olarak kurulması:... 11 2.2.1. MySQL Kurulumu... 11 2.2.2. Apache ye Gerekli Modüllerin eklenmesi... 13 2.2.3. OpenSSL Kurulumu... 13 2.2.4. PHP Kurulumu... 14 2.2.5. Apache Kurulumu... 14 2.2.6. Apache de ayarlar... 15 3. MySQL Veritabanı Yönetimi... 17 3.1. Root kullanıcısına şifre vermek... 17 3.2. Sunucuya Bağlanmak ve Sunucu Yönetimi... 17 3.2.1. Sunucu Yönetimi, Kullanıcı Oluşturma ve Hakları... 17 3.3. MySQL Consol Komutları... 19 3.3.1. Tablo Onarmak... 20 3.3.1. Tablo Kontrol Etmek... 20 3.4. Konsolda Sorgu Komutları ve Fonksiyon Kullanımı... 20 3.4.1. Matematiksel Fonksiyonlar... 21 3.4.2. String Fonksiyonlar... 21 3.4.2. Tarih ve Zaman Fonksiyonları... 22 3.4.3. Çeşitli Fonksiyonlar... 24 3.4.4. MySQL Veri Türleri... 25 3.4.5. Veritabanı ve Tablo işlemleri için SQL Komutları... 25 3.4.6. Örnek Veritabanı ve Tabloları Oluşturma... 27 3.5. SQL Veri İşleme Komutları... 29 3.5.1. Kayıt ekleme... 29 3.5.2. Kayıt güncelleme... 30 3.5.3. Kayıt silme... 30 3.5.4. Magaza veritabanında oluşturulmuş örnek kayıtlar... 31 3.5.5. Kayıt sorgulama... 31 3.5.6. Şartsız (koşulsuz) kayıt sorgulama... 32 3.5.7. Şartlı kayıt sorgulama... 33 3.5.8. Kısıtlı bilgilere göre sorgulama... 36 3.5.9. Boş ve dolu alanlara göre sorgu... 38 3.5.10. Sorgu sonucu dönen kayıtların sıralanması... 39 3.5.11. SQL fonksiyonları... 40 3.5.12. İki veya daha fazla tablonun beraber sorgulanması (JOIN)... 42 1

3.5.13. Tablo adlarına takma ad (Alias) verme... 43 3.5.14 Kayıtları gruplama... 44 4. PHP (Personal Home Page)... 47 4.1. Tarihçe... 47 4.2. PHP nedir?... 47 4.3. PHP nin test edilmesi... 47 4.4. PHP yazım kuralları... 48 4.5. HTML ve PHP kodlarını iç içe kullanma... 49 4.6. PHP kodlarını tek başına kullanma... 50 4.7. Özel karakterler... 51 4.8. Değişkenler ve veri türleri... 51 4.8.1. Veri türleri... 51 4.8.2. Değişkenler... 52 4.8.3. Sabitler... 53 4.9. İşlemciler (Operatörler)... 54 4.9.1. Atama operatörü... 54 4.9.2. Aritmetik operatörler... 54 4.9.3. İki string i birleştirme (Concotenation)... 55 4.9.4. Birleşik atama işlemleri... 55 4.9.5. Karşılaştırma operatörleri... 57 4.9.6. Mantıksal operatörler... 57 4.9.7. PHP dilinde işlemlerin öncelik sırası... 57 4.10. Diziler (Array)... 58 4.10.1. Dizi değişkenler... 58 4.10.2. Çok boyutlu diziler... 59 4.11. Dizilerde kullanılan fonksiyonlar... 60 4.11.1. count()... 60 4.11.2. is_array()... 60 4.11.3. array_merge()... 61 4.11.4. sort()... 61 4.11.5. explode... 62 4.12. PHP de kontrol yapıları... 62 4.12.1. if kontrol yapısı... 62 4.12.2. switch kontrol yapısı... 64 4.12.3. while döngüsü... 65 4.12.4. do while döngüsü... 65 4.12.5. for döngüsü... 66 4.13. Fonksiyonlar... 66 4.13.1. print ()... 66 2.13.2.gettype()... 67 2.13.3.settype()... 67 4.13.4. ( integer ), ( double ), ( string ), ( boolean )... 68 2.13.5.isset()... 68 4.13.6. unset()... 69 4.13.7. empty() ve isset()... 69 4.13.8. is_string(), is_integer(), is_double()... 69 4.14. String fonksiyonları... 70 4.14.1. substr()... 70 4.14.2.trim()... 70 4.14.3. chr()... 70 2

4.14.4. ord()... 70 4.14.5. strlen()... 71 4.14.6. printf(), sprintf()... 71 4.14.7. number_format()... 72 4.15. Tarih ve saat fonksiyonları... 72 4.15.1. getdate()... 72 4.15.2. date()... 73 4.16. Dosya fonksiyonları :... 73 4.16.1. include()... 73 4.17. Kullanıcı tanımlı fonksiyonlar... 74 4.17.1. Fonksiyon tanımlama :... 74 4.17.2. Bir fonksiyonun çağırılması :... 74 4.17.3. Global ve Static Değişkenler... 75 5. HTML ( Hyper Text Markup Language )... 78 5.1. Html Nedir - Nasıl Hazırlanır?... 78 5.1.1. Yazım kuralları... 78 5.2. HTML dilinde kullanılan taglar... 79 5.3. Genel parametreler... 80 5.3.1. <body> tagının parametreleri... 83 5.3.2. Yazı biçimlendirme tagları... 83 5.4. Başlıklar... 84 5.5. Paragraflar... 85 5.6. Web sayfalarında resim kullanılması... 86 5.7. Bağlantılar (Linkler)... 87 5.8. Listeler... 89 5.8.1. Sıralanmamış liste (Unordered List)... 89 5.8.2. Sıralanmış liste (Ordered List)... 90 5.9. Formlar... 91 5.9.1. Form nesneleri... 92 5.9.2. Düz metin girişi (Plain Text Entry) :... 92 5.9.3. Şifre girişi (Password Entry) :... 93 5.9.4. Yazı alanı (Text Area) :... 94 5.9.5. Seçim kutusu (Select Box) :... 94 5.9.6. Çoklu seçim kutusu (Multiple Select Box) :... 95 5.9.7. Onay kutusu (Check Box) :... 96 5.9.8. Seçenek düğmesi (Radio Button) :... 97 5.9.9. Komut düğmesi (Button) :... 98 5.10. Tablolar (Tables)... 98 5.10.1. Satır ve sütun tagları... 99 5.11. Çerçeveler (Frames)... 100 5.12. HTML kaynakları... 102 6. PHP ile MySQL Veritabanı Etikleşimi... 103 6.1. MySQL sunucusuna bağlantı... 104 6.1.1. Veritabanı seçimi... 105 6.1.2. SQL ifadesi yazılması... 105 6.1.3. SQL ifadesinin çalıştırılması... 105 6.1.4. SQL sonucu üzerinde işlemler... 105 6.1.5. MySQL bağlantısını kapatma... 106 6.2. Uygulamalar... 107 6.3.1. Uygulama 1.... 107 3

6.3.1. Uygulama 2.... 109 6.3.1. Uygulama 3.... 113 6.3.1. Uygulama 4.... 115 6.3.1. Uygulama 5.... 118 Kaynaklar... 126 Özet Hızla büyüyen bilişim dünyasında bilgiye ulaşmanın hızlı bir şekilde yapılması da kaçınılmaz hal almaktadır. Bu da zamana karşı bir yarıştır. Bilgiye ne kadar hızlı ulaşılırsa bir o kadar da verimlilik artacaktır. Var olan bilginin, tüm insanlar tarafından da kullanılması sağlanmalıdır. Bu kullanım tek yönlü olarak bilgiyi vermek, yada etkileşimli olarak bilgi verilip karşılığında bilgi almak şeklinde özetlenebilir. Bu bilgi paylaşımın en iyi yoluda bilgisayarların birbirleriyle haberleşebildiği internet ortamıdır. Bu ortamda bilgiye ulaşmak için zaman ve mesai kavramı yoktur. Bilgi kütüphaneleri, bilgi paylaşıldığı sürece zenginleşecektir. Bu paylaşmayı sağlayabilmek içinde bazı araçlara ihtiyaç duyurlur. Bu belgede bilginin paylaşılması için gerekli olan araçların tanımları, nasıl kurulacakları, ayarları, çalıştırılması ve bilginin internet ortamında nasıl kullanıldığı örneklerle anlatılacaktır. 4

1. Sunucu ve İstemci Bilginin paylaşılmasında rol alacak araçlardan en önemlisi web sayfalarıdır. Web sayfası, bilgiyi hizmete açan tarafından belgelerin isteyene gösterilmesidir. Bu istek ve sunuş işlemleri bilgisayar ortamında gerçekleşecektir. Bu aşamada bir sunucu, bir de istekte bulunan kavramları ortaya çıkmaktadır. Hizmet veren bilgisayara sunucu (ana makina, server), istekte bulunan bilgisayara da istemci (terminal, client) olarak adlandırılır. Bu iki bilgisayarı büyük ölçüde birbirinden ayıran ise, bu bilgisayarlar üzerinde çalışan programlardır. Sunucu, üzerinde çalışan programlara göre isimlendirilmektedir. Bunlardan sık kullanılanları aşağıda verilmiştir. Bunlar ayrı ayrı birer bilgisayar olabileceği gibi, tek bir bilgisayara tüm bu programlar yüklenerek de görevler verilebilir. Bu görevler işletim sisteminden bağımsız olarak verilir. Bir linux işletim sistemli makina, yada windows işletim sistemi kurulu bir bilgsisayara aşağıdaki görevler verilebilir. DNS sunucu (Domain Name Service): İnternet ağı üzerinde iletişimin sağlıklı olması açısından her bilgisayarın adreslenmesi gereklidir. İki tip adresleme vardır. Sembolik (domain name) ve mutlak (IP numarası) olarak adreslenmektedir. ankara.edu.tr, science.ankara.edu.tr birer sembolik isimlendirmedir. Bu makinalar ip numarası ( 80.251.40.10 ve 80.251.40.12) ile de mutlak olarak isimlendirilir. Sembolik isimlerde; tr Türkiye, edu.tr eğitim kurumu, ankara.edu.tr de Ankara Üniversitesini temsil etmektedir. science.ankara.edu.tr ise Ankara Üniversitesi ağ bünyesi altında yer alan bir bilgisayarı temsil eder. Sembolik isimler ağ yapısını belirtmekte ve hatırda kalması bakımından önemlidir. DNS, ip numarası ile sembolik isimlerin dönüşümünü yaparak istegin sembolik isimden gelmesine karşın hizmeti verecek olan ip numarasina yönlendirir. Eğer hizmet veren bilgisayarın ip numarası değişse dahi kullanıcılar sembolik isimleri bildiklerinden dolayı aksaklık meydana gelmeyecektir. Bu işlemi yapan DNS dir. Burada, ankara.edu.tr (80.251.40.10) dönüşümü ODTÜ de yapılmaktadır, science.ankara.edu.tr (80.251.40.12) gibi alt domainler ise Ankara Üniversitesi DNS sunucusunda (ankara.edu.tr) yapılmaktadır. Ip numarası bilinen (veya sembolik ismi bilinen ) bir adresin sembolik adresini (veya ip numarasını) aşağıdaki komutla öğrenmek mümkündür (Linux turu işeltim sistemlerinde). $ nslookup 80.251.40.12 (sembolik adresi verecektir) $ nslookup science.ankara.edu.tr (ip numarasını verecektir) 1.1. Mail Sunucu: Elektronik ağlarda en yaygın olarak kullanılan servis elektronik mektup (e-mail, e-posta, e- mesaj) servisidir. Bu servisin iki görevi bulunmaktadır. Birisi sunucuya gelen mailleri kullanıcının posta kutusuna dağıtmak, bir diğer görevi de kullanıcının maillini göndermektir. Gönderilen mail aynı domaine sahip ise hemen kullaniciya iletilir, eger farkli domain ise DNS ile isbirligi yaparak iligili ip numarali makinaya gönderir. Bunlar; smail, qmail, sendmail gibi programlardır. Mailler; pine, eudora, mail, mailtool gibi programlar ise yeni mesaj, gelen mesajları okuma, cevaplama gibi amaçlarla kullanılan programlardır. 5

Mail yoluyla gelen isteklere cevap veren, kendi arşivinden dosyaları sunan programlara mailserver, arşiv-server veya file-server gibi isimler verilmektedir. Örneğin subject kısmında fiyat bilgisi içeren bir mesaj geldiginde sunucuda çalişan bir programla bu yorumlanır ve istemciye ilgili dosya mail yoluyla göndirilir. 1.2. Ftp Sunucu (File Trasfer Protocol): İnternet ortamında dosya paylaşımını sağlayan servistir. Bu servis iki yönlü olarak veya yapılacak ayarlarla tek yönlü olarak ta hizmet verebilir. Sadece sunucudan dosya alınsın (download), sunucuya dosya yüklensin (upload) yada here ikisininde yapılması sağlanabilir. Dizin kısıtlamaları, ip kısıtlamaları ve şifreleme gibi yöntemlerle ftp servisi yönlendirilmektedir. 1.3. Web Sunucu: Elektronik ağda en yaygın kullanılan bilgi paylaşımını sağlayan, genelde halk arasında internet denilince akla gelen web sayfalarıdır. World Wide Web (dünyayı saran ağ) gelişmesiyle bir belgeyi okumak, bir şarkıyı dinlemek olası olmuştur. Buna kısaca www veya web de denilmektedir. Webte yayınlama dili olarak HTML (HyperText Markup Language) kullanılmaktadır. Web sunucu; web sayfalarını istemciye ileten veya sunucuda çalışan bir program ile konuşarak istemcinin isteklerini yerine getiren programdır. Unix/Linux ortamında Cern, NCSA, plexus gibi web sunucular kullanılmasına karşın en yaygın kullanılan Apache web sunucusudur. Apache web sunucusunun win32 (Windows işletim sistemleri) sürümüde mevcuttur. Ayrıca win32 sistemlerde PWS (Personel Web Server 95/98), IIS (İnternet İnformation Server NT/2000) gibi türevlerde mevcuttur. 1.4. Veritabanı Sunucu: Kullanılan veritabanının multi-user (çok kullanıcılı) olarak hizmet vermesini sağlayan programlardır. Veritabanını aynı anda birden fazla kişinin erişimini sağlayan programlardır. Bu programlar, seçilen veritabanına özgü yazılımlardır. Bu programlar, veritabanın web ortamında kullanılmasını veya kurum içi ağda kullanılmasını sağlar. Veritabanları, istemci programları ve server programları olarak iki kısma ayrılır. MySQL, msql, postgrsql gibi ücretsiz kullanılan veritabanları mevcuttur. Bu veritabanlarının istemci ve sunucu kısımları mevcuttur. 1.5. Web-Veritabanı ilişkisi: Bir veritabanını web ortamından kullanılabilmesi için bir arayüze ihtiyaç duyulur. Çoğu veritabanının kendi web arayüzleri mevcut olmakla birlikte pahalıdırlar. Bu arayüzler veritabanı sunucu - web sunucu ilişkisini kurarlar. Bu arayüzlere web programlama dili de denilmektedir. Bazı web programlama dilleri vardır ki bunlar ücretsiz olarak temin edilebilmektedir. Bunlar web sunucu ile etkileşimli olarak çalışırlar. PHP, perl, java ve c gibi programlama dilleri bunların arasında sayılabilir. Bunlardan PHP, oracle gibi ticari olan, MySQL gibi ücretsizleri direkt desteklemenin yanında ODBC sürücülerini de (veritabanlarına baglanmada aracılık eden programlar) desteklemektedir. Böylece her veritabanını desteklemektedir. Birbirleriyle en ideal olarak analaşan Apache web sunucu, MySQL veritabanı ve PHP dili artık kaçınılmaz üçlü olmuşlardır. 6

1.6. MySQL Neden Gerekli Etkileşimli web sayfalarında kaçınılmaz olan veri kutuphanesinin bir veritabaninda olmasidir. Veriye erişim hızı, veri guvenliği, çok kisinin kullanıyor olması gibi nitelikler bir veritabanından beklenen özelliklerdir. Veritabanının ücreti, destek bulabilmek, kullanacağınız arayüz programi (PHP gibi) ile uyumluluğu gibi parametreler veritabanı seçimini etkilemektedir. MySQL veritabanında aranan bu özelliklerin olması, bu dilin seçimini sağlamaktadır. 1.7. PHP Neden Gerekli Bir bilgi kütüphanesinin internet üzerinden dünyaya açılması gereklidir. Genelde bir çok web sayfasında görmeye alıştığımız formlar, kullanıcı anketleri, veritabanına bağlanıp sorgu yapma, veri girme sayfaları ve kullanıcı ile sayfa sahibi kişi arasında iletişim sağlayacak bir programlama dili seçilmelidir. Bunu yapacak bir çok programlama dilleri vardır. Bunların en önemli özellikleri platform bağımsız olmaları (aynı programın linux, yada windows gibi işletim sistemlerinde direkt çalışıyor olması), tamamen sunucu tarafında çalışmaları sayılabilir. Perl, C gibi cgi (Common Gateway Interface) programlari, Asp gibi dillerdir. PHP bu özellikleri taşıması, bir çok veritabanını özellikle MySQL desteklemesi, seçilmesinde etkili olmaktadır. 1.8. Apache Neden Gerekli Web sunucu özelliklerini en iyi şekilde taşıması (bkz. Web Sunucu), ücretsiz dağıtım olması, teknik destek ve bilgisinin elektronik ortamda bol olması, işletim sistemi bağımsız olması nedeniyle ideal bir web sunucudur. 7

2. Araçların Kurulumu Bu üçlünün kurulmasında üç yol izlenmektedir. Birinci yol Linux Dağıtımının kurulması sırasında, ikici yol daha sonradan rpm paketleri (Redhat için) ile kurulması ve üçüncü yol ise modul olarak sonradan ekleme yöntemleri sıralanabilir. Eğer linux u yeni kurmaya başlıyorsanız hemen bu aşamada bu üçlüyü dahil ederek kurmaya devam edebilirsiniz. Eğer sonradan kuracaksanız (linux daha önceden kurulu ise) iki yoldan birisi seçilebilir. 2.1. Araçların RPM paket olarak kurulması Bu yöntem seçilirse dikkat edilmesi gereken bazi küçük ayrıntılar olacaktır. Örneğin siz sadece Apache-Php-MySQL üçlüsünü için öncelikle Apache, php ve sonra MySQL kurulmalıdır. Öncelik sırası önemlidir. Burada önce MySQL kurarsanız, sunucuda PHP olmadiği için bazı ayarlamalar yapılamayacaktır. Bu nedenle başka modullere ihtiyacı olmayandan RPM paketlerinden başlamak çözüm olacaktır. Sırayla şu paketler kurulur. 2.1.1. Apache Web Sunucu Kurulması Günümüzde internette web sunucularının çoğunu Apache oluşturmaktadır. Windows un kendi web sunucuları olmasına karşın, kullanıcılar windows üzerinde de Apache kullanmayı tercih ediyorlar. Sağlamlık, güvenirlik, yüksek performansı, php ve MySQL ilişkilerinin olumlu olması tercih sebeplerindendir. İnternet ortamında bilgilerin sunucu-istemci arasında güvenli bir şekilde iletilmesi gerekmektedir. Bu bağlamda iki sunucu türü ortaya çıkmaktadır. Birincisi bilinen web sunucu, diğeri ise güvenli iletişim için, web sunucunun SSL (Secure Socket Layer) internet üzerinde şifrelenmiş veri alış-verişini sağlayan bir protokolle desteklenmesidir. Şifreleme artık günümüzde hızlı bir şekilde yaygınlaşan e-ticaret uygulamalarında kaçınılmaz duruma gelmektedir. Eğer RPM paketleriniz cd de ise # mount /dev/cdrom # cd /mnt/cdrom/rpms işlemleri ile cd sürücü bağlanır ve paketlerin olduğu klasöre geçilir. # rpm -i httpd-2.0.40-8.i386.rpm --nodeps # rpm i mod_ssl-2.0.40-8.i386.rpm --nodeps paketlerin bulunduğu ortamda yukarıdaki iki komut verilerek iki paketin kurulması sağlanır. --nodeps ifadesi apache ile kurulabilen paketleri (su anda bize gerekli olmayan) yok sayarak kur anlamına gelmektedir. Web sunucunun çalışırılması ve test edilmesi için; #/etc/init.d/httpd start komutuyla çalıştırılır. start yerine, durdurmak için stop, yeniden başlatmak için restart yazılabilir. 8

Apache web sunucusunun yönetimi /etc/httpd/conf/httpd.conf dosyasından yapılır. Buradaki ayarlamaların neler olduğunu, daha sonra sunucunun modül olarak kurulması kısmında bahsedilecektir. Sunucunun varsayılan web ana dizini /var/www/html klasörüdür. Web browser adres kısmına http//:localhost ifadesi yazıldığı taktirde bu dizin içindeki html sayfaları görüntülenecektir. 2.1.2. PHP nin Kurulması Php (php hypertext preprocessor, ön işlemci yüksek metin), web sunucuda yorumlanıp html diline gömülü çalışan bir script dili, bir çok programla beraber kullanılmaktadır. Bunlardan MySQL, OpenLDAP (Klasör erişim protokolü), GD (php de resim kütüphanesi) gibi bir çok kütüphane desteği ile beraber kurulmaktadır. CD'i sürücüye takılır ve aşağıdaki işlemleri yapılır # mount /dev/cdrom # cd /mnt/cdrom/rpms # rpm -i php-4.2.-8.0.5.i386.rpm --nodeps Yukarıdaki komutlar CD sürücüyü /mnt/cdrom dizinine bağlayacak ve /mnt/cdrom/rpms dizini altında (RPMS klasörü) yada rpm lerinizin bulunduğu dizin içinde php paketini kuracaktır. --nodeps ifadesiyle bu paketlerin gerek gördüğü alt paketler göz ardı edilerek kurulacaktır. Eğer Apache web sunucusu kurulu ise sunucuyu yeniden başlatmak gerekir. # /etc/init.d/httpd start komutu ile yeniden çalıştırılır. PHP nin çalıştığını da küçük bir uygulama yaparak test edilebilir. Apache'nin web sayfalarının bulunduğu kök /var/www/html klasörüdür. Bu klasöre her hangi bir text editörü ile aşağıdaki ifadeleri yazılarak deneme.php adında kaydediniz. php Print Bu bir php uygulamasıdır ; kaydedilen dosya, http://localhost/deneme.php şeklinde web browserdan çağırılırsa ekranda sadece Bu bir php uygulamasıdır ifadesinin görünmesi gerekir. Aksi taktirde php çalışmamaktadır. Bu durumda deneme.php dosyasinin tamami ekranda görüntülenecektir. Bu da apache nin php yi tanımamasından kaynaklanır. Apache ayar dosyası /etc/httpd/conf/httpd.conf da AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps satırlarının olması sağlanır. Apache sunucusu yeniden çalıştırılarak sorun giderilmiş olacaktir. Bir başka sorun da php kodunun başladığını gösteren tag php ifadesi yerine kısa tag olarak kullanılan ifadesi yazılırsa çalışmayacaktır. Kısa tag kullanmak istiyorsanız /etc/php.ini dosyasında short_open_tag=off ifadesi short_open_tag=on yapılarak, web sunucu yeniden çalıştırılmalıdır. 9

2.1.3. MySQL kurulması MySQL'den en yüksek verimi almak için, aşağıdaki paketleri sisteme kurmalısınız. mysql: MySQL temel dosyaları ve kütüphaneleri (şart) mysql-devel: MySQL geliştirme için başlık dosyaları php-mysql: Php ve MySQL bağlantısı için gereken yordamlar (MySQL/PHP programlama yapılacaksa şart) mysql-server: MySQL sunucu (şart) mod_auth_mysql: Apache'nin mod_auth özelliği ile MySQL bağlantısı yapması için gerekli dosyalar Bu paketlerin sistemde kurulu olup olmadıklarını öğrenmek için, aşağıdaki komut işe yarayacaktır: #rpm -qa grep mysql komutuyla aşağıdaki paketlerin kurulu olup olmadığı görülür. mysql-3.23.24-1 mysql-devel-3.23.24-1 php-mysql-4.0.3pl1-1 mysql-server-3.23.24-1 mod_auth_mysql-2.20-1 Eğer paketler kurulu değil ise, CD'yi sürücüye takın ve aşağıdaki işlemleri yapın # mount /dev/cdrom # cd /mnt/cdrom/rpms # rpm -i *mysql* --nodeps Bulunulan yerde, içinde tüm mysql satırı geçen programları sisteme kuracaktır. --nodeps ifadesiyle bu paketlerin gerek gördüğü alt paketler göz ardı edilerek kurulacaktır. Örneğin MySQL kurulumunda perl ile ilgili paketlerin daha önceden kurulması gerekiyor, fakat perl istenmediği için bunun gibi paketler yok sayılır. RPM paketi olarak kurulan MySQL in çalışan uygulamaları /usr/bin altına, veritabanları ise /var/lib/mysql/ klasörü içine yerleştirilmektedir. # /usr/bin/mysql_install_db komutu verilerek, mysql yönetim veritabanını /var/lib/mysql/ klasörü altında mysql ve test veritabanları olarak oluşmaktadır. Bu işlem mysql-server kurulumu için şarttır. Eğer mysql istemci olarak kullanılacaksa bu işleme gerek yoktur, bu durumda sadece başka sunuculardaki veritabanlarına bağlanılabilir. Kullanıcının yeni veritabanları da /var/lib/mysql/ klasöründe oluşacaktır. Oluşan veritabanlarıda birer klasördür, içinde tablo, bilgi alanını yapısı ve veriler için gerekli dosyalar vardır. MySQL sunucusunu başlatmak için #/etc/inid.d/mysqld start komutu verilir (start yerine stop yazılırsa durdurulur). 10

MySQL sunucusuna bağlanmak: Bu işlem MySQL client (istemci) programi ile gerçekleşir. #/usr/bin/mysql komutuyla bağlanılır ve burada SQL sorgulama dili ve MySQL özgü konsol komutları kullanılır. Bu komutlar MySQL veritabanı yönetimi bölümünde anlatılacaktır. 2.2. Araçların Modul (Statik) olarak kurulması: Sistem yöneticilerinin tercih ettikleri yol olan statik kurulumdur. Bu yöntem en önemli özelliği bütün linux dağıtımlarında standarttır. RPM paketleri ile kurulumda müdahale edilmeden kurulduğu için programlar dağınık bir şekilde kurulmaktadır. Oysa linux ta gelenek haline gelen uygulamaların /usr/local/ klasöründe bulunmasıdır. Statik kurulum diğerine göre zahmetli gibi görünse de, her şey kullanıcının denetimindedir. Bu yöntemde kuruluma RPM paketine göre tersten başlamaktadır. Önce MySQL, PHP ve en son apache kurulacaktır. Bir çok programla veya modul kullanılabilen PHP; MySQL, SSL (güvenli bilgi alış-veriş desteği), OpenLDAP (Klasör erişim protokolü), GD (php de resim işleme kütüphanesi) gibi uygulamalarla derlenmektedir. PHP kurulmadan php ye gerekli olan veya kullanılacak uygulamalar daha önce kurulmalı, sonra PHP kurulmalıdır. Apache web sunucusu kurulmadan önce SSL protokolü ve PHP kurulu olmalıdır. Apache kurulumu sırasında hangi desteklerin verileceği bildirilecektir. Statik kurulumda kullanılan dosyalar tar.gz arşivlenmiş ve sıkıştırılmış dosyalar kullanılacaktır. Bu nedenle bu dosyaları /download/ isimli bir klasör açarak oraya saklanması önerilir. 2.2.1. MySQL Kurulumu MySQL için Linux a uygun olan tar.gz dosyasını http://www.mysql.com adresinden mysql-3.23.47.tar.gz dosyasını sisteminizdeki /download/ klasörüne indiriniz. Aşağıdaki komutlar sırasıyla uygulanmalıdır. # cd /usr/local # tar -zxf /download/mysql-3.23.47.tar.gz # cd mysql-3.23.47 sıkıştırılmış mysql-3.23.47.tar.gz arşiv dosyası /usr/local/mysql-3.23.47 klasörü içine açılacaktır. Bu klasör içine girilir. Kurulumun yapılacağı yer prefix ibaresi ile, veritabanında Türkçe karakterlere göre verilerin sıralanması için charset tanımı yapılır. Bu işlem configure programı ile yapılır. Bu program makinenizin konfigurasyonu hakkında bilgi toplayarak bu bilgilere göre bir makefile oluşturur. Oluşturulan bu makefile, programın makinenize göre kurulumunu sağlar. Örneğin bazı makinelerde C derleyicisi olarak gcc yerine cc kullanılmaktadır. "configure" programcığı makinemizin kendine has özelliklerine göre bize bir makefile oluşturur. 11

#./configure --prefix=/usr/local/mysql --with-charset=latin5 # make make komutu ile derlemek üzere kurulumu başlatırız. Bu komut ile birlikte o dizindeki kurulumla ilgili dosyalar bir düzene sokulur bir liste oluşturulur. make komutu ile makefile dosyasındaki yapıya göre kurulum dosyaları hazırlanır, varsa hatalar bu aşamada ortaya çıkar. Bu noktadan sonra hazırlanan kurulum dosyalarının bilgisayarımızda gerekli yerlere kurulması kısmının gerçekleştirilmesi için make install komutu verilerek kurulum tamamlanır. # make install Kurulumu tamamlanan MySQL in çalıştırılabilir komutları /usr/local/mysql/bin altında, veritabanları ise /usr/local/mysql/var klasörü altında yer almalıdır. Bu nedenle MySQL veritabanı sunucusunu başlatan uygulamayı aşağıdaki şekilde kopyası ilgili klasöre oluşturulur. # cp /usr/local/mysql/share/mysql/mysql.server /usr/local/mysql/bin Aşağıdaki komut ile MySQL veritabanı kurulur. Bu komutla /usr/local/mysql/var klasörü altında mysql ve test isminde iki veritabanı oluşturulur. mysql veritabanı, MySQL programın yönetimi için bilgilerin saklandığı veritabanıdır. Örneğin oluşturulan kullanıcılar, veritabanlarına verilen haklar gibi bilgiler saklanır. # /usr/local/mysql/bin/mysql_install_db Root haricinde MySQL sunucusunu kullanmak için mysql isminde bir grup ve bir de user oluşturmak için aşağıdaki komutlar verilir. # groupadd mysql # useradd -g mysql mysql Aşağıdaki komutlarla ilgili klasörlerin sahipleri belirlenmektedir. # chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql MySQL veritabanı sunucusunu başlatmak için aşağıdaki komut verilmelidir. # /usr/local/mysql/bin/mysql.server start Bilgisayarın her açılışında otomatik olarak açılması için # pico /etc/rc.d//rc.local dosyası içerisine /usr/local/mysql/bin/mysql.server start ifadesi yazılır. # cd.. Kurulumdan sonra harddiskte tasarruf açısından aşağıdaki komut verilerek kaynak kodların bulunduğu klasör silinir. # rm -rf mysql-3.23.47 12

MySQL client olarak kullanılmak istenirse /usr/local/mysql/bin/mysql komutu verilmelidir. Burada SQL sorgulama dili ve MySQL özgü konsol komutları kullanılır. Bu komutlar MySQL veritabanı yönetimi bölümünde anlatılacaktır. 2.2.2. Apache ye Gerekli Modüllerin eklenmesi Apache nin kurulmadan önce gerekli modüllerin yüklenmesi eklenmesi gereklidir. Apache ye modul olarak php, mod_gzip gibi isteğe bağlı modüller eklenebilir. mod_gzip yazı veya makale gibi çok sıkıştırılabilen dosyaların kullanıcının çok hızlı olarak çekebilmesi ve çok daha az bant genişliği harcayarak internet yoğunluğunu azaltması için sunucuya verilecek destektir. Bu destek ile dosyaya tıklandığında, dosyanin browser da okunmasi için değil download edilmesi gerektiği anlaşılacaktır. Bu belgede sadece php ve ssl desteği modul olarak eklenecektir. Modüller eklenmeden önce apache nin kurulacağı dizin oluşturulmalıdır. Apache için gerekli apache_1.3.27.tar.gz dosyası, http://httpd.apache.org sitesinden /download/ klasörüne indirilir. # cd /usr/local #tar -zxf /download/apache_1.3.27.tar.gz /usr/local/apache_1.3.27 klasörüne açılan apache kaynak kodlarının daha kolay kullanılmasını sağlama amacıyla aşağıdaki gibi bir sembolik link ile apache adı verilir. #ln -s apache_1.3.27 apache #cd apache #./configure #cd.. Bu aşama ile modul olarak eklenecek programların /usr/local/apache klasöründe kullanacağı ortak dosyalar oluşmuş olur. 2.2.3. OpenSSL Kurulumu OpenSSL kurulumu seçimliktir. Kurulması istenirse php ve Apache den önce kurulması gerekir, çünkü bunlar kurulurken ssl desteği verilecektir. OpenSSL kurulmaz ise php ve apache configure edilirken bu destekler yazılmamalıdır. OpenSSL için gerekli dosya http//:www.openssl.org adresinden temin edilebilir. openssl-0.9.6i.tar.gz dosyası /download/ klasörüne indirilir. # cd /usr/local # tar -zxf /download/openssl-0.9.6i.tar.gz # cd openssl-0.9.6i #./config # make # make install # cd.. # rm -rf openssl-0.9.6i Yukarıdaki komutlar ile openssl, /usr/local/ssl klasörüne kurulmuş olur. 13

2.2.4. PHP Kurulumu PHP için gerekli olan php-4.3.1.tar.gz dosyası http://www.php.net adresinden /download klasörüne indirilir. # cd /usr/local # tar -zxf /download/php-4.3.1.tar.gz # cd php-4.3.1 PHP yi configure ederken web sunucunun yerini, mysql in kurulu olduğu, openssl in kurulu olduğu yerler belirtilir. #./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --enable-ftp --enable-safe-mode --enable-trans-sid --with-openssl=/usr/local/ssl --enable-inlineoptimization --with-zlib # make install # cd.. Bu işlemlerle php kurulumu tamamlanmıştır, php nin çalışıp çalışmadığı ancak apache kurulumundan sonra anlaşılabilir. 2.2.5. Apache Kurulumu # cd /usr/local/apache #./configure --prefix=/usr/local/apache --enable-module=ssl --activate-module=src/modules/php4/libphp4.a # make Apachenin isteğe bağlı modüllerle derlenmesi tamamlanmıştır. Ssl ile şifrelenmiş veri alış verişinde önemli bir yeri de, sayısal (dijital) sertifikalar tutar. Bu sertifikalar Web browser ile web sunucu arasında şifrelenmiş veri akışını sağlar. Eğer bir sertifikanız (sertifika yazılım şirketlerinden alınmakta) yok ise, bu aşamada aşağıdaki komutla bir sertifika yapabilirsiniz. Doğal olarak sizin yapacağınız sertifika web browserlar tarafından tanınmadığından dolayı, istemciler bir uyarı ile karşılaşacaklardır. İstemcilerde Tanınmayan sertifika, güvenlik açısından kabul ediyormusunuz şeklinde uyarı penceresi gelecektir. # make certificate Bu aşamada bazı sorular soracaktır. Örneğin şirketinizin adi, sertifika geçerlilik süresi gibi bilgiler onaylamanızı isteyecektir. Son olarak derlenmiş dosyalar ilgili yerlere gitmesi için # make install komutu verilerek apache kurulumu tamamlanmış olacaktır. Web sunucunun çalıştırılması için, iki yöntem vardır, bunlardan birisi çalıştırılmalıdır. Normal (ssl desteği olmadan) sunucunun başlatılması 14

#/usr/local/apache/bin/apchectl start komutu verilir. Eğer SSL desteği ile web sunucusu başlatılacaksa #/usr/local/apache/bin/apchectl startssl komutu verilir. Start yada startssl yerine durdurmak için stop, yeniden başlatmak için restart yazılabilir. İstemci web sunucuya bağlanırken http://adres yazılarak bağlanır, ssl destekli sunucuya bağlanmak için ise https://adres şeklinde yazılmalıdır. Adres web sunucunun host name yada ip adresidir. 2.2.6. Apache de ayarlar Web sunucusunda bütün ayarlar /usr/local/apache/conf/httpd.conf dosyasından yapılır. Web sunucunuzun ana dizini, alt dizin ayarlamaları, ana dizinde varsayılan bağlanılacak sayfa adı (index.html, index.php gibi dosya tanımları), kullanıcıların ana dizin (public_html) tanımı gibi bir çok ayarlamalar yapılabilmektedir. http.conf dosyasında yapılabilecek ayarları da gösteren ornek bir http.conf http://www.ulakbim.gov.tr/belgeler/sunucuayar/apacheayar.uhtml adresinde bulunmaktadır. Buradan nasıl ayarlamalar yapılacaği Türkçe olarak, anlatılmaktadır. Burada yapılabilecek bir kaç örnek verilmektedir. Bu ayarların httpd.conf dosyasında yerleri sabittir. İlgili yer bulunur ve örnekler deki gibi düzeltilir. - Sunucu zarar gördüğünde, istemci browserinda sunucu hakkında, sistem yöneticisinin mail adresi gibi bilgilerin çıkması olayına ServerSignature yönergesi denilir. Burada çıkması istenen mail adresi aşağıdaki gibi belirtilir. ServerAdmin webmaster@kurum.edu.tr - Sunucudan, isteklere cevap olarak gönderilecek html sayfalarının varsayılan yeri yani ana dizin aşağıdaki gibi belirlenir. Örneğin www.ankara.edu.tr adresi varsayılan olarak "/web/www/docs" klasöründeki index.html (yada belirtilen diğer dosya) dosyasını istemciye gönderecektir. İstenilen klasör aşağıdaki gibi ana klasör olarak belirlenebilir. DocumentRoot "/web/www/docs" - Varsayılan klasöre istek geldiğinde başlangıç olarak hangi dosyanın gelmesi gerektiği ise aşağıdaki gibi belirtilir. Birden fazla belirtilebilir. İlk dosya bulunmaz ise diğerlerine sırayla bakılır. DirectoryIndex index.php index.html index.htm - Sunucuda bulunan kullanıcıların kişisel web sayfalarına http://www.kurum.edu.tr/~kullaniciadi/ 15