Jump to content

Web Server Kurulumu


PaRDuS

Recommended Posts

Günümüzde en güvenli web sunucular arasında netcraft sitesinde açıklandığı üzere BSD işletim sistemleri ilk sıraları kaptırmamak için kararlı adımlarla ilerlemeye devam ediyorlar.Bu doğrultuda Freebsd işletim sistemi üzerinde bir webserver kurulumunun yapılmasını adım adım anlatmaya çalışacağım.

Web serverımız üzerinde çalıştıracağımız programlar:

Apache

Mysql Server

Php

Ftp

Web Server olarak çalıştıracağımız serverın üzerine freebsd işletim sistemin kurulumun yapılmış olduğunu ve sistemin güncellendiğini varsayıyoruz.

Bsd içerisinde hayatımızı kolaylaştıran ports sistemi ile kurulum işlemlerini anlatacağım.Kurulumlar hiçbir hata ile karşılaşmamanız durumda internet hızınız ile alakalı olarak çok kısa sürede bitecektir.

Kurulum öncesi birkaç değişiklik:

Sistem performansı için bazı değişiklikler yapmamız kurulumları daha da hızlandıracaktır.Bunların başında make.conf dosyasının güncellenmesi. Sistem kurulduğu anda make.conf /etc/default/ dizini altındadır.Make.conf u /etc dizini altına kopyalarak bazı değişiklikler yapabiliriz.

#cp /etc/default/make.conf /etc

Make.conf dosyası içindeki MASTER_SITE_BACKUP bölümlerini değiştirmemiz dosyaları çekerken bize en yakın yansıdan almamızı sağlayacaktır.Dosyanın ilk hali ve değişiklik yapıldıkdan sonraki ilgili bölümdeki hali aşağıda ki gibidir.

#more /etc/make.conf# Port master sites.## If you want your port fetches to go somewhere else than the default# (specified below) in case the distfile/patchfile was not found,# uncomment this and change it to a location nearest you. (Don't# remove the "/${DIST_SUBDIR}/" part.)##MASTER_SITE_BACKUP?=# ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/## If you want your port fetches to check the above site first (before# the MASTER_SITES specified in the port Makefiles), uncomment the# line below. You can also change the right side to point to wherever# you want.##MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

Değişikliği yaptıkdan sonra:

#more /etc/make.conf# Port master sites.## If you want your port fetches to go somewhere else than the default# (specified below) in case the distfile/patchfile was not found,# uncomment this and change it to a location nearest you. (Don't# remove the "/${DIST_SUBDIR}/" part.)#MASTER_SITE_BACKUP?=ftp://ftp.tr.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/## If you want your port fetches to check the above site first (before# the MASTER_SITES specified in the port Makefiles), uncomment the# line below. You can also change the right side to point to wherever# you want.#MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

Make.conf dosyası içinde birde PKG_REGISTER bölümünü aktif hale getirmemiz yüklü olan paketleri gördüğünde sistemin durmasını engelleyecektir.

Make.conf dosyası içindeki "FORCE_PKG_REGISTER= YES " bölümünün önündeki diezi kaldırmanız yeterlidir.

Apache SSL Desteği ile kurulması

Sistem üzerinde ssl desteğine ihtiyac duymaya bilirsiniz.Onun içinde bir alt dizindeki apache13 dizinine girip aşağıdaki komutları vermeniz yeterlidir.

#cd /usr/port/www/apache13#make install

Ssl desteği ile kuracaksanız apache nin modssl ile entegre olduğu dizinine geçiyoruz ve artık çok sık kullanacağımız komutumuzu veriyoruz.

#cd /usr/ports/www/apache13-modssl#make install clean

Eğer apache i ssl desteği vermeden kurmuşsak yapmamız gereken sadece httpd.conf dosyasının sonuna gerekli virtualhost tanımlarının girilmesidir.

Portdan kurmuş olduğunuz apache nin configurasyon dosyaları /usr/local/etc/apache altında data dosyaları ise /usr/local/ww/data altında bulunmaktadır.

Configurasyon dizinine gecerek httpd.conf üzerinde bazı değişiklikler yapmamız gerekecektir.

#vi + /usr/local/etc/apache/httpd.conf<VirtualHost * >ServerName sizin_domaininiz.comServerAlias www.sizin_domaininiz.comDocumentRoot /usr/local/www/sizin_domaininiz_ana_diziniErrorLog /usr/local/logs/sizin_domaininiz-error_logCustomLog /usr/local/logs/sizin_domaininiz-access_log commonRewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F]</VirtualHost>

Gerekli tanımları yaptıkdan sonra kaydedip çıkıyoruz ve apache i çalıştırmadan önce yazım hataları olup olmadığını kontrol için test edelim.

/#apachectl configtestSyntax OK

Sorun yok artık çalıştırabiliriz.

#apachectl start/usr/local/sbin/apachectl start: httpd started

Apache yi çalıştırdığınızda logs dosyasının olmadığı ile ilgili hata alabilirsiniz.Bu durumda

#mkdir /usr/local/logs

Komutu ile gerekli dizini oluşturunuz.

Ssl desteği ile kurmuş olduğumuz Apache için conf ayarları aşağıdaki gibi olmalıdır.

Portdan kurmuş olduğunuz apache nin configurasyon dosyaları /usr/local/etc/apache altında data dosyaları ise /usr/local/ww/data altında bulunmaktadır.

Configurasyon dizinine gecerek httpd.conf üzerinde bazı değişiklikler yapmamız gerekecektir.

#cd /usr/local/etc/apache#vi httpd.conf

Httpd.conf dosyası içinde "SSL Engine Switch:" kısmında varsa eğer ssl sertifikanız ile ilgili dosyaların yerini göstermeniz gerekecektir.

Önemli olan bölümler aşağıda sıralanmıştır.Bu tanımlamalar httpd.conf dosyasının en sonunda olan;

" " parametleri arasında yer almaktadır.Her ip için teker teker bunları tanımlamanız gerekmektedir.Eğer server üzerinde tek bir domain için ssl tanımlaması yapacaksanız ip vermenize gerek yok.default olarak kalabilir.

ServerName sizin_domaininiz.comServerAlias www.sizin_domaininiz.comDocumentRoot /usr/local/www/sizin_domaininiz_ana_diziniErrorLog /usr/local/logs/sizin_domaininiz-error_logCustomLog /usr/local/logs/sizin_domaininiz-access_log commonRewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F]SSLEngine onSSLCertificateFile /etc/ssl/your_domain.crtSSLCertificateKeyFile /etc/ssl/ your_domain.key

Yukarda anlattıklarımız ssl üzerinde çalışması içindi.Şimdide server üzerinde 80 portu üzerinden hizmet verecek bir domain tanımlasını yapalım.

Onun içinde gerekli örnek tanımlama aşağıdaki gibidir.

Ssl ile tanımlamış olduğumuz 443 portu üzerinden çalışacak olan VirtualHost tanımlamasının üzerinde 80 portundan çalışacak olan VirtualHost için şablonların bulunduğu yere kendi domaininiz için aşağıdaki örnekte görüldüğü gibi VirtualHost tanımlamalarımızı girebiliriz.

<VirtualHost :80>ServerName sizin_domaininiz.comServerAlias www.sizin_domaininiz.comDocumentRoot /usr/local/www/sizin_domaininiz_ana_diziniErrorLog /usr/local/logs/sizin_domaininiz-error_logCustomLog /usr/local/logs/sizin_domaininiz-access_log commonRewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F]</VirtualHost>

Gerekli tanımlamaları girdikden sonra httpd.conf dosyamızı kaydedip çıkıyoruz.

Şimdi apache nin çalışıp çalışmadığını kontrol etme zamanı.

Apachectl komutu ile hangi paremetleri kullanabileceğimizi görmek için komutu yalın olarak verelim.

#apachectlusage: /usr/local/sbin/apachectl (start|stop|restart|fullstatus|status|graceful|configtest|help)start - start httpdstartssl - start httpd with SSL enabledstop - stop httpdrestart - restart httpd if running by sending a SIGHUP or start ifnot runningfullstatus - dump a full status screen; requires lynx and mod_status enabledstatus - dump a short status screen; requires lynx and mod_status enabledgraceful - do a graceful restart by sending a SIGUSR1 or start if not runningconfigtest - do a configuration syntax testhelp - this screen

Çalıştırmadan önce yazım hataları olup olmadığını kontrol edelim.

#apachectl configtestSyntax OK

Yazım hatası yapmamışız. Çalıştırabiliriz.

#apachectl startssl/usr/local/sbin/apachectl startssl: httpd started

Apache ssl desteği ile çalışmaya başlamıştır.

Apache kurulumunu yaptıktan sonra sistem üzerinde kullanacağımız bazı özellikler olacaktır.Bunlardan ihtiyacınız olan birkaç tanesini örnekler ile açıklamaya çalışacağım.

Dizine cgi çalıştırma hakkı vermek:

Httpd.conf dosyasına virtualhost eklediğiniz bölümün sonuna aşağıdaki satırları eklemeniz o dizinde cgi çalıştırılması için yeterlidir.

<Directory "/usr/local/www/sizin_cgi_dizininiz ">Options ExecCGI</Directory>

Bu satırları ekledikden sonra Apache yi yeniden çalıştırmayı unutmayınız.

Özel Alanlara Erişim

Siteniz içinde kullanıcı_adı/şifre ile girilmesini istediğiniz alanlarda olabilir.Bunu Apache ile birlikte gelen .htaccess uygulaması ile yapacağız.

Websiteninin içinde ki gizli klasörü ve alt klasörlere erişilmeye çalışıldığında şifre sorması için yapılması gerekenleri adım adım anlatmaya çalışacağım.

httpd.conf dosyası içinde gizli klasörüne erişimi şifreli yapmak için aşağıdaki satırları eklememiz gereklidir.

<Directory /usr/local/www/data/sizin_site/gizli>AllowOverride AuthConfig</Directory>

Httpd.conf dosyasında herhangi bir değişiklik yaptıktan sonra değişikliğin etkin olması için Apache yi yeniden başlatmayı unutmayın.

Gizli dizinin bulunduğu dizine giderek bu klasör içinde ".htaccess" dosyasını oluşturmamız gerekmektedir.Bu dosyanın içine aşağıdaki satırları eklemeniz gerekmektedir.

AuthName "Ozel bolge !!!"AuthType BasicAuthUserFile /usr/local/www/data/sizin_site/gizli/.htpasswdrequire valid-user

şimdi kullanıcı adlarının ve şifrelerin tutulduğu .htpasswd dosyasını oluşturalım.

#htpasswd -c /usr/local/www/data/sizin_site/.htpasswd user1

Bu komut ile user1 kullanıcısını .htpasswd dosyası içinde tanımlayarak bu dizine erişmesine izin vermiş oluyoruz. -c parametresi ile .htpasswd dosyasını ilk defa oluşturduğumuz zaman kullanacağız. .htpasswd dosyamız varsa ve bir kullanıcı daha eklemek istiyorsak aşağıdaki komut yeterlidir.

#htpasswd /usr/local/www/data/sizin_site/.htpasswd user2

Mysql Server Kurulumu

Bu dokümanı hazırladığım sırada mysql-server ın 5.0 versiyonu da çıkmıştı fakat sitede production ortamlarda önerilen versiyon 4.0.20 olduğu için kurulumu o şekilde yapacağız.

#cd /usr/ports/databases/mysql40-server

Dizin içinde ki Makefile dosyasını kontrol ederek kuracağımız programın versiyonunu görebilmemiz mümkündür.

# more Makefile# New ports collection makefile for: MySQL-server# Date created: Sun Mar 3 12:20:35 CET 2002# Whom: Alex Dupre <[email protected]>## $FreeBSD: ports/databases/mysql40-server/Makefile,v 1.185 2004/05/18 10:59:11 ale Exp $#PORTNAME?= mysqlPORTVERSION= 4.0.20PORTREVISION?= 0CATEGORIES= databases

Görüldüğü üzere kuracağımız versiyon mysql in kendi sitesinde duyurduğu production versiyon ile aynı.Sistemdeki ports dosyalarını sürekli güncel tuttuğunuzda teknolojinin gerisinde kalmayacaksınız.

Kuracağımız mysql-server ın dizinine girdikten sonra kurulması için gerekli komutu verebiliriz.

#make install clean

Install success full.

#/usr/local/etc/rc.d/mysql-server.sh start

Komutu ile mysql serverımızı da çalıştırabiliriz.

Mysqlserver ımızda kurdukdan sonra ilk yapılması gereken şey mysql root şifresinin değiştirilmesidir.Asla mysql şifrenizi boş bırakmayın.Mysql root şifresini iki şekilde değiştirebilirsiniz.

Sistemi ilk kurduğunuzda mysqladmin programı yardımı ile şifre ataması yapabiliriz.

#mysqladmin -u root password yenisifre

Bu komutu bir sefer verdikden sonra tekrar çalıştıramazsınız. Mysql root şifresini tekrar değiştirmek için mysql veritabanına bağlandıkdan sonra aşağıdaki komutları vererek değiştirebilirsiniz.

#mysql -u root -pmysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';mysql> FLUSH PRIVILEGES;

Link to comment
Share on other sites

Php Kurulumu

Webserverımız üzerinde php desteğinine vermek için php nin sitesinden stable olan versiyonunu öğrenip kurabiliriz.Dökümanı hazırladığım sıralarda 4.3.7 versiyonu stable durumda idi.

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

Kurulum bittikden sonra Apache için gerekli olan tanımları httpd.conf dosyasına eklemiş ve bunun ile ilgili bilgiyi ekranınıza yazmış olacaktır.

FTP hizmeti

Kurmuş olduğumuz web servera hizmet verebilmesi için hemen hemen tüm servisleri yüklemiş durumdayız.Müşterilerimizin web sitelerinin de kullanabilecekleri tüm servisler hazır durumda.Fakat müşterilerimizin dosya transferi yapmaları için birde ftp server programına ihtiyacımız vardır.Bunun için sistem üzerinde bir çok alternatif programlar kurup deneye bilirsiniz.Bu dökümanda anlatacağım sistem ise freebsd nin default ftp hizmetini devreye almak için yapılması gerekenler.

Ftp hesabı açacağımız kullanıcıları sistem kullanıcısı olarak tanımlayacağız.Fakat sistem kullanıcısı olarak tanımladığımız kullanıcıların ftp haricinde başka hakları olmaması için kısıtlamalar yapmamız gerekmektedir.

Bunun için ilk olarak ftp kullanıcılarına vereceğimiz shell i sistemde kullanılabilir duruma getirmemiz gerekmektedir.

shells dosyasını açıp sonuna "/usr/bin/false " satırını ekleyerek sisteme false shell ininde kullanılacağı nı belirtmemiz gerekmektedir.

Bunu tek bir komutda yapabiliriz.

#echo "/usr/bin/false/" >>/etc/shells

Default ftp hizmeti aktif hale getirmek için bir çok yol vardır.Bunlardan en güvenilir ve stable olanı ftpyi direk çalıştırmaktır.Bunun için aşağıdaki komutu vermeniz yeterlidir.

#/usr/libexec/ftpd -D

Her açılışta ftp nin çalışması için /etc/rc.local dosyasını oluşturup yukardaki komutu bu dosyanın içine yazmanız yeterlidir.

echo "/usr/libexec/ftpd -D " >/etc/rc.local

ftp nin çalışıp çalışmadığını test etmek için aşağıdaki komutu verebilirsiniz.Sizden username isteyen ekran geliyorsa ftp hizmetini de serverınız üzerinde verebilirsiniz.

bash-2.05b# ftp 0 21Connected to 0.220 your_server_name FTP server (Version 6.00LS) ready.Name (0:user):

Tebrikler.

ftp kullanıcılarının sadece kendi dizinlerinde dolaşmaları ve diğer kullanıcıların dizinlerine geçmelerini engellemek için bir grup oluşturup ftp kullanımı için oluşturduğumuz tüm kullanıcıları bu grup üye yapmak zorundayız. Bunun içinde ftpchroot dosyasına oluşturmuş olduğumuz grup u eklememiz gerekmektedir.

Eğer sisteminizde bu dosya yoksa siz oluşturabilirsiniz.

#vi /etc/ftpchrootrootsshd@ftp

Burada ftp kullanıcılarının ftp grubuna üye olacakları göz önüne alınmıştır.

Artık bir ftp kullanıcı oluşturup test edebiliriz.

#pw useradd user1 -s /usr/bin/false -g ftp -d /usr/local/www/data/user1 -m

Not:eğer kullanıcının dizini önceden oluşturduysanız komutun sonundaki "-m" parametresini kullanmaya bilirsiniz.Fakat unutmayınki daha önce oluşturmuş olduğunuz dizinin ownerı olarak user1 kullanıcısını atamazsanız kullanıcı dizine dosya aktaramaz.Dizin üzerinde kullanıcıya tam yetki vermek için

#chown -R user1:ftp /usr/local/www/data/user1

Oluşturmuş olduğunuz yeni kullanıcının şifresini değiştirerek ftp ile erişmesine izin verebilirsiniz.

# passwd user1Changing local password for user1.New password:Retype new password:passwd: updating the database...passwd: done#

Sistem üzerinde gerek kurulum yaparken gerekse programları çalıştırırken kimi zaman hatalar alabilir kimi zaman iste ekrana hiçbir hata basmamasına rağmen program çalışmaya bilir.Hatanın nerde olduğunu tesbit etmek için bize log dosyaları yardımcı olacaktır.Yukarda anlatmaya çalıştığım konular ile ilgili olarak aşağıdaki log dosyalarını kontrol etmeniz her zaman için yararınızadır.

Freebsd sistemi üzerinde loglar siz farklı yerleri göstermediğiniz takdirde /var/log dizini altında olacaktır.Sadece apache logları fazla yer kapladığı için dökümanda /usr/local/logs dizini altına atılması için ayarlar yapılmıştır.

Sistem içinde genel olarak messages ve apache için httpd-error.log dosyalarını sorunları çözmeniz için gerekli yardımları yapacaklardır.

Aksi belirtilmedigi takdirde bu dökumanın hakkı dökümanı yazan yazara aittir.

Bu dökuman, parça parça ya da tamamen herhangi bir şekilde, yazarın izni dahilinde dağıtılabilir.

Yazar, bu dokümanı okuyanların uğrayacakları herhangi bir zarardan ötürü sorumluluk kabul etmez. Use at your own risk!

Eger, herhangi bir konuda yardıma ihtiyacınız olursa, [email protected] adresine mail atabilirsiniz.!

Eksik yada hatalarını fark ettiğiniz pasajları bildirmeniz durumunda gerekli değişiklik yapılacaktır.

Link to comment
Share on other sites

  • 1 yıl yıl...
  • 1 ay sonra...

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...