2.07.2010

Ubuntu Server üzerine Apache web sunucu kurulumu

Ubuntu Server'ın kurulumunu tamamladıktan Apache'yi çalıştırabilmek için önce TCP/IP ayarlarının yapılması gerek. Dinamik IP ile DNS kaydı linux'ta nasıl yapılır, bilmiyorum. Bu sebeple statik bir IP adresi verdim. Ardından alan adlarına göre çalışan bir web sunucu için DNS sunucu ayarlarının yapılması gerek (aynı sunucuda veya başka sunucuda). Daha önceki şu yazımda DNS sunucu yapılandırmasını anlatmıştım. Bunlar bittikten sonra şu komutla Apache'nin kurulumu yaptım:
sudo apt-get install apache2
Apache kurulumunun başarıyla sonuçlandığından emin olmak için makinenin IP adresi ile web tarayıcıdan erişimi denedim, sorun yok. Aşağıdaki Apache'nin varsayılan web sitesi.


Bundan sonraki adım, DNS sunucuda ayarları yapılan example.com alan adına ait web sunucusunu yaratmak. Önce bu sunucun verilerinin tutulacağı yeri belirlememiz gerek. Ben /var/www/example.com'u seçtim (/home/username/www de olabilirdi). Bu klasörü yaratıyorum.
sudo mkdir /var/www/example.com
İçine de çok basit bir index.html dosyası yarattım.

<html>
  <head>
    <title>Title of example.com</title>
  </head>
   <body>
    <h1>Welcome</h1>
     <p>Here is the data of example.com</p>
  </body>
</html>

Apache'de çalışan web sunucuları /etc/apache2/sites-available klasörünün altındaki yapılandırma dosyalarıyla belirleniyor. İlk kurulumda burada sadece default var. Her web sunucu için burada bir yapılandırma dosyası yaratmak gerek. Önerilen yöntemlerden biri default'un bir kopyasını çıkararak üzerinde bizim alan adımız için değişiklikler yapmak. Bu yöntemi uygulayacaksak önce default'un bir kopyasını yaratalım.

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example.com
Aşağıda kırmızı ile gösterdiğim satırları bu dosyaya ben ekledim. Mavi satırlar vardı, ben onları example.com alan adına göre değiştirdim.

<VirtualHost *:80>
  ServerAdmin webmaster@example.com
  DocumentRoot /var/www/example.com
  ServerName www.example.com
  ServerAlias example.com
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>
 
  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory /usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>
 
  ErrorLog /var/log/apache2/error.log
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog /var/log/apache2/access.log combined
 
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  Order deny,allow Deny from all
  Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</virtualHost>

Ya da debian-administration.org sitesinde anlatıldığı gibi dosyayı yeniden oluşturabilirsiniz. Bu sitedeki örnek dosyanın içeriği

<VirtualHost *> # Burada *:80 olması gerekecek!!!
        ServerAdmin webmaster@example.com
        ServerName  www.example.com
        ServerAlias example.com

        # Indexes + Directory Root.
        DirectoryIndex index.html
        DocumentRoot /home/www/www.example.com/

        # CGI Directory
        ScriptAlias /cgi-bin/ /home/www/www.example.com/cgi-bin/
        <Location /cgi-bin>
                Options +ExecCGI
        </Location>


        # Logfiles
        ErrorLog  /home/www/www.example.com/logs/error.log
        CustomLog /home/www/www.example.com/logs/access.log combined
</VirtualHost>

ErrorLog ve CustomLog ile hata dosyalarının yerlerini belirlemek de iyi bir fikir.

Bir makine üzerinde birden fazla web sunucu çalıştırabilmek için şu 3 koşuldan birinin sağlanması gerek:
  1. IP adresleri farklı olmalı
  2. Dinledikleri port farklı olmalı (default 80)
  3. Host header'ları farklı olmalı
Bu şartların arasında en pratik olanı 3.sü. Bu konuyu öğrenirken en çok bu noktada kafam karıştı. Dökümantasyona göre ya virtual.conf dosyasına, ya da diğer yapılandırma dosyalarının birine NameVirtualHost direktifini eklemem gerekiyordu. Ne yaptıysam hatalardan kurtulamadım. Sonunda farkettim ki, ports.conf dosyasında zaten bir tane NameVirtualHost *:80 direktifi varmış. İkinciyi eklemeye gerek yok. Peki *:80 ne demek? Makinenin sahip olduğu bütün IP adreslerinde 80 numaralı portu dinle demek. Web sitemizin yapılandırma dosyasındaki <VirtualHost *:80> direktifine de dikkat! ports.conf dosyasında *:80 olduğu için burada da *:80 kullanmalıyız. debian-administration.org örneğindeki gibi <VirtualHost *> kullandığımda hata mesajıyla karşılaştım. Onun için yukarıda kırmızı ile bunu ayrıca vurguladım.

Bu noktadan sonra default web sitemi kapatıp (namevirtualhost kullandığımızı varsayarsak bu da seçimlik; isterseniz kapatmayabilirsiniz) yeni yarattığım example.com'u etkinleştirmem gerek. Bunu aşağıdaki script'lerle yapıyorum. Ardından da apache'yi reload etmem gerek.

sudo a2dissite /etc/apache2/sites-available/default
sudo a2ensite /etc/apache2/sites-available/example.com
sudo /etc/init.d/apache reload

Bundan sonra sitemizi denemek için web tarayıcımızın adres satırına www.example.com yazmak kaldı. Eğer şu ekranla karşılaşırsanız


DNS ayarlarınızı kontrol etmeniz gerekecek. Çünkü bu sayfa, sizin kurduğunuz Ubuntu Server'dan değil, internetteki bir sunucudan geliyor. Bu tarayıcının çalıştığı bilgisayarın DNS sunucusunu Ubuntu'nun adresi olarak vermeniz gerek. Bunu yapınca yarattığım index.html dosyası karşıma geldi:


Hiç yorum yok: