DigitalOcean üzerinde oluşturduğumuz Ubuntu üzerine Nginx ve Grav kurulumu gerçekleştirdik. Bu yazıda ise daha önce bahsettiğim Nginx yapısı ve .conf işlemlerini detaylandıracak ve sahip olduğumuz domain (alanladı) tanımlamalarını gerçekleştireceğiz. Tanımlama işlemlerini hem tek kurulum (Grav, WordPress MU vb.) üzerinden cevap verecek alan adı hem de çoklu site kullanımında her domain ile başka bir alt sitenin görüntülenmesi üzerine gerçekleştireceğiz.

DigitalOcean üzerinden gerçekleştirilen temel kurulum sürecinin ardından eğer aksi belirtilmemişse yayın /var/www/html/ yolu üzerinden gerçekleştirilecektir.

Tek Domain İle Erişim

Dosyalarınızı doğrudan /var/www/html/ içeriğinden sunabileceğiniz gibi bir alt klasör daha oluşturabilirsiniz. Örneğin Nginx ve Grav kurulumu ile ilgili yazımda grav adında bir klasör oluşturmuş (/var/www/html/grav/) ve site yayınını bu klasör üzerinden gerçekleştirmiştik. Benzer bir tercihte bulunabilirsiniz. Önemli olan /etc/nginx/sites-available/ ve /etc/nginx/sites-enabled/ yapılarını doğru bir şekilde gerçekleştirmek olduğu için yapılandırma işlemlerini baştan planlamak uygun olacaktır.

Temel Bilgiler

sites-available içeriğine göz attığımızda default ve digitalocean yapılandırmalarını göreceğiz.

default her yapılandırma için ön tanımlandırmaların tutulduğu dosyamız. digitalocean ise default üzerinden oluşturulmuş ve kullanımda olan ayarları barındırmakta. digitalocean dosyasını silebilir ya da içeriğini ihtiyaçlarınıza uygun şekilde değiştirerek kullanabilirsiniz. Bu düzenlemeler için aşağıdaki yönergeleri takip edebilirsiniz.

# digitalocean dosyası ve linkini siliyorum
rm /etc/nginx/sites-available/digitalocean
rm /etc/nginx/sites-enabled/digitalocean

Domain tanımlama işleminde default altındaki server_name, klasör değişikliklerinde ise root /var/www/html değerinin değiştirilmesi gerekmektedir.

Örnek olarak alanadi.com için işlemlerimizi alt klasör (alanadi, alanadi.com ya da istediğimiz başka bir isim ile oluşturabiliriz) oluşturarak yapalım. İşlemleri root olarak da devam ettirebilirsiniz.

cd /var/www/html
mkdir /var/www/html/alanadi.com
server {
        listen 80 default_server;
        listen [::]:80 default_server;
 
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
 
        server_name _;
 
        location / {
                try_files $uri $uri/ =404;
        }
}

Domain Tanımlama

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/alanadi.com
nano /etc/nginx/sites-available/alanadi.com
server {
   listen 80;
   root /var/www/html/alanadi.com;
   index index.php index.html index.htm;
 
   server_name alanadi.com;
   access_log /var/log/nginx/alanadi.com.access.log;
   error_log /var/log/nginx/alanadi.com.error.log;
 
   location / {
      try_files $uri $uri/ =404;
   }
 
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
   }
 
   location ~ /\.ht {
      deny all;
   }
}
ln -s /etc/nginx/sites-available/alanadi.com /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Kullanıcı Üzerinden Domain Tanımlama

Peki işlemleri oluşturduğunuz bir kullanıcı üzerinden devam ettirmek isterseniz?

adduser newuser
su - newuser
mkdir www;cd www;mkdir html;cd html;mkdir alanadi.com # /home/newuser/www/html/alanadi.com
exit

Oluşturacağım kullanıcı adının newuser olmasını istiyorum. Evet, şifre tanımlama işlemlerimin ardından newuser adlı kullanıcı hesabımı oluşturmuş olacağım. exit ile tekrar root olarak devam edeceğiz.

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/alanadi.com
nano /etc/nginx/sites-available/alanadi.com
server {
   listen 80;
   root /home/newuser/www/html/alanadi.com;
   index index.php index.html index.htm;
 
   server_name alanadi.com;
   access_log /var/log/nginx/alanadi.com.access.log;
   error_log /var/log/nginx/alanadi.com.error.log;
 
   location / {
      try_files $uri $uri/ =404;
   }
 
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
   }
 
   location ~ /\.ht {
      deny all;
   }
}
ln -s /etc/nginx/sites-available/alanadi.com /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Çoklu Domain İle Erişim

WPMU üzerinden bu konuyu açıklayacağım. Grav yazısında bahsettiğim subdirectory ve subdomain ile ilişkili olarak şöyle bir senaryo oluşturalım.

Site 1: alanadi.com (ana domainimiz)
WordPress ve Grav kurulumlarımız bu domain ile ilişkili olan klasör içerisinde barınıyor.

Site 2: site2.net
Subdomain: site2.alanadi.com
Subdirectory: alanadi.com/site2

Site 3: site3.org
Subdomain: site3.alanadi.com
Subdirectory: alanadi.com/site3

Elbette site sayısı ihtiyaçlarınıza göre artabilir.

DNS yapılandırmalarınızı (A record) gerçekleştirdiğinizi varsayıyorum.

Dns add wildcard a record

Yukarıdaki düzenlemelerin ardından wordpress örneğindeki çoklu kullanım aktivasyonunu da yapmanız gerekmekte. Define tanımlama sürecinde DOMAIN_CURRENT_SITE değerini alanadi.com olarak düzenlemeyi unutmamalısınız.

define('DOMAIN_CURRENT_SITE', 'alanadi.com');

Bu işlemler ardından ise domain yönetimi için kullanacağınız nginx düzenlemesi şu şekilde olacaktır.

server {
   listen [::]:80;
   root /var/www/html/wordpress;
   index index.php index.html index.htm;
 
   server_name alanadi.com *.alandi.com site2.net site3.org;
   access_log /var/log/nginx/alanadi.com.access.log;
   error_log /var/log/nginx/alanadi.com.error.log;
 
   location / {
      try_files $uri $uri/ /index.php?$args;
      # try_files $uri $uri/ =404;
   }
 
   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
   }
 
   location ~ /\.ht {
      deny all;
   }
}

Temel işlemleri bu şekilde özetleyebiliriz. Süreç içerisinde karşılaştığınız problemler ya da ek ihtiyaçlar olursa yorum olarak iletebilirsiniz.

Leave a Reply