Nginx

Her zamanki gibi, işleme sudo yetkisine sahip normal bir kullanıcı ile başlıyoruz depoları güncelledikten sonra nginx’i kuruyoruz.

sudo apt update
sudo apt install nginx

Firewall ayarlarından Nginx Full olanı seçiyoruz. Böylece http ve https bağlantılarına izin verilmiş olacak. Son olarak enable seçeneğiyle firewall her açılışta aktif hale gelecek.

sudo ufw allow 'Nginx Full'
sudo ufw enable

Bu adımda size ssh bağlantısının kesilebileceği uyarısı gelecektir. Evet seçeneğiyle devam edin, bağlantınız kesilmeyecek çünkü ssh portu 22 varsayılan olarak açık geliyor. Nginx kuruldu ve firewall ayarları yapıldı. Sunucu IP adresini tarayıcıdan çağırdığınızda nginx hoşgeldiniz sayfası gelecektir.

MySQL

sudo apt install mysql-server

Bu adımda mysql için bazı güvenlik ayarlamalarını yapacağımız, kurulumla birlikte gelen scripti çalıştırıyoruz.

sudo mysql_secure_installation

Sizden ilk olarak VALIDATE PASSWORD PLUGIN için onay istenecek. Bu özelliği NO ile devre dışı bırakmanızı öneriyorum ancak her zaman güçlü ve tahmini zor şifreler seçmeye özen göstermelisiniz. İnternette hazır şifre üreticilerden yardım alınabilir. Güçlü şifreler oluşturmak için BU SİTEYİ kullanın.

Kalan sorulara cevap olarak her seferinde Y girin ve entere basın. Bu süreçte anonim kullanıcılar ile test veritabanını kaldırılacak, uzaktan root girişini kapatacak ve yeni kuralları aktif hale getirecektir. Şimdi test edelim.

sudo mysql

Programın çıktısı şöyle olacaktır:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

exit komutu ile çıkış yapabilirsiniz.

Dikkat ettiyseniz mysql root şifresi oluşturmadık çünkü mysql yetkilendirme için password yerine unix_socket kullanıyor. Bu ilk başta bir güvenlik açığı gibi görünse de aslında sistemi daha güvenli kılıyor. İleride mysql root şifresine ihtiyacınız olursa bir tane oluşturabilirsiniz.

PHP

sudo apt install php-fpm php-mysql

PHP kurulumu bu kadardı. Sırada nginx’in php ile sorunsuz çalışması için yapacağımız bazı önemli ayarlar var.

Nginx için varsayılan web kök dizini /var/www/html dir ve tek bir web sitesi kullanacaksanız başka ayara gerek yoktur. Biz çoklu site kullanımına göre example.com için ayarımızı yapacağız.

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html

Alan adımız için gerekli dizinleri oluşturduk ve kullanıcımıza erişim haklarını verdik. Şimdi nginx’e sitemizi tanıtalım.

sudo nano /etc/nginx/sites-available/example.com

Açılan dosyanın içine aşağıdaki bilgileri girin.

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;

    index index.html index.htm index.php;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }
    
    location ~ /\.ht {
        deny all;
    }

}

Son olarak sembolik bağlantıyı veriyoruz, yazımda hata olup olmadığını denetliyoruz ve nginx’i yeniden başlatıyoruz.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Kurulumu tamamladık ancak web kökünde halen dosya yok ve sitemiz boş gözüküyor. Test etmek için basit index dosyası hazırlamak yeterlidir.

nano /var/www/example.com/html/index.html

dosyasına alttaki içeriği girin

<html>
  <head>
    <title>Hoşgeldiniz</title>
  </head>
  <body>
    <h1>Merhaba Dünya!</h1>
    <p>Example.com için test sayfasıdır</p>
  </body>
</html>

Artık alan adınızı tarayıcıdan açtığınızda karşınıza bu test sayfası gelecektir. Dikkat ederseniz web kök dosyalarımız artık /var/www/html klasöründen okunmuyor. Blok oluşturmanın güzel yanı bu.

Şimdi PHP’nin doğru çalıştığından emin olmak için bize detaylı çıktı veren php test sayfasını oluşturalım.

echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.com/html/info.php

Burada info.php dosyasını tarayıcıdan çağırdığınızda detaylı php bilgilerine ulaşabilirsiniz. Kontrol ettikten sonra dosyayı silmeyi unutmayın!

Kurulumu tamamladık. Aynı metodu izleyerek, daha fazla siteyi sunucuda host edebilirsiniz.