Membuat WebApp dengan Microsoft Azure dan Github



Microsoft Azure adalah cloud service platform dari microsoft yang dapat digunakan untuk berbagai hal dalam bidang cloud computing seperti database, mobile backend, web apps, virtual machines, dan lain-lain.

Pada artikel kali ini kita akan membuat web app dan di-host ke azure. Ada dua cara untuk deploy web app ke azure, yaitu FTP dan Git. Artikel kali ini akan menunjukan bagaimana men-deploy-kan nya menggunakan Git.

Terlebih dahulu kita perlu membuat akun Github untuk menggunakan layanan Git dengan mengunjungi github.com. Klik sign up, isi data pada form yang tersedia lalu klik Create an account.


Pada langkah ini, pilih yang Free, lalu klik Finish sign up

Buka inbox email yang telah didaftarkan akun github, lalu verifikasi email tersebut
Langkah selanjutnya kita perlu menginstall Git Terminal pada laptop kita dengan mengunjungi link berikut git-scm.com lalu klik download.

Kembali ke web github tadi, buat repository baru dengan klik tombol New Repository. Kemudian masukkan nama repository yang kita inginkan, misalnya AzureWebApp lalu klik Create repository.

Selanjutnya kita akan menyimpan kode program yang kita buat ke github menggunakan git terminal. Buka git terminal(git bash) lalu ikuti langkah-langkah berikut ini:

Buat file index.php dengan isi sebagai berikut, lalu simpan pada folder anda

<?php 
   echo "Hello, Azure!";
?>

Buka lokasi code program disimpan pada CMD(misal disini saya simpan pada folder WebSaya), lalu ketik 

git config --global user.name “nickname”
git config --global user.email “email”

*nickname = username github anda
*email = email github anda

Selanjutnya lakukan inisialisasi pada repository

git init

Hubungkan dengan repository yang telah anda buat

git remote add origin https://github.com/azhary/AzureWebApp.git
git remote –v

*url repository bisa dilihat pada repository yang telah anda buat

Tambah semua file didalam folder dengan command

git add .

Commit dengan –m (message)

git commit –m “initial commit”

Selanjutnya push ke github

git push origin master

Setelah itu anda akan diminta untuk memasukkan username dan password.


Command Git 

git config
konfigurasi user pada saat pertama kali

git init
inisialisasi pertama kali pada folder project yang akan disimpan di github

git help
menampilkan command pada git

git status
menampilkan file yang telah diubah

git add
menambahkan file ke repository pada github

git commit
memberi tanda pada pada perubahan file

git branch
mengembangkan project pada masing-masing repository

git merge
menggabungkan semua project pada setiap contributor

git push
mengupdate perubahan code ke github

git pull
mengupdate code repositori local



Langkah selanjutnya kita akan membuat WebApp pada azure.

1. Terlebih dahulu login akun azure anda pada http://portal.azure.com/
2. Klik New, pilih Web + Mobile, masukkan nama Web App anda lalu klik Create
3. Tunggu hingga proses selesai
4. Setelah selesai, anda dapat membuka web anda dengan mengunjungi alamat namawebanda.azurewebsites.net

5. Kemudian kita akan menghubungkan Azure Web App dengan Github, caranya pada menu Web App pilih Setting -> Continuous Deployment -> Choose Source -> Github
6. Klik Authorization untuk menghubungkan ke akun Github anda
7. Setelah dihubungkan ke akun github, klik Choose Project lalu pilih repository anda, kemudian klik OK.

8. Setelah integrasi dengan akun github berhasil, lihat web anda
Setiap kita melakukan push otomatis Azure akan mengupdate project web kita.


Selanjutnya kita akan menghubungkan database MySQL dengan Azure.

1. Buka portal azure, lalu klik New -> Data + Storage -> MySQL Database. Isi nama database. Pada bagian Legal Terms klik OK untuk memberikan authorize pada Legal Terms. Kemudian klik Create
2. Setelah deployment database selesai, pada settings lalu lihat properties yang ada pada database tersebut.
Kita akan membutuhkan informasi mengenai HOSTNAME, DATABASE NAME, USERNAME, dan PASSWORD.

3. Kemudian kita akan membuat tabel pada database kita, buka http://www.phpmyadmin.co/ lalu login menggunakan hostname, username, dan password yang telah kita dapatkan tadi

4. Pada bagian kiri, klik pada database yang kita buat tadi. Lalu pilih SQL, kemudian ketik query berikut ini lalu klik Go
CREATE TABLE registration_tbl(id INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(id), name VARCHAR(30), email VARCHAR(30), date DATE);

5. Pada folder kita, buat file baru dengan nama connect.php dengan isi sebagai berikut
<?php 
define("HOSTNAME", "hostname_database_anda");
define("USERNAME", "username_database_anda");
define("PASSWORD", "password_database_anda");
define("DBNAME", "nama_database_anda"); /* misalnya nama database saya db_azurems */

$conn = mysql_connect(HOSTNAME, USERNAME, PASSWORD)
  or die ("Error saat menghubungkan ke host database");
$db = mysql_select_db(DBNAME)
  or die ("Error saat menghubungkan ke database");
?>

6. Lalu ubah file index.php dengan isi sebagai berikut
<!DOCTYPE html>
<html>
<head>
 <title>Web App Sederhana</title>
</head>
<body>
 <form action="hello.php" method="POST">
  <div>
   <label for="nama">Nama</label>
   <input type="text" id="nama" name="nama"/>
  </div>
  <div>
   <label for="email">Email</label>
   <input type="email" id="email" name="email"/>
  </div>
  <div>
   <input type="submit" id="submit" name="submit"/>
  </div>
 </form>
</body>
</html>

7. Buat file baru dengan nama hello.php dengan isi sebagai berikut
<!DOCTYPE html>

<html>
<head>
    <title>Web App Sederhana</title>
</head>
<body>
    <?php
        include("connect.php");
        if (!empty($_POST)) {
            $nama = $_POST['nama'];
            $email = $_POST['email'];
            $date = date("Y-m-d");
            echo '<h1>Halo, ' . $nama . '!</h1>';
            echo 'Email : ' . $email;
            // Insert data
            $sql_insert = "INSERT INTO registration_tbl (name, email, date) VALUES ('$nama', '$email', '$date')";
            mysql_query($sql_insert) or die (mysql_error());
        }
        // Retrieve data
        $sql_select = "SELECT * FROM registration_tbl";
        $result = mysql_query($sql_select) or die (mysql_error());
        echo "<br><br>";
        echo "Data yang telah masuk :";
        echo "<br><br>";
        echo "<table border='1'>";
        echo "<tr><th>Nama</th>";
        echo "<th>Email</th>";
        echo "<th>Tanggal</th></tr>";
       
        while ($row = mysql_fetch_array($result)) {
            echo "<tr><td>".$row['name']."</td>";
            echo "<td>".$row['email']."</td>";
            echo "<td>".$row['date']."</td></tr>";
        }
        echo "</table>";
    ?>
</body>
</html>


8. Push lagi file-file tersebut lalu lihat perubahan yang terjadi pada web kita

MySQL Database - Percobaan 1

Untuk masuk ke directory XAMPP melalui command prompt dengan mengetik command berikut

cd\
cd xampp\mysql\bin

Setelah berada pada directory XAMPP, ketik command berikut untuk menghubungkan ke MySQL

mysql -u root -p

Untuk melihat MySQL Server Version yang sedang dipakai

select version(), current_date;

Bisa juga dipisah dengan koma dan enter(setiap akhir perintah ditandai dengan titik koma)

select
user()
,
current_date;

Contoh perintah operasi aritmatika

select sin(pi()/4), (4+1)*5;






Perintah membuat database

CREATE DATABASE contoh;



Memilih database yang akan digunakan



Melihat daftar tabel yang ada pada suatu database(menggunakan contoh database universitas)

















Membuat tabel










Melihat deskripsi sebuah tabel











Q & A

1. Perintah apakah yang digunakan untuk masuk ke MySQL yang tidak mempunyai password?:
Tinggal tekan enter ketika input password
2. Apakah perintah-perintah MySQL bersifat case sensitive?:
Tidak, perintah-perintah MySQL tidak bersifat case sensitive
(arti dari case sensitive adalah membedakan antara huruf kapital dan huruf kecil)
3. Apakah perbedaan pengetikan lebih dari satu perintah yang dipisah dengan tanda koma(,) dab tanda titik koma(;)?:
Tanda koma(,) membedakan perintah yang satu dengan yang lain, sedangkan tanda titik koma(;) menandakan akhir dari satu atau beberapa perintah
4. Bisakah kita melakukan operasi aritmatika yang lain dengan menggunakan perintah SQL?:
Bisa, contohnya:
SELECT 3 MOD 2
5. Haruskah kita mengetik perintah dalam satu baris?:
Tidak, kita juga bisa mengetik perintah pada baris yang berbeda karena bisa saja terdapat suatu perintah yang sangat panjang sehingga kita harus menulisnya pada baris yang berbeda untuk mempermudah membaca suatu perintah.
6. Bagaimana perintah mengakhiri atau membatalkan suatu perintah?:
\c
7. Sebelum membuat tabel, langkah-langkah apa saja yang sebaiknya dilakukan?:
Connect ke MySQL:
mysql -u root -p

Membuat Database:
CREATE DATABASE contoh;

Menggunakan Database:
USE contoh;

Sintaks Create Table (SQL)



Kerangka:
CREATE TABLE nama_tabel (
 nama_atribut1 tipe_data,
 nama_atribut2 tipe_data,
 .
 .
 nama_atributN tipe_data
)

Example:
CREATE TABLE mahasiswa (
 nim INT PRIMARY KEY,
 nama VARCHAR(30) 
)


Primary key:  nilai yang bersifat unique dan merepresentasikan sebuah entitas. Misalnya dalam sebuah tabel kebetulan ada 2 orang yang mempunyai nama “Azhary”, maka primary key(dalam hal ini nim) dapat membedakan kedua orang tersebut karena nim(nomor induk mahasiswa) setiap mahasiswa berbeda

Unique: nilai yang berbeda antara nilai yang satu dan nilai yang lain. Misalnya kita tidak dapat mendaftarkan dua akun facebook dengan email yang sama.

Foreign key: nilai yang menjembatani tabel yang memiliki primary key

Sintaks yang memiliki foreign key:
CREATE TABLE mahasiswa (
 nim INT PRIMARY KEY,
 nama VARCHAR(30) 
);

CREATE TABLE daftar_nilai (
 m_nim INT,
 algoritma_dan_pemrograman FLOAT,
 kalkulus FLOAT,
 matematika_diskrit FLOAT,
 FOREIGN KEY (m_nim ) REFERENCES mahasiswa (nim)
  ON DELETE CASCADE
);

Beberapa jenis tipe data:
INT
CHAR
VARCHAR(panjang_string)
FLOAT
TEXT
.
.
etc

Contoh database university yang memiliki beberapa tabel (sumber:  Database System Concepts karya Silberschatz, Korth, & Sudarshan).
CREATE TABLE classroom
 (building  VARCHAR(15),
  room_number  VARCHAR(7),
  capacity  NUMERIC(4,0),
  PRIMARY KEY (building, room_number)
 );

CREATE TABLE department
 (dept_name  VARCHAR (20), 
  building  VARCHAR (15), 
  budget          NUMERIC (12,2) CHECK (budget > 0),
  PRIMARY KEY (dept_name)
 );

CREATE TABLE course
 (course_id  VARCHAR (8), 
  title   VARCHAR (50), 
  dept_name  VARCHAR (20),
  credits  NUMERIC (2,0) CHECK (credits > 0),
  PRIMARY KEY (course_id),
  FOREIGN KEY (dept_name) REFERENCES department
  ON DELETE SET NULL
 ) ENGINE = MyISAM;

CREATE TABLE instructor
 (ID   VARCHAR (5), 
  name   VARCHAR (20) NOT NULL, 
  dept_name  VARCHAR (20), 
  salary   NUMERIC (8,2) CHECK (salary > 29000),
  PRIMARY KEY (ID),
  FOREIGN KEY (dept_name) REFERENCES department
  ON DELETE SET NULL
 ) ENGINE = MyISAM;

CREATE TABLE section
 (course_id  VARCHAR (8), 
           sec_id   VARCHAR (8),
  semester  VARCHAR (6)
  CHECK (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
  year   NUMERIC (4,0) check (year > 1701 and year < 2100), 
  building  VARCHAR (15),
  room_number  VARCHAR (7),
  time_slot_id  VARCHAR (4),
  PRIMARY KEY (course_id, sec_id, semester, year),
  FOREIGN KEY (course_id) REFERENCES course
  ON DELETE CASCADE,
  FOREIGN KEY (building, room_number) REFERENCES classroom
  ON DELETE SET NULL
 ) ENGINE = MyISAM;

CREATE TABLE teaches
 (ID   VARCHAR (5), 
  course_id  VARCHAR (8),
  sec_id   VARCHAR (8), 
  semester  VARCHAR (6),
  year   NUMERIC (4,0),
  PRIMARY KEY (ID, course_id, sec_id, semester, year),
  FOREIGN KEY (course_id,sec_id, semester, year) REFERENCES section
  ON DELETE CASCADE,
  FOREIGN KEY (ID) REFERENCES instructor
  ON DELETE CASCADE
 ) ENGINE = MyISAM;

CREATE TABLE student
 (ID   VARCHAR (5), 
  name   VARCHAR (20) NOT NULL, 
  dept_name  VARCHAR (20), 
  tot_cred  NUMERIC (3,0) CHECK (tot_cred >= 0),
  PRIMARY KEY (ID),
  FOREIGN KEY (dept_name) REFERENCES department
  ON DELETE SET NULL
 ) ENGINE = MyISAM;

CREATE TABLE takes
 (ID   VARCHAR (5), 
  course_id  VARCHAR (8),
  sec_id   VARCHAR (8), 
  semester  VARCHAR (6),
  year   NUMERIC (4,0),
  grade          VARCHAR (2),
  PRIMARY KEY (ID, course_id, sec_id, semester, year),
  FOREIGN KEY (course_id,sec_id, semester, year) REFERENCES section
  ON DELETE CASCADE,
  FOREIGN KEY (ID) REFERENCES student
  ON DELETE CASCADE
 ) ENGINE = MyISAM;

CREATE TABLE advisor
 (s_ID   VARCHAR (5),
  i_ID   VARCHAR (5),
  PRIMARY KEY (s_ID),
  FOREIGN KEY (i_ID) REFERENCES instructor (ID)
  ON DELETE SET NULL,
  FOREIGN KEY (s_ID) REFERENCES student (ID)
  ON DELETE CASCADE
 ) ENGINE = MyISAM;

CREATE TABLE time_slot
 (time_slot_id  VARCHAR (4),
  day   VARCHAR (1),
  start_hr  NUMERIC (2) CHECK (start_hr >= 0 and start_hr < 24),
  start_min  NUMERIC (2) CHECK (start_min >= 0 and start_min < 60),
  end_hr   NUMERIC (2) CHECK (end_hr >= 0 and end_hr < 24),
  end_min  NUMERIC(2) CHECK (end_min >= 0 and end_min < 60),
  PRIMARY KEY (time_slot_id, day, start_hr, start_min)
 );

CREATE TABLE prereq
 (course_id  VARCHAR (8), 
  prereq_id  VARCHAR (8),
 PRIMARY KEY (course_id, prereq_id),
  FOREIGN KEY (course_id) REFERENCES course
  ON DELETE CASCADE,
 FOREIGN KEY (prereq_id) REFERENCES course
 ) ENGINE = MyISAM;


Catatan: Engine InnoDB tidak mensupport foreign key sehingga di setiap tabel yang memiliki foreign key ditambah sintaks ENGINE = MyISAM.

Basic SQL Statement



SQL terbagi menjadi 2, yaitu DDL(Data Definition Language) dan DML(Data Manipulation Language)


1. Data Definition Language.

Create:
CREATE TABLE nama_tabel (
   nama_atribut1 tipe_data,
   nama_atribut2 tipe_data,
   .
   .
   .
   nama_atributN tipe_data
)

Create example:
CREATE TABLE mahasiswa (
   nim INT PRIMARY KEY,
   nama VARCHAR(35)
)

Drop:
DROP TABLE nama_tabel

Alter(menambah/menghapus atribut baru pada tabel yang sudah ada):
ALTER TABLE nama_tabel ADD nama_atribut tipe_data
ALTER TABLE nama_tabel DROP COLUMN nama_atribut


2. Data Manipulation Language

Select:
SELECT A1, A2, .., An
FROM R1, R2, .., Rn
WHERE condition

Insert:
INSERT INTO nama_tabel 
VALUES(value1, value2, .., valueN)

Update:
UPDATE nama_tabel 
SET nama_atribut=value
WHERE condition

Delete:
DELETE FROM nama_tabel
WHERE condition

SQL tidak bersifat case-sensitive, artinya tidak masalah jika menggunakan huruf kapital atau huruf kecil.