Ubuntu Sunucusunda Apache Sanal Konakları Nasıl Kurulur
Giriş
Apache HTTP sunucusu, geliştiriciler için esneklik, güç ve yaygın destek sunan popüler bir açık kaynak web sunucusudur. Apache sunucu yapılandırması tek bir büyük dosyada yapılmaz; bunun yerine modüler bir tasarım aracılığıyla gerçekleştirilir ve gerektiğinde yeni dosyalar eklenip değiştirilebilir. Bu modüler tasarım içinde, sanal ana bilgisayar adı verilen bireysel bir site veya alan oluşturabilirsiniz.
Sanal sunucular kullanarak, tek bir Apache örneği birden fazla web sitesine hizmet verebilir. Apache kullanılarak yapılandırılmış her alan adı veya bireysel site, ziyaretçiyi sitenin bilgilerini içeren belirli bir dizine yönlendirir. Bu, ziyaretçiye aynı sunucunun diğer sitelerden de sorumlu olduğunu belirtmeden yapılır. Bu düzen, sunucunuz yükü kaldırabildiği sürece herhangi bir yazılım sınırlaması olmaksızın genişletilebilir.
Bu rehberde, bir Ubuntu sunucusunda Apache sanal hostlarını kuracaksınız. Bu süreçte, hangi alan adlarını talep ettiklerine bağlı olarak farklı ziyaretçilere farklı içerikler sunmayı, iki sanal host sitesi oluşturarak öğreneceksiniz.
Son Ubuntu sürümlerinde doğrulanmıştır: Bu eğitimdeki adımlar ve komutlar Ubuntu 20.04 LTS, 22.04 LTS ve 24.04 LTS üzerinde doğrulanmıştır. Apache’in yapılandırma düzeni (sites-available, sites-enabled, a2ensite, a2dissite) ve burada kullanılan dizin yapısı bu sürümlerin tümünde aynıdır.
Anahtar çıkarımlar
- Sanal sunucular, tek bir Apache örneğinin birden fazla siteye hizmet vermesini sağlar; her alan adı kendi belge köküne yönlendirilir.
- Her site için
/var/wwwaltında bir dizin oluşturursunuz (örneğin,/var/www/your_domain/public_html) ve web sunucusunun dosyaları okuyabilmesi ve sizin kullanıcı olarak dosyaları düzenleyebilmeniz için sahiplik ve izinleri ayarlarsınız. - Her site,
ServerName,ServerAliasveDocumentRootile/etc/apache2/sites-available/içinde kendi yapılandırma dosyasını alır. - Siteleri etkinleştirmek veya devre dışı bırakmak için
a2ensitevea2dissitekomutlarını kullanın, ardından değişikliklerin uygulanması için Apache'i yeniden yükleyin veya yeniden başlatın. - Gerçek bir DNS olmadan test yapmak için yerel
hostsdosyanızı düzenleyerek örnek alan adlarınızı sunucu IP’sine yönlendirebilirsiniz.
Önkoşullar
Bu eğitime başlamadan önce ihtiyacınız olacak:
- Sudo ayrıcalıklarına sahip kök olmayan bir kullanıcı ile bir Ubuntu sunucusu. Bunu ayarlamak için Ubuntu ile Başlangıç Sunucu Kurulumu kılavuzumuzu kullanabilirsiniz.
- Sunucuya Apache yüklendi. Bunu nasıl yapacağınızı, Ubuntu üzerinde Apache Web Sunucusunu Yükleme kılavuzumuzdaki 1-3 adımlarını tamamlayarak öğrenebilirsiniz.
Eğer Linux-Console.net kullanıyorsanız, ürün belgelerimizi takip ederek alan adlarının nasıl kurulacağını öğrenebilirsiniz: Alan adlarını ekleme ve kurma.
Bu eğitimi başarıyla tamamlamak için aşağıdaki özelliklere sahip iki alan adına ihtiyacınız olacak:
- Alan adınızın, sunucunuzun genel IP adresine yönlendiren bir A kaydı.
- www.sizin_domaininiz ile sunucunuzun genel IP adresine işaret eden bir A kaydı.
Diğer sağlayıcılar için, lütfen ilgili ürün belgelerine bakın.
Not: Eğer şu an kullanılabilir alan adlarınız yoksa, test değerlerini bilgisayarınızda yerel olarak kullanabilirsiniz. Bu öğreticinin 6. Adımı, test değerlerini nasıl test edip yapılandıracağınızı gösterecektir. Bu, içeriğiniz diğer ziyaretçiler tarafından alan adı üzerinden erişilebilir olmasa da yapılandırmanızı doğrulamanıza olanak tanır.
Adım 1 — Dizin Yapısını Oluşturma
İlk adım, ziyaretçilere sunacağınız site verilerini tutacak bir dizin yapısı oluşturmaktır.
Apache'in içerik sunmak için baktığı en üst düzey dizin olan belge kökünüz, /var/www dizini altındaki ayrı dizinlere ayarlanacaktır. Her bir sanal sunucu için burada bir dizin oluşturacaksınız.
Bu dizinlerin her birinin içinde, bir public_html dizini oluşturacaksınız. public_html dizini, ziyaretçilerinize sunulacak içeriği içerir. Burada your_domain_1 ve your_domain_2 olarak adlandırılan üst dizinler ise web içeriğini destekleyecek betikler ve uygulama kodunu barındıracaktır.
Kendi alan adlarınızla bu komutları kullanarak dizinlerinizi oluşturun:
sudo mkdir -p /var/www/your_domain_1/public_html
sudo mkdir -p /var/www/your_domain_2/public_htmlyour_domain_1 ve your_domain_2 yerlerine kendi alan adlarınızı koymayı unutmayın. Örneğin, alan adlarınızdan biri example.com ise, aşağıdaki dizin yapısını oluşturursunuz: /var/www/example.com/public_html.
Adım 2 — İzin Verme
Dosyalarınız için dizin yapısını oluşturdunuz, ancak bunlar root kullanıcıya ait. Eğer normal kullanıcınızın bu web dizinlerindeki dosyaları değiştirebilmesini istiyorsanız, sahipliği bu komutlarla değiştirebilirsiniz:
sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
sudo chown -R $USER:$USER /var/www/your_domain_2/public_html$USER değişkeni, ENTER tuşuna bastığınızda şu anda oturum açtığınız kullanıcının değerini alacaktır. Bunu yaparak, normal kullanıcı artık içeriğinizi depolayacağınız public_html alt dizinlerine sahip olmuş olur.
Sayfaların doğru şekilde sunulabilmesi için, genel web dizinine ve içerdiği tüm dosya ve klasörlere okuma erişiminin izin verildiğinden emin olmak için izinlerinizi de değiştirmelisiniz:
sudo chmod -R 755 /var/wwwWeb sunucunuz artık içerik sunmak için gereken izinlere sahip ve kullanıcınız gerekli klasörler içinde içerik oluşturabilmelidir. Bir sonraki adım, sanal ana bilgisayar siteleriniz için içerik oluşturmaktır.
Adım 3 — Her Sanal Sunucu için Varsayılan Sayfaların Oluşturulması
Dizin yapınız hazır olduğunda, her bir sanal ana bilgisayar sitesine ve o site içerisindeki içeriğe odaklanmaya başlayabilirsiniz. İlk siteniz your_domain_1 için bir index.html sayfası oluşturarak başlayın.
Tercih ettiğiniz metin düzenleyici ile index.html dosyasını açın ve oluşturun. Bu örnekte nano kullanılmıştır:
nano /var/www/your_domain_1/public_html/index.htmlBu dosya içinde, ziyaretçilere hangi siteye bağlı olduklarını gösteren bir HTML dosyası oluşturun:
<html>
<head>
<title>Welcome to your_domain_1!</title>
</head>
<body>
<h1>Success! The your_domain_1 virtual host is working!</h1>
</body>
</html>Dosyayı nano içinde kaydetmek ve kapatmak için önce CTRL+X tuşlarına basın. Dosyayı kaydetmek için istendiğinde Y tuşuna basın, ardından çıkmak için tamamladığınızda ENTER tuşuna basın.
Sonraki adım olarak, bu dosyayı ikinci siteniz için temel olarak kullanmak üzere kopyalamak için şunu yazın:
cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.htmlSonra bu yeni dosyayı açın ve daha önce olduğu gibi ilgili bilgileri metin düzenleyicinizle değiştirin:
nano /var/www/your_domain_2/public_html/index.html<html>
<head>
<title>Welcome to your_domain_2!</title>
</head>
<body> <h1>Success! The your_domain_2 virtual host is working!</h1>
</body>
</html>
Bu dosyayı kaydedin ve kapatın. Artık sanal sunucu yapılandırmasını test etmek için kullanabileceğiniz her site için bir sayfanız var.
Adım 4 — Yeni Sanal Sunucu Dosyalarının Oluşturulması
Sanal sunucu dosyaları, sanal sunucularınızın gerçek yapılandırmasını belirler ve Apache web sunucusunun farklı alan adı isteklerine nasıl yanıt vereceğini kontrol eder. Apache’in düzeni ve genel seçenekleri hakkında daha fazla bilgi için, Ubuntu veya Debian VPS üzerinde Apache Web Sunucusunun Nasıl Yapılandırılacağına Bakın.
Apache, 000-default.conf adlı varsayılan bir sanal sunucu dosyasıyla gelir. Bu dosyayı kopyalayarak her bir alan adınız için sanal sunucu dosyaları oluşturabilirsiniz.
Varsayılan yapılandırma dosyasını ilk domaine kopyalayın:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.confVarsayılan Ubuntu yapılandırmasının her sanal sunucu dosyasının .conf ile bitmesini gerektirdiğini unutmayın.
Yeni dosyayı tercih ettiğiniz metin düzenleyicide root ayrıcalıklarıyla açın:
sudo nano /etc/apache2/sites-available/your_domain_1.confYorumlar kaldırıldığında, dosya buna benzer olacaktır:
<VirtualHost *:80>
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Bu dosya içinde, ilk alan adınız için öğeleri özelleştirin ve bazı ek yönergeler ekleyin. Bu sanal sunucu bölümü, varsayılan HTTP portu olan 80 üzerinde yapılan herhangi bir istekle eşleşir.
Öncelikle, ServerAdmin yönergesini, site yöneticisinin e-posta alabileceği bir e-posta adresi ile değiştirin:
ServerAdmin admin@your_domain_1Bunun ardından iki ek yönerge ekleyin. İlki, ServerName olarak adlandırılır ve sanal sunucu tanımı için temel alan adını belirler. İkincisi, ServerAlias olarak adlandırılır ve temel ad ile eşleşmiş gibi olması gereken ek adları tanımlar. Bu, tanımladığınız ek sunucularla eşleşmek için faydalıdır. Örneğin, ServerName yönergesini example.com olarak ayarlarsanız, bir ServerAlias olarak www.example.com tanımlayabilir ve her ikisi de bu sunucunun IP adresine yönlenecektir.
Bu iki direktifi ServerAdmin satırından sonra yapılandırma dosyanıza ekleyin:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/html
...
</VirtualHost>Sonra, bu alan adı için belge kökü konumunu sanal ana bilgisayar dosyanızda değiştirin. DocumentRoot yönergesini, bu ana bilgisayar için oluşturduğunuz dizini gösterecek şekilde düzenleyin:
DocumentRoot /var/www/your_domain_1/public_htmlİşte yukarıda yapılan tüm ayarlamalarla sanal sunucu dosyasına bir örnek:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/your_domain_1/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>Dosyayı kaydedip kapat.
İkinci yapılandırma dosyanızı, ilk sanal sunucu sitenizden dosyayı kopyalayarak oluşturun:
sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.confYeni dosyayı tercih ettiğiniz editörde açın:
sudo nano /etc/apache2/sites-available/your_domain_2.confŞimdi tüm bilgileri ikinci alan adınıza referans verecek şekilde değiştirmeniz gerekiyor. İşiniz bittiğinde, şöyle görünmelidir:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_2
ServerName your_domain_2
ServerAlias www.your_domain_2
DocumentRoot /var/www/your_domain_2/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>İşiniz bitince dosyayı kaydedip kapatın.
Adım 5 — Yeni Sanal Sunucu Dosyalarını Etkinleştirme
Artık sanal sunucu dosyalarınızı oluşturduğunuza göre, onları etkinleştirmeniz gerekir. Apache, bunu yapmanıza olanak tanıyan bazı araçlar içerir.
Her sitenizi etkinleştirmek için a2ensite aracını kullanacaksınız. Bu betik hakkında daha fazla bilgi edinmek isterseniz, a2ensite man sayfasına başvurabilirsiniz.
Sanal ana bilgisayar sitelerinizi etkinleştirmek için aşağıdaki komutları kullanın:
sudo a2ensite your_domain_1.conf
sudo a2ensite your_domain_2.confAşağıdaki örneğe benzer şekilde her iki site için de çıktı olacak ve Apache sunucunuzu yeniden yüklemeniz gerektiğini hatırlatacaktır:
Enabling site example.com.
To activate the new configuration, you need to run:
systemctl reload apache2Sunucunuzu yeniden başlatmadan önce, a2dissite komutunu kullanarak 000-default.conf dosyasında tanımlı varsayılan siteyi devre dışı bırakın:
sudo a2dissite 000-default.confSite 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2Sonraki adım, yapılandırma hatalarını test edin:
sudo apache2ctl configtestAşağıdaki çıktıyı almanız gerekir:
. . .
Syntax OKİşiniz bittiğinde, bu değişikliklerin geçerli olması için Apache'yi yeniden başlatın.
sudo systemctl restart apache2İsteğe bağlı olarak, tüm bu değişikliklerden sonra sunucunun durumunu bu komutla kontrol edebilirsiniz:
sudo systemctl status apache2Sunucunuz artık iki web sitesine hizmet verecek şekilde ayarlanmış olmalıdır. Gerçek alan adları kullanıyorsanız, 6. Adımı atlayıp 7. Adıma geçebilirsiniz. Yapılandırmanızı yerel olarak test ediyorsanız, yerel bilgisayarınızı kullanarak kurulumu nasıl test edeceğinizi öğrenmek için 6. Adımı izleyin.
Adım 6 — (İsteğe Bağlı) Yerel Hosts Dosyasını Ayarlama
Eğer bu işlemi test etmek için sahip olduğunuz gerçek alan adlarını kullanmadıysanız ve bunun yerine örnek alan adları kullanıyorsanız, sanal ana bilgisayar sitelerinizin işlevselliğini test etmek için yerel bilgisayarınızdaki hosts dosyasını geçici olarak değiştirebilirsiniz. Bu, yapılandırdığınız alan adlarına yapılan tüm istekleri keser ve bunları Sanal Özel Sunucunuza (VPS) yönlendirir; tıpkı kayıtlı alan adları kullanıyorsanız DNS sisteminin yapacağı gibi. Bu sadece yerel bilgisayarınızdan çalışacak ve yalnızca test amaçlıdır.
Bu adımları uygularken VPS sunucunuzda değil, yerel bilgisayarınızda çalıştığınızdan emin olun. Bilgisayarın yönetici şifresini bilmeniz veya aksi halde yönetici grubunun bir üyesi olmanız gerekecek.
Eğer bir Mac veya Linux bilgisayar kullanıyorsanız, yerel dosyanızı yönetici ayrıcalıklarıyla düzenlemek için şunu yazın:
sudo nano /etc/hostsEğer bir Windows bilgisayarındaysanız, Komut İstemi'ni açın ve şunu yazın:
notepad %windir%\system32\drivers\etc\hostsEklemeniz gereken detaylar, sunucunuzun genel IP adresi ve ardından bu sunucuya erişmek için kullanmak istediğiniz alan adıdır. Bu kılavuzda kullanılan alan adlarını kullanarak ve sunucu IP’nizi your_server_IP metni ile değiştirerek dosyanız şu şekilde görünmelidir:
127.0.0.1 localhost
127.0.1.1 guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2Bu, bilgisayarınızdaki iki alan adınız için yapılan tüm talepleri yönlendirir ve bunları belirtilen IP adresindeki sunucunuza gönderir.
Dosyayı kaydedip kapat.
Adım 7 — Sonuçlarınızı Test Etme
Artık sanal sunucularınızı yapılandırdığınıza göre, web tarayıcınızda yapılandırdığınız alan adlarına giderek kurulumunuzu test edebilirsiniz:
http://your_domain_1Ayrıca ikinci ana bilgisayar sayfanızı ziyaret edebilir ve ikinci siteniz için oluşturduğunuz dosyayı görüntüleyebilirsiniz:
http://your_domain_2Her iki site de beklediğiniz gibi çalışıyorsa, aynı sunucuda iki sanal ana bilgisayarı başarıyla yapılandırmışsınız demektir.
Not: Eğer bu eğitimin 6. adımında olduğu gibi yerel bilgisayarınızın hosts dosyasını değiştirdiyseniz, yapılandırmanızın çalıştığını doğruladığınızda eklediğiniz satırları silmek isteyebilirsiniz. Bu, hosts dosyanızın artık gerekli olmayan girdilerle dolmasını önleyecektir.
Sıkça Sorulan Sorular
1. Apache Sanal Hostları nedir?
Apache Sanal Sunucuları, tek bir Apache sunucusunda birden fazla web sitesini çalıştırmanın bir yoludur. Her sanal sunucunun kendi alan adı (veya alt alan adı), belge kökü ve ayarları vardır. Ziyaretçiler yalnızca istedikleri alan adı için siteyi görür; diğer sitelerin aynı sunucuda olduğunu görmezler.
2. Apache kaç tane sanal sunucuyu yönetebilir?
Apache sanal sunucu sayısını sınırlamaz. Sunucunuzun kaynakları yettiği sürece istediğiniz kadar ekleyebilirsiniz. Her yeni site için /etc/apache2/sites-available/ altında kendi yapılandırma dosyası, /var/www altında kendi dizini gerekir ve ardından a2ensite ile etkinleştirip Apache'i yeniden yükleyebilirsiniz.
3. ServerName ve ServerAlias arasındaki fark nedir?
ServerName ve ServerAlias yönergeleri, Apache'nin her sanal sunucu için hangi ana bilgisayar adlarına yanıt vereceğini belirtir, ancak bunlar biraz farklı amaçlara hizmet eder:
| Yönerge | Açıklama | Örnek |
|---|---|---|
| Sanal sunucu için ana, resmi ana bilgisayar adı. Apache bu adı tam olarak eşleştirir. | |
| Bu sanal sunucuya yönlendiren alternatif ana bilgisayar adları, joker karakterler dahil. | |
Bu nasıl çalışıyor?
- Ana alan için
ServerNamekullanın. ServerAlias'i aynı site içeriğini göstermesi gereken diğer alan adları (örneğinwww.sürümleri veya alt alan adları) için kullanın.
ServerName veya ServerAlias girişlerinden herhangi biriyle eşleşen herhangi bir istek, o sanal sunucu tarafından karşılanır. Daha fazla bilgi için, resmi Apache sanal sunucu belgelerine bakın.
4. Sanal sunucular için bir alan adına ihtiyacım var mı?
Bu kılavuzu izlemek için kayıtlı bir alan adına ihtiyaç duymazsınız. Örnek ana bilgisayar adlarını kullanabilir ve bunları bilgisayarınızda hosts dosyasını düzenleyerek sunucunuza yönlendirebilirsiniz (bkz. Adım 6). Başkalarının internet üzerinden erişeceği bir site için gerçek bir alan adı ve bunu sunucunuza yönlendirecek DNS kayıtlarına ihtiyacınız vardır. Linux-Console.net kullanıyorsanız, kontrol panelinden alan adları ekleyebilir ve yönetebilirsiniz; bir alan adını nasıl ekleyeceğiniz hakkında bilgi için DNS hızlı başlangıç kılavuzumuza bakın.
5. Apache sanal sunucu dosyaları nerede depolanır?
Ubuntu ve Debian'da, sanal sunucu yapılandırmaları /etc/apache2/sites-available/ dizininde bulunur. Her sitenin orada bir .conf dosyası vardır (örneğin, example.com.conf). Bir siteyi a2ensite ile etkinleştirmek, o dosyaya işaret eden bir sembolik bağlantıyı /etc/apache2/sites-enabled/ dizinine ekler. Hiçbir başka sunucuya uymadığında cevap veren varsayılan site ise 000-default.conf'dir.
Sonuç
Artık iki ayrı alan adını yöneten tek bir sunucunuz var. Ek sanal ana bilgisayarlar eklemek için yukarıda belirttiğimiz adımları takip ederek bu süreci genişletebilirsiniz. Apache'in yönetebileceği alan adı sayısı üzerinde bir yazılım sınırlaması yoktur, bu nedenle sunucunuzun kaldırabileceği kadar sanal ana bilgisayar oluşturabilirsiniz.
Sonraki adımlar ve ilgili kaynaklar
- Apache’i güçlendirin ve HTTPS ekleyin: Sanal sunucular çalıştıktan sonra, Ubuntu’da Let’s Encrypt ile Apache’i Güvence Altına Alma adlı rehberi kullanarak TLS ekleyebilir ve Ubuntu veya Debian VPS üzerinde Apache Web Sunucusunu Yapılandırma rehberi ile sunucuyu optimize edebilirsiniz.
- Tam LAMP yığını: Aynı Ubuntu sunucusuna MySQL ve PHP eklemek için, Ubuntu Üzerine LAMP Yığını Kurulumunu Nasıl Yapılır başlıklı rehberi takip edin.
- Linux-Console.net ürünleri: Ubuntu ve Apache çalıştırmak için Droplets kullanın ve alan adı kayıtlarını yönetmek ve alan adlarınızı sunucunuza yönlendirmek için DNS kullanın. Ürün belgeleri: Bir alan adı ekleme (DNS hızlı başlangıç).
Linux-Console.net Topluluğu ile öğrenme sürecine katıldığınız için teşekkürler.


