Mysql ve Node.js kullanarak Ubuntu Server üzerinde basit bir web uygulaması geliştirilmesi
Herkese merhaba burada sizlere Ubuntu Server üzerinde basit bir web uygulaması nasıl geliştirilir onu anlatacağım. Öncelikle kullanılacak programlar:
VirtualBox 5.1.8 : VirtualBox en yalın haliyle bir sanal makine yazılımıdır. VirtualBox ile bilgisayarınızda sanal olarak farklı işletim sistemleri çalıştırabilirsiniz.
Ubuntu Server 16.10 : Ubuntu bilindiği üzere Linux tabanlı özgür ve ücretsiz bir işletim sistemidir. Ubuntu Server ise Ubuntu'nun Grafik Arayüzü (GUI) bulundurmayan şeklidir.
Node.js 4.2.6 : Node.js sunucu tarafında javascript ile kod geliştirilmesini sağlayan bir platformdur.
MySQL 14.14 : MySQL daha çok web uygulamalarında kullanılan çoklu iş parçacıklı, çok kullanıcılı, hızlı ve sağlam bir ilişkisel veritabanı yönetim sistemidir. Linux altında daha hızlı bir performans sergilemektedir. Kaynak kodu açıktır.
Evet artık anlatıma geçebiliriz. Öncelikle VirtualBox ve Ubuntu Server'ı verdiğim linkler üzerinden indiriyoruz. Daha sonra VirtualBox'ı kuruyoruz. Kurulumda pek zor bir şey yok klasik ileri ileri diyerek yüklüyoruz. Daha sonra VirtualBox'ı açıyoruz ve bizi aşağıdaki ekran karşılıyor.
Node.js 4.2.6 : Node.js sunucu tarafında javascript ile kod geliştirilmesini sağlayan bir platformdur.
MySQL 14.14 : MySQL daha çok web uygulamalarında kullanılan çoklu iş parçacıklı, çok kullanıcılı, hızlı ve sağlam bir ilişkisel veritabanı yönetim sistemidir. Linux altında daha hızlı bir performans sergilemektedir. Kaynak kodu açıktır.
Evet artık anlatıma geçebiliriz. Öncelikle VirtualBox ve Ubuntu Server'ı verdiğim linkler üzerinden indiriyoruz. Daha sonra VirtualBox'ı kuruyoruz. Kurulumda pek zor bir şey yok klasik ileri ileri diyerek yüklüyoruz. Daha sonra VirtualBox'ı açıyoruz ve bizi aşağıdaki ekran karşılıyor.

Burada soldaki Ubuntu Server'a takılmayın bu benim önceden kurduğum işletim sistemi. Şimdi sol üst köşedeki yeni butonuna tıklayarak yeni bir sanal makine oluşturmaya başlıyoruz. Burada yine ileri ileri şeklinde kurulum yapacağız ben sadece Murat Hocamın(İşletim Sistemleri dersi hocamız) üstünde durduğu ve önemli olan yerleri anlatacağım. Klasik şekilde ilerledikten sonra karşımıza şöyle bir ekran geliyor :
Burada kullanımınıza göre istediğinizi seçebilirsiniz. Eğer sabitlenmiş boyutu seçerseniz sizin bu işletim sistemi için seçeceğiniz boyutta bir alan otomatik olarak ayrılacaktır. Yani eğer siz 8 GB bir alan ayırdıysanız bu alanın tamamı doldurulacaktır. Siz ister işletim sisteminde program yükleyin ister yüklemeyin daima 8 GB bir alan dolu olarak gözükecektir. Eğer değişken olarak ayrılanı seçerseniz yine 8 GB bir alan kullandığınızı varsayarsak bu alan başlangıçta daha az olacaktır. Yani siz program vs. yükledikçe alan artacaktır ta ki 8 GB dolana kadar.
Böylece temel adımı halletmiş olduk şimdi kurduğumuz sanal makineye çift tıklayarak açıyoruz ve karşımıza şu ekran çıkıyor :
Burada da sağ alttaki dosya seçme ikonuna tıklayarak ISO olarak indirdiğimiz Ubuntu Server'ı seçerek sanal makinemize Ubuntu Server işletim sistemini yüklemeye başlıyoruz. Yine burada da klasik şekilde yükleme yapacağız ben önemli olan yerleri ekleyeceğim. Kurulumda ilerledikten sonra karşmıza şu ekran çıkıyor :
Burada varsayılan olarak "Guided - use entire disk and set up LVM" seçili olarak geliyor. LVM en basit haliyle disk yönetimi sağlamaktır. Boyut tahmini yapılamadığı durumlarda LVM ile depolamaya disk ekleme, çıkarma gibi işlemler yapılarak dosya sisteminin genişletilmesi veya daraltılması sağlanır. Biz basit bir uygulama yapacağımız için buna ihtiyacımız yok burada bir üst seçenek olan "Guided - use entire disk" seçilmesi yeterli olacaktır.
"Configuring Tasksel" ekranında da "No Automatic Updates" kısmını seçebiliriz. Yani otomatik olarak güncelleme yapılmayacak. Biz zaten Ubuntu Server'ı yükledikten sonra güncellemeleri yapacağız.
"Software Selection" kısmında da "OpenSSH server" varsayılan olarak seçili değil; ancak biz seçebiliriz. SSH ağ üzerindeki başka bir sunucuya uzakta bulunan başka bir makineden bağlantı sağlayan bir protokoldür. SSH "Secure Shell" yani güvenli kabuk anlamına gelmektedir. Seçmeyi unutursanız da sorun yok Ubuntu Server'ı kurduktan sonra da bunu yükleyebilirsiniz.
Böylece Ubuntu Server kurulumunu tamamladık. Kullanıcız adımızı ve şifremizi girdikten sonra bizi aşağıdaki ekran karşılıyor.
Burada öncelikle yapmamız gereken bazı şeyler var. Kurulum aşamasında bir yerde otomatik güncelleştirmeleri iptal etmiştik. Şimdi kendimiz kod ile güncelleştirmeleri yükleyeceğiz. Öncelikle sudo apt update komutunu yazarak güncelleştirmeleri görüyoruz. Daha sonra sudo apt upgrade komutunu girerek bu güncelleştirmeleri yüklüyoruz. Bu komutlardan biraz bahsetmek gerekirse başlarına yazdığımız sudo "Super User DO" anlamına geliyor. Yani yaptığımız işlemi süer kullanıcı olarak yapıyoruz. Bu bize bir yetki aslında bir güç veriyor. Sudo kullanılan komutlar bazen tehlikeli olabiliyor. Çünkü pek bir engel tanımadan yazılan kodun yapılması isteniyor(emir gibi düşünülebilir).
Gerekli güncelleştirmeler yapıldıktan sonra şimdide VirtualBox'ın ağ yapılandırmasından bahsedelim. Bunun için sudo poweroff komutunu kullanarak sanal makinemizi kapatalım. Daha sonra VirtualBox ekranında kurduğumuz sanal makineyi tıklayarak ayarlar kısmını açıyoruz.
Daha sonra açılan menüde "Ağ" sekmesini seçiyoruz ;ve şuna takıldı kısmında varsayılan olarak NAT seçili olduğunu görüyoruz.
Burada önemli olan iki tane ağ yapılandırması var bunlar NAT ve Köprü Bağdaştırıcısı (Bridged). Bunlardan kısaca bahsetmek gerekirse Bridged seçilirse ana bilgisayar ve sanal bilgisayar aynı ağda gibi bir durum ortaya çıkıyor. Bu aslında birçok avantaj getirse de aynı IP sanal bilgisayara da verildiğinde ortaya sorunlar çıkabiliyor. NAT'ta ise ana bilgisayarın IP adresini bütün sanal makinelerde kullanıyor. Bunun kötü yanı ise dışarıdaki bir bilgisayar sanal bilgisayara IP ile bağlanamıyor çünkü sanal bilgisayarın bir IP'si yok. Bu durumda en iyi çözümlerden birisi NAT kullanarak üstüne port yönlendirme yapmak. Bunun için yine aynı kısımdaki Gelişmiş sekmesini açarak B.Noktası Yönlendirme (Bağlantı Noktası Yönlendirme) butonunu tıklıyoruz. Karşımıza boş bir ekran çıkıyor.
Sağ üstteki + simgesini tıklayarak yeni bir bağlantı yönlendirme kuralı ekliyoruz. Ben üstteki şekilde kendi kullanacağım portlara göre ayarlama yaptım. Benim yazdığım kurala göre sanal makineden 7182 portuna gelen istekler ana makinede de 7182 ye yönlendiriliyor. Bu ayrıca bir karışıklık olmasını engelliyor. Mesela kullandığınız bir framework belli bir portu ana bilgisayarınızda kullanıyor olabilir sanal makinenizde aynı portu kullanırsa ortaya bir karışıklık çıkabilir ;ama benim ana bilgisayarımda 7182 portu zaten boş olduğu için aynı porta yönlendirmem de bir sorun yok. Kısaca protokolden de bahsetmem gerekirse burada seçebileceğimiz iki tane protokol var bunlar : TCP ve UDP. Bu protokolleri Murat Hocamız bize çok güzel bir örnekle açıklamıştı ben de aynı şekilde açıklayacağım. TCP protokolü telefonla arama yapmak gibi düşünülebilir. Eğer birisi telefonu açarsa konuşursunuz anlatırsınız ve anlamadığınız yer olursa sorabilirsiniz. UDP protokolü ise mesaj atmak gibidir. Attığınız mesaj ulaştı mı ? Gönderdiğiniz telefon açık mı ? Mesaj görüldü mü ? gibi şeyleri bilemezsiniz. En özet şekilde böyle anlatılabilir. Biz TCP protokolünü seçerek devam ediyoruz. Gerekli ayarlamaları yaptıktan sonra tekrar sanal makinemizi çalıştırıyoruz.
Artık gerekli programları yüklemeye başlayabiliriz. Öncelikle Node.js'yi yüklüyoruz bunun için sudo apt-get install nodejs komutunu kullanıyoruz. Daha sonra sudo apt-get install npm yazıyoruz. Bu bize Node.js'yi kullanarak kolayca paket ve modül yükleyebilmeyi sağlıyor. Zaten npm "Node Package Modules" anlamına geliyor. Daha sonra sudo apt-get install mysq-server yazarak MySQL'i yüklüyoruz. Bizden MySQL veritabanına erişim için kullanacağımız parolayı belirlememizi istiyor. Unutmayacağımız bir şifreyi yazarak devam ediyoruz. Artık kullanacağımız temel bileşenleri yükledik MySQL veritabanının komut sistemine bağlanmak için mysql -u root -p komutunu yazıyoruz. MySQL komut sistemine bağlandıktan sonra unutmamamız gereken 2 önemli şey var. Bunlar MySQL'i ilk kullandığımda benim içinde sorun olmuştu.
1 - Bütün MySQL kodları noktalı virgül ile biter. Noktalı virgül koymazsanız kod çalışmayacaktır.
2 - Genellikle MySQL komutları büyük harfle yazılır ;ancak veritabanı ismi, tablo isimleri ve kullanıcı adı gibi kısımlar küçük harfle yazılır. Bunların yanı sıra MySQL büyük-küçük harf duyarlı değildir.
Bu yazdıklarıma dikkat etmeyi unutmayın. Şimdi MySQL'de kullanılan genel kodlardan bahsedeceğim.
create database veritabani_ismi; : Belirtilen isimdeki veritabanini ekler.
show databases; : Bulunan veritabanlarını göstermeyi sağlar.
show tables; : Bulunan tabloları göstermeyi sağlar.
use veritabani_ismi; : Belirtilen veritabanını kullanmayı sağlar.
describe tablo_ismi; : Belirtilen tablodaki id,isim gibi kısımların türlerini vs. gösterir.
İşe yeni bir veritabanı ekleyerek devam ediyoruz create database ornek; yazarak ornek isimli veritabanini ekliyoruz. Daha sonra kullanılan veritabanını ornek olarak değiştiriyoruz ve bir tablo ekliyoruz.
Daha sonra describe tablo_ornek yazarak eklediğimiz tabloyu görebiliriz.
Sıra geldi bu tablomuza veri eklemeye bunun için insert into tablo_adi values (Değerler); komutunu kullanıyoruz.
Aynı şekilde istediğimiz kadar veri ekleyebiliriz ben birkaç tane daha kayıt ekliyorum. Daha sonrada select * from tablo_ornek komutunu kullanarak tüm kayıtların gösterilmesini sağlıyorum.
Böylece MySQL ile bir veritabanı ve bir tablo ekledik. Artık MySQL'den çıkabiliriz bunun için \q komutunu kullanıyoruz. Daha sonra sudo vim uygulama.js komutunu kullanarak uygulama adında Node.js kullanacağımız bir javascript dosyası oluşturuyoruz. Buradaki vim kullanacağımız editörü belirtiyor aslında nano vime göre daha kolay bir editör ancak ben vime alıştığım için bunu kullanıyorum. uygulama.js dosyasına aşağıdaki kodu yazıyoruz.
Bu kodu biraz açıklamak gerekirse ilk iki satırda MySQL'i ve httpyi kullanacağımızı belirterek bunları bazı değişkenlere atıyoruz gibi düşünebiliriz. 3-8. satırlar arasında bağlantı diye bir değişken oluşturuyoruz ve bu değişkene MySQL ile oluşturduğumuz bağlantıyı atıyoruz. Bu bağlantıda host olarak localhostu yani o anda kullandığımız bilgisayarı veya ip adresini kullanacağımızı belirtiyoruz. User kısmında root yani asıl kullanıcı olduğumuzu belirtiyoruz. password kısmına MySQL veritabanı şifremizi giriyoruz ,ve database kısmına da veritabanımızın ismini yazıyoruz.9-16. satırlar arasında da for döngüsü ile "SELECT * FROM tablo_ornek" kodu ile MySQL veritabanımızda ki tüm verileri JSON formatında ekrana yazdırmayı sağlıyoruz.15. satırda da ağ yapılandırmasında da kullandığımız 7182 portunu kullanacağımızı belirtiyoruz. Bu portu ana makinedeki yine 7182 ye yönlendirmiştik. Bu kodu yazdıktan sonra sudo apt install nodejs-legacy komutunu yazarak nodejs nin node komutunu kullanabilmeyi sağlıyoruz. Daha sonra da npm install mysql komutunu yazarak Node.js ile MySQL'i kullanabilmeyi sağlıyoruz. Daha sonra node uygulama.js yazarak uygulamamızı çalıştırıyoruz. Ana bilgisayarda 7182 portuna giderek verilerimizi web üzerinden görebiliyoruz.
Böylece uygulamamız bitmiş oluyor İşletim Sistemleri Hocam Murat ÖZALP e teşekkürü bir borç bilirim. Herkese iyi günler.
Karşılaşılabilecek sorunlar:
- MySQL'i sadece normal yüklemek yetmez ayrıca npm ile Node.js kullanarakta yüklenmeli.
- Nodejs-legacy komutu kullanılmazsa node uygulama.js komutu çalışmaz node komutu her ne kadar Node.js ile birlikte çalışsada ayrıca Nodejs-legacy komutu ile yüklenmesi gerekir.
- Veritabanında ID kısmını Auto Icrement yani otomatik olarak arttırılmasını sağladığımız için veri eklerken ID kısmına NULL yazıyoruz çünkü o zaten kendisi artıyor.
- Port yönlendirmesi yapılırken ana makineye yönlendirilen portun boş olmasına dikkat edilmeli.
Kaynaklar:
Yorumlar
Yorum Gönder