Linux tabanlı Ubuntu işletim sisteminde Nginx ile PHP projesi nasıl ayaklandırılır?
Yerel sunucunuzda web sisteminiz ile ilgili her şeyi tamamladınız, peki bunu canlı ortamda müşterilerinize/ziyaretçilerinize nasıl sunacaksınız? Artık bu kaynağı okuduktan sonra böyle bir probleminiz kalmayacak.
Sunucu satın alma işlemlerini atladıktan sonra, hemen gerekli kurulumlara başlıyoruz.
root dizinimizden çalışmaya başlıyoruz.
Benim sunucu özelliklerim:
- 2 VCPU
- 8 GB RAM
- 80 GB SSD
- OS : Ubuntu 20.04.4 LTS
ssh || root bilgileri ile sunucunuza bağlandıktan sonra, sorunlu paketleri düzeltme ve varsa yeni versiyonlarını yükleme komutlarını çalıştırıyoruz.
apt-get update
apt-get upgrade
Bu işlemi yaptıktan sonra nginx yazılımının kurulumunu yapıyoruz.
sudo apt install nginx
Önemli bir bilgi.
Nginx kurulduktan sonra ip adresinizi tarayıcınıza yazıp istek yaptığınızda karşınıza nginx yazılımının index sayfası gelmesi gerekiyor. Eğer bu index sayfası gelmiyor ve bekliyorsanız ek bilgiye ihtiyacınız var.
Linux işletim sistemlerinde gömülü olarak gelen güvenlik duvarı yazılımı bulunuyor.
Bu güvenlik duvarı durumunu kontrol etmek için aşağıda bulunan komutu çalıştırmanız gerekiyor.
ufw status
Gördüğünüz gibi sadece ssh erişimine izin verilmiş durumda.
Yüklediğiniz nginx yazılımına da erişim izni vermeniz gerekiyor.
sudo ufw allow 'Nginx HTTP'
Erişim izninden sonra, tekrar durumu kontrol ediyoruz ve ayarların geçerli olduğunu görüyoruz.
Tekrar ip adresinize istek yaptığınızda index sayfasının görüntülenmesi gerekiyor.
Bu adımdan sonra php derleyicisini yüklemeniz gerek. Ben ‘php-fpm’ kullanıyorum. Neden diye soracak olursanız bu yazıyı daha fazla uzatmamak ve amacımıza hemen ulaşmak için açıklamaları atlıyorum. Daha detaylı bilgilere en aşağıda bulunan kaynaklar bölümünden ulaşabilirsiniz.
sudo apt-get install php-fpm
Güvenlik önlemi
Php derleyicinizi yükledikten sonra kurulum yaptığınız kök dizine gidip bir ayar parametresini değiştirip, derleyicinizi yeniden başlatmanız gerekiyor.
Bu yaptığınız ayar son derece önemli bir ayardır. Eğer bu ayarı değiştirmezseniz php derleyiciniz bulunamayan/olmayan dosyaya ulaşamadığında en yakınında bulunan php dosyasını çalıştırıcaktır. Bu da sisteminizde zafiyete sebep olacaktır.
Hemen vim editörü ile dosyamızı açıyoruz.
sudo vim /etc/php/7.4/fpm/php.ini
Bilgi
Vim editörü yüklü değil ise, aşağıdaki kod ile vim editörünü yükleyebilirsiniz.
sudo apt install vim
‘/’ işareti yazdığınızda arama kısmı açılacaktır. Aşağıdaki ifadeyi yazıp aratıyoruz.
fix_pathinfo
Bulunan satıra inerek, klavyemizden ‘i’ tuşuna basıyoruz ve insert moduna geçiyoruz. Noktalı virgülü kaldırıp, ayarımızı ‘0’ olarak yazıyoruz.
‘Esc’ tuşumuza basıp, ‘:wq’ yazıp enter tuşumuza basıp ayarı kaydediyoruz.
Bu işlemin son adımı olarak aşağıdaki kodu çalıştırıp php-fpm’yi yeniden başlatıyoruz.
sudo systemctl restart php7.4-fpm
Sıra web projenizi karşıya yüklemenize geldi, genellikle linux sistemlerde oluşturulan web sistemleri ‘/var/www’ altında çalıştırılıyor. Ben de bu konumu kullanacağım.
Öncelikle çalıştıracağım projemi sıkıştırıyorum.
Local terminalimi açıyorum.
Aşağıdaki komutumu çalıştırıyorum.
scp /Users/ibrahimsayar/Desktop/training_project.zip root@0.0.14.16:/var/www/
Biraz komutumuzu inceleyelim.
scp komutu yerel bilgisayarınızda bulunan dosya veya klasörü güvenli bir şekilde karşıya yüklemenize olanak sağlıyor.
- ilk yazacağınız adres, yerel bilgisayarınızda bulunan dosyanın konumu
/Users/ibrahimsayar/Desktop/training_project.zip
- ikinci yazacağınız parametre sunucunuzda bulunan hesabınızın kullanıcı adı
root
kullanıcı adımızdan sonra ‘@’ ekliyoruz.
- daha sonra sunucunuzun ip adresi.
0.0.14.16
- ve :’dan sonra dosyanızı sunucunuzda hangi konuma yükleyecekseniz bu adresi yazıyorsunuz.
/var/www/
İpucu
Linux tabanlı işletim sistemlerinde bulunduğunuz konumu görmek için aşağıdaki komutu çalıştırabilirsiniz.
pwd
Bu komutları çalıştırdıktan sonra, dosyanızın başarılı bir şekilde sunucunuza yüklenmesi gerekiyor.
Dosyanızı dışarı çıkartmak için sunucunuza ‘unzip’ yazılımını kurmanız gerekiyor.
sudo apt install unzip
Web sistemimizin olduğu dosyayı dışarı çıkartma adımını gerçekleştiriyoruz.
unzip training_project.zip
Artık son bir işleminiz kaldı. Nginx yazılımına gelen isteğe göre gerekli ayarları kullanmasını söylecek dosyanız. Aşağıdaki komut ile dosyanızı görüntüleyeceğiniz ve düzenleyeceğiniz konuma gidiyorsunuz.
cd /etc/nginx/sites-enabled
Vim editörü ile bu konumda bulunan default isimli dosyayı açıyoruz.
vim default
‘i’ tuşuna basarak insert modunu etkinleştiriyoruz.
Yaptığım yapılandırmaları üstteki resimdeki renkli alanlarla belirttim. Bilgi de vermek istiyorum.
Mavi Çizgi
İşaretli kısma web sistemimizi yüklediğimiz ve dışarı çıkarttığımız konumu belirtmemiz gerekiyor.
Yeşil Çizgi
İşaretli kısma tarayıcıdan ya da herhangi bir sistemden istek yapıldığında ilk hangi dosyamızı sunacağımızı belirtiyoruz.
Pembe Çizgi
İşaretli kısma istek yapacağımız domainimiz ya da domainsiz hangi ip adresinden istek yapacaksak bunu belirtmemiz gerekiyor.
Sarı işaretli alan
php-fpm’nin bulunduğu ve çalışacağı konum. Aşağıdaki gibi belirtmemiz gerekiyor.
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
Kahverengi işaretli alan
Yazdığınız projede .htaccess dosyanız varsa çalıştırılması için gerekli. Eğer yoksa açıklama satırıyla da durabilir.
Bu işlemi de tamamladıktan sonra yine ‘esc’ tuşuna basıp. ‘:wq’ yazarak, enter tuşuna basıp ayarımızı kaydedip, çıkıyoruz.
Yaptığımız yapılandırmada herhangi bir hata yaptık mı kontrol etmek için aşağıdaki komutu çalıştırıyoruz.
nginx -t
Testimizin başarılı olduğunu görünce hemen nginx yazılımını yeniden başlatıyoruz.
nginx -s reload
Her şey tamam, şimdi web adresimizi yönlendirmemiz gerekiyor. Domainimizin kayıtlı olduğu sisteme giriş yaptıktan sonra sunucu ip adresimizi ve istek yapacağımız adresimizi yazıp kaydediyoruz.
Web sayfamızı çağıralım.
Oppsss. Eğer siz de bu şekilde bir hata alırsanız. Benim gibi okuma ve yazma iznini unuttunuz demektir.
Hemen projenizin kayıtlı olduğu konuma gidip web sisteminizin dosyalarının bulunduğu klasöre izin vermeniz gerekiyor. Benim tüm dosyalarım ‘files’ klasörümün içindeydi. İzin verme işlemini aşağıdaki komut ile gerçekleştiriyorum.
sudo chmod 777 files/
İznimi verdikten sonra tekrar isteğimi çalıştırıyorum.
Artık web sisteminiz yayında, herkes belirttiğiniz adresten sisteminize ulaşabilir.
Yazımı okuduğunuz için, teşekkürler.
Mutlu kod yazmalar ve sunucu yönetmeler..
Dipnot
Yazımda gördüğünüz hataları bana bildirirseniz sevinir ve hatamı düzeltirim. Şimdiden teşekkürler…
Kaynaklar
Nginx: https://www.nginx.com/resources/wiki/start/topics/examples/full/
Vim install: https://www.cyberciti.biz/faq/howto-install-vim-on-ubuntu-linux/
Vim search: https://linuxize.com/post/vim-search/
Php-fpm: https://www.php.net/manual/en/install.fpm.php
Termius: https://termius.com/mac-os