Hoşgeldin Misafir

Linux tabanlı Ubuntu işletim sisteminde Nginx ile PHP projesi nasıl ayaklandırılır?

ByJiLeT

26 Kas 2020
819 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
1*5K5fqKyU5OjizOBzyZWGuA.jpeg

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
1*bKDfC1ASY8XzeC_CeQtrpg.png

Bu işlemi yaptıktan sonra nginx yazılımının kurulumunu yapıyoruz.
sudo apt install nginx
1*dtHCEILpvmJWnFkVOqGVyw.png

Ö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.
1*iGnaegHaVG2VgD2fkGB6kQ.jpeg

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.
1*iqUIeT9z6_fybAqdVbDEXQ.png

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.
1*lWfQA68k6JxBHMDeRDLYuw.png

Tekrar ip adresinize istek yaptığınızda index sayfasının görüntülenmesi gerekiyor.
1*EczvFWoqcNp-TxH0ulo1Rw.jpeg

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
1*LSgTDjyf3Ws1brn3CM8jnQ.png

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
Vim editörü yüklü değil ise, aşağıdaki kod ile vim editörünü yükleyebilirsiniz.
sudo apt install vim
1*2-RMMx2NZOKgqlXRmmpDmQ.png

‘/’ 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.
1*Mbj0_4Va3UNFXUguj9hfkA.png

‘Esc’ tuşumuza basıp, ‘:wq’ yazıp enter tuşumuza basıp ayarı kaydediyoruz.
1*BbAltjDuKbkEIQU8sR-Siw.png

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
1*UdwxjSNnNyk7BlVr-wWq5w.png

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.
1*I7FwtYB5lHogPHM39fc-jw.png

Local terminalimi açıyorum.
1*_4JuIA04_3Fps-_NEMjbHQ.png

Aşağıdaki komutumu çalıştırıyorum.
scp /Users/ibrahimsayar/Desktop/training_project.zip [email protected]:/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/
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.
1*QYOcgux1W8DSwZH5w4flhw.jpeg

Dosyanızı dışarı çıkartmak için sunucunuza ‘unzip’ yazılımını kurmanız gerekiyor.
sudo apt install unzip
1*7F5vjCFdEBhPlK5pjryOuw.png

Web sistemimizin olduğu dosyayı dışarı çıkartma adımını gerçekleştiriyoruz.
unzip training_project.zip
1*_fS6NGU2BqM14mEX70lL9Q.png

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.
1*_BGY9rLtGCabn9Sm_cCC-A.png

Yaptığım yapılandırmaları üstteki resimdeki renkli alanlarla belirttim. Bilgi de vermek istiyorum.
İşaretli kısma web sistemimizi yüklediğimiz ve dışarı çıkarttığımız konumu belirtmemiz gerekiyor.
İşaretli kısma tarayıcıdan ya da herhangi bir sistemden istek yapıldığında ilk hangi dosyamızı sunacağımızı belirtiyoruz.
İş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
1*K2bSPChEo47MgMHWkG8IpA.png

Testimizin başarılı olduğunu görünce hemen nginx yazılımını yeniden başlatıyoruz.
nginx -s reload
1*C85dnJqyhHuGPTXX9L9DCQ.png

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.
1*s48A5aV0mzVqFGRiMIoK4w.png

Web sayfamızı çağıralım.
1*RDK1vJVRtpzwKOBoNOGmpA.png

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/
1*zAhotgXqpayWszz1om13gA.jpeg

İznimi verdikten sonra tekrar isteğimi çalıştırıyorum.
1*wX9VfFxniM4rTBcNl5BW3w.png

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..


Nginx: https://www.nginx.com/resources/wiki/start/topics/examples/full/
Linux: https://www.digitalocean.com/commun...ux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04
Vim install: https://www.cyberciti.biz/faq/howto-install-vim-on-ubuntu-linux/
Vim search: https://linuxize.com/post/vim-search/
Chmod: https://askubuntu.com/questions/158...hat-i-can-read-and-write-to-another-partition
Php-fpm: https://www.php.net/manual/en/install.fpm.php
Termius: https://termius.com/mac-os