7 Aralık 2016 Çarşamba

MYSQL Veritabanı ve NodeJs Yazılım Dilini Kullanarak Ufak Çapta Web Uygulaması Geliştirme
Merhaba Arkadaşlar Bu Paylaşımımda Birlikte Ubuntu üzerinden küçük bir web uygulaması geliştireceğiz.Tabiki bunları yapmak için bazı programlara ihtiyaç duyacağız.Bunlar Virtual Box ,Ubuntu Server,NodeJs ve MySql'dir.

Kısaca bu programları açıklamak gerekirse;  
*Ubuntu Server:Ubuntu, Linux tabanlı özgür ve ücretsiz bir işletim sistemidir.Ubuntu Server'ın ise Ubuntu'dan tek farkı siyah ekrandır.Siyah ekrandan kasıt kullanıcı grafik arayüzünün(GUI) bulunmamasıdır.

*Virtual Box :InnoTek firması tarafından geliştirilen bir "sanal makine yazılımı"dır. Sanal makine nedir derseniz,Bilgisayarınızda aynı anda birden fazla işletim sistemi çalıştırabilmenizi sağlayan programa sanal makine denir.

*MySql: Altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı (multi-threaded), çok kullanıcılı (multi-user), hızlı ve sağlam (robust) bir veri tabanı yönetim sistemidir.     

*NodeJs:NodeJS sunucu tarafında javascript ile kod geliştirilmesini sağlayan, chrome gibi v8 javascript engine (javascript kodunu makine diline çevirir) üzerinde çalışan bir platformdur. 


Not1:Artık kullanacağımız programlar hakkında kısa bilgi edinmiş kabul ederek sanal makinemizin kurulumuna başlayalım...
Not2:Kurulumda kullanıcının müdahalesi olan yerleri resimli olarak anlatmaya çalışacağım diğer bölümlerinde zaten kendisi otamatik olarak herşeyi hallediyor.Kurulumdan gözünüz korkmasın. aksine çok basit.(setup'a çift tıkla next next mantığı gibi :) )

1.Aşama:Virtual Box'ı açıp "Yeni" düğmesine tıklayalım ve Sanal Makinemizi oluşturmaya başlayalım.

2.Aşama:Sanal Makinemizin adını,kullanılacak ram bilgisi,dosyanın nereye kayıt olacağı vb. özellikleri seçelim..


3.Aşama:Bu işlemleri gerçekleştirdikten sonra sanal makinemizin küçük bir kısmı oluşturuldu.Artık Ubuntu Server''ı gerçek anlamda yükleme işlemine başlayabiliriz..Burada Sanal Makinemize kurulacak ubuntu dosyasını ekliyoruz.Ben burada sanal makinemizi oluştururken Ubuntu(32bit) seçeneğini seçtiğim için 32 bitlik setupu seçiyorum.Bilgisayarınızın kaç bit işlemciye sahip olduğu önemli değil,makinenizi ister 32 ister de 64 bit kurun hiçbir sorun çıkmayacaktır.Yalnızca oluştururken seçtiğiniz Ubuntu işletim sistemiyle aynı işlemciye sahip olmasına özen gösterin aksi halde hata ile karşılaşırsınız..


4.Aşama:bu aşamada sanal makinemizi kurarken hangi dili seçmek istediğimizi soracaktır.Seçme işlemi size kalmış tabiki seçtiğiniz dile göre sizden ek bilgiler isteyebilir.örneğin Türkçe'yi seçerseniz kıta ayarları ve ülke ayarları için size önerilerde bulunabilir.




5.Aşama:Artık kurulum menümüze nihayet geldik."ubuntu sunucu sürümünü kurun" seçeneğine tıklayıp başlayalım..

6.Aşama:bu kısımda bazı yerleri atlayarak geçeceğim bu yerlerde ülke seçimi vb. gibi sizin de kolayca yapabileceğiniz kısımlar zaten yazımın başında dediğim gibi kurulum sadece "next next" den ibaret. Bu kısımda sırayla "makine adı","yeni kullanıcının tam adı","hesabınız için kullanıcı adı","parola" olan bölümlerden oluşuyor.Size önerim makine,kullanıcı,hesabınız için kullanıcı adları bölümlerine aynı isimleri girerseniz unutma ihtimaliniz daha az olur.Diğer bir önemli kısımda parola kısmı buraya kolay unutmayacağınız bir parola girmeye dikkat edin aksi halde sanal makinenize bağlanamazsınız..











7.Aşama:Bu işlemlerden sonra bazı yüklemeler yapacaktır.Siz arkanıza yaslanın o işini halletsin.Dediğim gibi burada göstermediğim herhangi bir seçenek karşınıza çıkarsa olumlu cevap verin yani "evet".. :) 
Burada ilk olarak diskleri bölümleme işleminin nasıl olacağını söylüyor biz burada ilk seçeneği tıklayıp devam ediyoruz.Sonra dışa erişeceksek ilgili "http" bölümünü doldurmamız gerekiyor.Biz bu uygulamamızda böyle bişeye gerek duymadığımız içim boş bırakarak devam ediyoruz..



8.Aşama:bunlardan sonra önemli yer olarak güncelleştirme seçenekleri geliyor.Biz buna otomatik güncelleştirme yok diyoruz.Zaten biz sanal makinemizi kurduktan sonra güncelleme işlemlerini yapacağız.

9.Aşama:burada "Open SSH Server" seçeneğine tıklayabiliriz .Kısaca Open SSH ağ üzerindeki başka bir sunucuya uzakta bulunan başka bir makineden bağlantı sağlayan bir protokoldür.Tabi seçmesekte daha sonra bunu gerekli kod satırını yazarak yükleyebiliriz.


10.Aşama:Artık sona geldik gerekli bazı yüklemeleri sanal makinemiz bizin etkimiz olmaksızın yaparak kurulumu bitirecektir..


11.Aşama:Kurulum bittikten sonra sanal makinemiz otomatik olarak ubuntu'yu çalıştıracaktır.Biz girdiğimiz kullanıcı adımızı ve belirlediğimiz parolayı girerek bağlantımızı sağlayalım.










12.Aşama: Artık Ubuntumuza bağlandığımıza göre küçük ama önemli işlemleri yapalım.

ilk olarak "sudo apt update" ile güncelleştirmeleri buluyoruz..daha sonra "sudo apt upgrade" ile güncelleştirmeleri yüklüyoruz.Burada "sudo" ön eki emir anlamında kullanılmaktadır.Yani burada makinemize bunu yapmak zorundasın diyoruz.Tabi bu kullanımın bazı zamanlarda olumlu bazı zamanlarda olumsuz etkisi var..


















13.Aşama:Ağ yapılandırması:bunu yapmamızın nedeni sanal makinemizi ana makinemize bağlamak tabi bunu yaparken port ayarları yapacağız. Portumuzu seçerken dikkat etmemiz gereken en önemli unsur bu port numarasını bilgisayarımızda herhangi bir programın kullanmamasıdır.Aksi halde karmaşıklık çıkabilir.Aşağıdaki işlemleri sıra ile gerçekleştirerek Sanal makinemiz ve Ana makinemiz arasında bir köprü kurabiliriz.
Yapacağımız işlemler sırasıyla;Sanal makinemiz açıksa kapatıp,Port ayarı yapacağımız makineyi seçerek "Ayarlar" düğmesine tıklamak daha sonra gelen ekranda "Ağ" Bölümünü seçerek "Gelişmiş" bölümüne geçmek daha sonra "Bağlantı Noktası Yönlendirme"' 'ye tıklayarak yeni bir kural oluşturuyoruz ben burada 5412 portunu kullandım.Bu port ile ana makineye bağlanacağız.






















14.Aşama:Artık Sanal Makinemizi Açıp gerekli programları yükleyip Web Uygulamamızı geliştirelim.

15.Aşama:Mysql Veritabanı Kurulumu:"sudo apt-get install mysql-server" komutunu yazarak Mysql dilini sanal makinemize indireceğiz burada bize mysql veritabanının şifresini girmemizi isteyecektir.Önemli nokta bu şifreyi de unutmamız gerekiyor.Aşağıdaki gibi ekran gelecektir bu ekrana kolay ve hatırlanabilir bir şifre girmenizi öneririm.Bu ekrandan sonra gerekli yüklemeyi kendisi yapacaktır.



16.Aşama:Artık Mysql'e bağlanarak Veritabanı işlemlerimizi yapabiliriz.Bu işlem için "mysql -u root -p" komutunu kullanıyoruz.



17.Aşama:Artık Veritabanı oluşturabiliriz.Bu işlem için "create database veritabani_adi;" komutunu kullanırız.




18.Aşama:Oluşturulan veritabanlarını görmek için "show databases;" komutunu kullanabiliriz.Şekildede görüldüğü gibi "müsteri" veritabanımız oluşturulmuştur.Ben burada daha önceden "ornek" ve "ogr" diye veritabanı oluşturduğum için burada gözüktüler.Onların bizim uygulamamızda zaten pek bir önemi bulunmuyor.. 


19.Aşama:Kullanacağımız veritabanını belirterek bir tablo oluşturacağız.Bu işlemler için sırasıyla;"use veritabani_adi;" ve "create table tablo_ismi(...(sütunlar)...);" komutlarını kullanacağız..




20.Aşama:Oluşturduğumuz tabloyu görmek için "show tables;" komutunu kullanacağız.



21.Aşama:Tablo sütunlarının özelliklerini görmek için "describe musteri1;" komutunu kullanacağız.




22.Aşama:Tabloya değerler eklemek.Bunun için "insert into tablo_adi values(deger1,deger2,..);" komutunu kullanacağız..



23.Aşama:Eklediğimiz değerleri "select * from tabla_adi" komutu ile görelim..


24.Aşama:Artık Veritabanımızla işimiz bitmiş bulunmakta bu yüzden Mysql 'den Çıkmalıyız.Bu işlem için "\q" komutunu kullanacağız.


25.Aşama:Veritabanına Bağlantı sağlayacağımız NodeJS'yi ve onun yanında olması gereken ek paketleri yükleyelim.

1.Kod Satırı:"sudo apt-get install nodejs" komutu ile "nodejs"'yi sanal makinemize yüklüyoruz.




2.Kod Satırı:"sudo apt-get install npm" komutu ile NodeJS yardımıyla kolaylıkla paket ve modül yükleyebilmeyi sağlayan bir eklenti kuruyoruz.NPM(Node Package Modules)


3.Kod Satırı:"sudo apt install nodejs-legacy" komutu ile NodeJs'nin "node" komutu ile kullanılabilmesini sağlıyor.



4.Kod Satırı:"npm install mysql" komutu ile nodeJS ile Mysql'i birlikte kullanabilmemizi sağlıyoruz.


26.Aşama:Artık veritabanına bağlanmak için gerekli NodeJS kodunu yazabiliriz.Bunun için ben "sudo nano dosya_adi.js" editörünü kullanacağım.Siz tercihinize göre pico v.b editörlerde kullanabilirsiniz..kaydettikten sonra kodumuzu çalıştırmak için "sudo node dosya_adi.js" yazarak kodumuzu çalıştırıyoruz şekilde de görüldüğü gibi komut çalıştıktan sonra hata v.b bir yazı çıkmadığı için çalışıyor gözüküyor..





27.Aşama(SON):Artık kodumuzu tarayıcımızdan "192.168.56.1:5412" veya "localhost:5412" yazarak sonucu görebiliriz.Benim Uygulamamın ekran görüntüsü aşağıdaki gibidir.Kodun Çalışmasını sonlandırmak istersek "Ctrl+C" komutunu kullanabiliriz...

#KARŞILAŞILAN SORUNLAR VE ÇÖZÜMLERİ#
1-)Beni En çok uğraştıran sorun "sudo node dosya_adi.js" komutunun hata vermesiydi.İnternette araştırarak bu sorunun "sudo apt instal nodejs-legacy" paketinin yüklü olmamasından kaynaklandığını buldum.paketi yükleyerek node komutları aktif hale geldi.

2-)Veritabanında tabloya ekleme yaparken id kısmını boş bırakarak yazarsak 1 sütun değeri eksik hatası alıyordum.Zaten otamatik arttırılır tanımladığımız için değerini "null" yapsakta o kendi kendini arttırdığını farkettim bunun sayesinde sorun çözülmüş oldu.

3-)Tabiki port yapılandırılmasının ayrı bir önemi var eğer verdiğimiz port bilgisayarda başka bir program tarafından kullanılıyorsa bu bize sorunlara neden olabilir.bunun için cmd'den  " netstat -an|find /i "listening" "ve " netstat -an | find /i "established" " komutları ile dolu portları öğrenerek boş portlardan birini seçtim.

#KAYNAKLAR#
https://www.linode.com/docs/databases/mysql/install-mysql-on-ubuntu-14-04
https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
https://www.npmjs.com/package/mysql
http://tecadmin.net/connect-nodejs-with-mysql/
https://tr.wikipedia.org/wiki/Ubuntu_(i%C5%9Fletim_sistemi)
http://e-bergi.com/y/VirtualBox
https://tr.wikipedia.org/wiki/MySQL
http://harunozer.com/makale/nodejs_nedir.htm