LEMP (Nginx, Mysql, PHP) Kurulum

Bu yazıyı paylaş

lemp

Web üzerinde yazılım geliştirme işinin belirli dönemleri vardır. Bu dönemlerin bir kısmı sadece bana has olabilir veya sırası biraz değişebilir. Kısaca bu dönemlerden bahsetmek istiyorum. Çünkü benim için temiz bir Lemp veya Lamp kurulum yapma seviyesine gelmek çok kolay olmadı. (Bunda sınıf öğretmeni olmamın etkisi olabilir 🙂 )

NOT: Bu geçeceğin bölüm, sebepsiz bir geyiğe döndü 🙂 . Zaman kaybetmek istemezsen, direkt kuruluma geçebilirsin.

  1. Dreamweaver ile görsel geliştirme: Word’de doküman hazırlar gibi internet sitesi yapar. Bu dönem hiçbir bilgisi olmayanların girdiği ilk bölüm
  2. Kodlara ilk giriş: Artık Dreamveawer yetmemeye başlar ve kodlara bakmaya başlar. Bu karışık gibi görünen dünyaya ilk giriş, benim kafamı gerçekten çok fazla ağrıtmıştı. Zonklamalar meydana geliyordu kodlara bakarken. Bu dönemi ölüm-kalım veya tamam-devam evresi olarak görüyorum. Çoğu kişinin gözünün korktuğu, geri çekildiği ve geliştiriciliğe sadece WordPress üzerinden devam etmeye başladıkları dönem burası 🙂
  3. Spagetti Makarna dönemi: Bu dönem bol bol makarna yemeye başlama zamanı değil tabi ki de… Yeni öğrenilen kodlamanın, uygulandığı bir dönemdir. Her şey hala çok karışıktır. Yazılan sistemin birçok yerinde kodlar tekrar eder. Her şey birbiri içine girmiştir. Sistemde değişiklik yapmak; … Neyse anladın sen onu 😀
  4. Frameworkler ile tanışma dönemi: Bu dönem profesyonel kodlamaya giriş dönemidir. Artık taşlar yerli yerine oturmaya başlasa da, hala üçüncü dönemden kalma alışkanlıklar devam edebilir. Ancak bu dönem içinde geliştirici kendini aşmaya başlar. Eski dönemdeki kodlarını gördükçe; kendisine küfür eder ve daha niceleri (ben kendimi bu dönemde gördüğüm için, şu an bir ilerisini göremiyorum. Zaman içinde bu listeyi genişletebilirim)

Peki bu 4 maddenin konumuzla ne alakası var. Geliştiricinin en büyük problemlerinden birisi sunucu yönetimidir. İlk üç dönem bu ihtiyacını hosting firmaları ile karşılar. Yıllık 100-150 TL civarı bir para bayılır. Eğer hosting firması iyiyse birkaç site barındırır. Subdomain falan alır. Değilse o da yok 🙂 . Her site için yıllık bu parayı verir. Ve çoğu işini iyi yapmayan, teknolojiyi iyi takip etmeyen, her isteğine “üzgünüz, olmaz” cevabı veren hosting firmalarını zengin eder.

Dördüncü dönemde yavaş yavaş cloud, droplet, digital ocean, server, linux, teminal, putty gibi kavramlar hayatına girmeye başlar. Artık kendi sunucusunu yönetmek ister. Ancak sunucu yönetimi ağır bir iştir ve gerçek bir uzmanlık ister. Bunu da kontrol panelleri ile aşmaya çalışır. Bu konuda birçok sunucu kontrol panelleri vardır. VestaCP, Sentora, Webmin… Bu araçlar birçok siteyi aynı sunucu içinde yönetmene yardımcı olur. Sunucuyu başlıca konularda kontrol etmeni sağlar. Böyle artı yönlerinin yanında, bir çok kişinin eleştirilerine maruz olduğu bazı yönleri de mevcuttur. Daha doğrusu herkes bir paneli överken, diğer panelleri eleştirir veya eleştirebilir. Bu konulardaki tartışmalara uzman olmadığım için girmeyerek, sunucu yönetimini manuel olarak ssh üzerinden yapmak isteyenler için; temiz bir lemp kurulumunu anlatacağım. Bu kadar geyikten sonra konumuza dönebiliriz.

Lemp Kurulum

Benim sistemim Ubuntu 14.04 ve Ubuntu üzerinde kurulumu anlatacağım. SSH ile sunucumuza bağlanalım. Ve işe sistemimizi güncelleyerek başlayalım.

Buradaki  sudo  komutu kullanıcıya root yetkisi vermek için kullanılan bir komut. Eğer SSH’de root olarak bağlantı yaptıysan, bu komutu kullanmana gerek yok.

Daha sonra PHP5, Mysql ve PHP’nin Mysql eklentilerini kuralım.

Yükleme esnasında senden Mysql root kullanıcısı için şifre girmeni isteyecek. Ardından da tekrar etmeni…

Ashampoo_Snap_2016.03.04_10h04m39s_002_

Mysql’in güvenlik ayarlarını yapmak için şu komutu çalıştıralım:

Bu komuttan sonra bize altı adet soru soracak. Bu soruların anlamları şu şekilde:

  1. root kullanıcısının parolasını soracak. Eğer boş bıraktıysan direkt enter ile geçebilirsin. Değilse parolayı girmelisin. Daha önceden deneyimlediğini düşünüyorum. Ancak yine de şunu hatırlatmak istiyorum. Parola yazarken ekranda hiçbir değişiklik görmeyeceksin. Ancak sen yine de yazmaya devam et 🙂 . Bu bir güvenlik…
  2. root parolasını değiştirmek isteyip istemediğini soracak. Ben no diyerek geçiyorum.
  3. Mysql’in test amaçlı oluşturduğu anonymous kullanıcısını silmek isteyip istemediğini soracak. Ben yes  diyerek sildim. Bu kullanıcının şifresiz Mysql’e erişebileceğini düşünürsek, silmekte fayda var.
  4. root kullanıcısı için uzaktan erişimin kapanıp kapanmamasını soracak. Navicat, Workbench gibi araçlarla root yetkisi ile Mysql’e bağlanmak istiyorsanız, erişimi açık tutabilirsiniz. Ancak bunun tehlikeli olduğunu belirtmek istiyorum. Daha sonra oluşturacağın, tüm yetkilere sahip olmayan bir kullanıcı ile erişim sağlayabilirsin. Ben yes  diyerek erişimi engelliyorum.
  5. Mysql’in yine test amaçlı oluşturduğu, test adındaki veritabanını silmek isteyip istemediğini soracak. Ben yes  diyerek bunu da siliyorum.
  6. Şimdide izinleri yeniden yüklemek için izin istiyor. yes  diyerek bu izni veriyoruz.

Ashampoo_Snap_2016.03.04_10h07m40s_003_

Artık Mysql hizmete hazır bir şekilde bizim emirlerimizi bekliyor 😀 .

Şimdi de Nginx kurulumunu yapalım.

Nginx’i başlatmadan önce, yukarıdaki PHP ve Mysql kodlarımızın bazı Apache bağımlılıklarını kurmuş olma ihtimaline binaen, bunları temizlemek için şu komutları çalıştıralım.

Apache’nin tamamen kaldırılmış olması gerekiyor. Yoksa Nginx çalıştığında 80 portu kullanılıyor  hatası alırsın.

Şimdi Nginx’i başlatabiliriz.

Apache büyük ihtimalle sunucuda /var/www/html  dizini oluşturmuş ve içine index.html dosyası atmış olabilir. Şimdi biz yapılandırmalarımızı kendimize göre yapacağız.

Öncelikle html dizininden ve içindekilerden kurtulmak istiyorum. Çünkü ben www dizini altında projects diye bir dizin oluşturup, projelerimi bunun içinde barındırmak istiyorum. Sen kendine göre bir düzen kurabilirsin.

Önce html dizinini kaldıralım.

Sonra da projects dizinini oluşturalım.

Nginx için FastCGI ayarlamalarını yapalım. Önce Nginx varsayılan ayar dosyasını açalım.

Daha sonra bu dosyada aşağıdaki değişiklikleri yapalım.

Şimdi de php-fpm kurulumunu yapalım.

Nginx ayarlarında belirttiğimiz php.ini düzenlemesini yapalım. Dosyamızı açalım.

Açılan editörde Ctrl+W  tuş kombinasyonu ile arama yapacağımızı belirtelim ve ;cgi.fix_pathinfo=1  satırını bulalım. Bu satırın başındaki noktalı virgülü kaldıralım. Nginx ayarlarında değindiğimiz gibi değerini sıfır (0) yapalım. Dosyayı kaydetmek için Ctrl+X  tuş kombinasyonuna Yes Y  ile cevap verelim. Dosyayı aynı isimle kayıt etmek için sadece enter tuşuna basalım.

Sıra geldi php-fpm listeleme yolunun tanımlamasını porttan sokete çevirmeye. Önce dosyamızı açalım.

Yine  Ctrl+W  tuş kombinasyonu ile arama yapacağımızı belirtelim ve listen =  değerini bulalım.

Eğer bulduğunuz değer listen = 127.0.0.1:9000  ise listen = /var/run/php5-fpm.sock  şeklinde değiştirin. Eğer zaten o şekilde ise sorun yok demektir.

Çıkmak için Ctrl+X , Y ve enter kombinasyonunu kullanalım. Ardından PHP-FPM’yi yeniden başlatalım.

Son olarak proje dizinimiz içine bir index.php dosyası oluşturalım ve işlemlerimizi başarılı bir şekilde bitirip bitirmediğimizi kontrol edelim.

Tabi en son /var/www/projects dizinini oluşturmuştuk. Şimdi /var/www/projects/site/http dizinlerini de oluşturmamız gerekiyor.

Unutmadan log dizinini de oluşturalım.

Ve artık Nginx’i yeniden başlatmanın zamanı geldi 🙂

Eğer bütün ayarlamaları doğru yaptıysak, şu şekilde bir ekran karşımıza çıkmış olmalı.

Ashampoo_Snap_2016.03.04_21h25m53s_005_

Böylece sunucumuza LEMP kurulumunu tamamlamış bulunmaktayız. MYSQL yönetimini kolaylaştırmak için phpmyadmin kurulumu da gerekiyor. Ancak bu yazı biraz fazla uzadı. Onu da bir sonraki yazıda anlatmak istiyorum.

Görüşmek üzere… 🙂

Bu yazıyı paylaş

LEMP (Nginx, Mysql, PHP) Kurulum” üzerine 3 yorum

  • The “ufw” firewall is enabled. All ports except for 22, 80, and 443 are BLOCKED.
    To secure your WordPress installation, fail2ban has been configured and the
    WordPress fail2ban plugin is a site enforce module in. If you do not want to use this
    plugin, remove /var/www/html/wp-content/mu-plugins/fail2ban. digitaloceanda böyle bir hata aliyorum ve mysql sifremi ögrenemiyorum…bunun icin napmam gerek…digital ocean dökümanlarinda yazanlari yaptim ama olmuyor…kafayi yiycem 3 gündür anlamiyorum

Bir Cevap Yazın