Anda di halaman 1dari 18

Jobsheet Minggu Ke-III

Proses dan Thread


1. Tujuan Praktikum
Setelah mengikuti praktikum ini, diharapkan mahasiswa mampu:
1. Mampu memahami studi kasus proses dan thread
2. Mampu mendeploy source code pada AWS cloud computing
3. Mampu memfaatkan Amazon EC2 sebagai salah satu layanan model cloud computing
Infrastruktur as a Service(IaaS)
IaaS adalah layanan cloud computing yang menyediakan infrastruktur teknologi informasi
seperti CPU, memory, storage, serta bandwith dengan memanfaatkan teknologi virtualisasi
melalui Internet.

2. Infrastruktur as Service (IaaS)


IaaS adalah layanan cloud computing yang menyediakan infrastruktur teknologi informasi
seperti CPU, memory, storage, serta bandwith dengan memanfaatkan teknologi virtualisasi
melalui Internet.

3. Amazon EC2
EC2 (Elastic Cloud Compute) adalah salah satu contoh layanan IaaS dimana kita bisa
membuat sebuah server(Instance) untuk menjalankan suatu aplikasi atau website.
Salah satu keunggulan EC2 adalah kemudahan untuk skalabilitas, dimana kita bisa memulai
membuat instance dengan sumber daya(processor, memory, storage) kecil, kemudian ketika
semakin besar kebutuhan sumber daya dapat dieskalasi dengan mudah.
Disamping itu EC2 cukup fleksibel dalam hal adaptasi teknologi lain. Misalkan ketika ingin
mengaplikaskan load balancer dalam EC2, yang mana hanya memerlukan beberapa langkah
saja.

3.1. Tipe Instance EC2


Merupakan pilihan tipe server yang kira-kira sesuai dengan kebutuhan komputasi kita.
Misalkan, ketika untuk kebutuhan umum dapat memakai tipe t2 dan m5, atau ketika untuk
kebutuhan dominan processor maka dapat memakai tipe c5 dimana dilakukan optimasi
sumberdaya processor dibanding memory. Atau tipe r4 dan x1e untuk optimasi kebutuhan
memory. Selain itu terdapat tipe-tipe lainnya seperti yang digambarkan dalam tabel di bawah.
3.2. Amazon Machine Image (AMI)
Adalah paket Operating System(OS) serta perangkat lunak yang disediakan dalam EC2, yang
nantinya akan diinstall dalam instance yang akan kita buat. Terdapat beberapa pilihan
operating system dalam AMI, seperti Ubuntu, Fedora, Centos, RedHat, Amazon Linux,
bahkan windows server.
Pilihan lain dalam AMI adalah software yang terinstall bawaan, seperti : LAMP, LEMP, dll.
Tetapi perlu diingat beberapa software dalam AMI tidak gratis. Beberapa software
membutuhkan biaya yang hitungannya adalah penggunaan perjam.

4. Praktikum 1 – Membuat Instance EC2 dan Koneksi ke EC2 dengan protokol SSH
Untuk membuat instance EC2, peserta kuliah harus sudah melakukan registrasi ke dalam
AWS educate dan dapat masuk ke dalam classroom yang disediakan. Jika belum, silahkan
ikuti jobsheet pertemuan sebelumnya.

4.1. Langkah 1
Masuk ke dalam konsol AWS, melalui URL:
https://aws.amazon.com/id/education/awseducate/ kemudian akan tampil halaman berikut:

Kemudian isikan email dan password.


4.2. Langkah 2
Masuk ke dalam Classroom

Selanjutnya akan tampil halaman AWS educate


4.3. Langkah 3
Setelah masuk AWS console akan tampil sebagai berikut, lalu pilih “Launch a virtual
machine”:

4.4. Langkah 4
Selanjutnya adalah proses memilih Amazone Machine Image(AMI). Pilih ubuntu server
16.04 seperti gambar berikut.
4.5. Langkah 5
Memilih tipe instance. Pilih tipe instance t2.small
4.6. Langkah 6
Selanjutnya adalah melakukan konfigurasi beberapa detail. Untuk saat ini yang perlu
dilakukan adalah mimilih “Auto-assign Public IP” menjadi enabled.

4.7. Langkah 7
Menentukan kapasitas storage. Ubah size storage-nya menjadi 20GB
4.8. Langkah 8
Menambahkan Tag. Dengan klik “Add Tag”.
Isikan key = Name, dan value = sister-NPM (contoh : sister-1831710160)

4.9. Langkah 9
Konfigurasi grup security. Secara default instance kita akan bisa diakses melalui port 22 (ssh)
dari mana saja (0.0.0.0/0). Dan tambahkan 1 rule untuk port http sehingga instance dapat
diakses melalui http.
Namun jika kita memiliki IP public sendiri, akan lebih aman jika kita spesifikkan ip kita
tersebut yang memiliki akses kepada instance.
Untuk sementara kita biarkan settingan default.
4.10. Langkah 10
Ringkasan setting yang telah kita lakukan.
Terdapat peringatan issue security, bahwa setting yang kita lakukan bahwa instance kita bisa
diakses dari mana saja. Kita biarkan saja, karena asumsinya kita tidak memiliki IP publik.

4.11. Langkah 11
Selanjutnya untuk dapat mengakses instance yang baru kita buat, kita perlu mendownload
key pair. Key tersebut harus disimpan baik-baik, karena jika kehilangan key tersebut, tidak
bisa didownload ulang. AWS tidak menyimpan “key”, jadi jika hilang maka kita akan
kehilangan akses kepada instance kita.
Untuk membuat key pair, klik “launch”. Kemudian pilih “create a new key pair”. Kemudian
isikan key pair name.
Selanjutnya download key pair, kemudian simpan di tempat yang aman.

4.12. Langkah 12
Langkah selanjutnya adalah menjalankan instance

Untuk memonitor status instance EC2 dapat dilakukan dengan mengakses Services -> EC2
4.13. Langkah 13 Mengakses Instance dan Integrasi ke VSCode
Hal pertama yang harus dilakukan adalah mendownload dan menginstall VSCode. Anda
dapat mendownload VSCode pada laman https://code.visualstudio.com/download. Jika
VSCode sudah ter-install, anda dapat menginstall VSCode extension Remote – SSH sehingga
kita dapat meremote instance AWS yang telah dibuat sebelumnya.
Selanjutnya kembali lagi ke AWS instance dan klik kanan pada instance ec2 kemudian pilih
connect maka akan muncul tampilan seperti dibawah ini.

Pada gambar diatas contoh untuk melakukan koneksi terhadap instance yang telah dibuat
adalah ssh -i "sister.pem" ubuntu@ec2-107-23-115-202.compute-1.amazonaws.com

Selanjutnya buka kembali VSCode dan pilih View Command Pallete


Hasilnya adalah config file dari remote-ssh adalah seperti berikut:

Keterangan:
a. Host : Nama yang akan muncul di VSCode, boleh diganti sesuai dengan keperluan
b. Hostname adalah host server
c. IdentityFile adalah path dari private key yang kita miliki
d. User adalah username dari server, username untuk default instance kita adalah
ubuntu. Untuk instance yang lain dapat dilihat di
(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html)

Edit untuk IdentityFile sesuaikan dengan path dimana anda menyimpan private key anda:

Sampai pada tambah ini kita VSCode sudah siap koneksi ke server dengan cara:
Anda dapat menggunakan Command Pallete Pilih config kemudian klik kanan dan pilih
atau menggunakan GUI seperti pada gambar untuk connect di current window.
diatas.

Jika muncul pesan seperti ini ketik yes dan Jika pada bagian bawah VSCode sudah
tekan enter. muncul keterangan seperti pada gambar
maka kita sudah berhasil koneksi ke
instance dari EC2.

Pilih menu terminal yang ada di VSCode Jika berhasil melaunch terminal maka akan
untuk melaunch terminal. tampilannya adalah seperti pada gambar
berikut.
5. Praktikum 2 – Instalasi Dependency yang diperlukan untuk membuat proses dan thread
menggunakan PHP

Untuk Mysql-server boleh tidak diinstall karena pada praktikum ini beum menggunakan
mysql
Ketikkan perintah berikut di terminal:
1. sudo su
2. apt install apache2
3. apt install mysql-server
4. apt install php libapache2-mod-
php php-mysql

Jika instalasi apache kita berhasil maka kita dapat melihat webserver dari instance yaitu
dengan mengetik ip public dari instance yang kita miliki.

Letak ip public dari instance yang anda miliki Tampilan apache yang telah
terinstall di server.

6. Praktikum 3 – Setelah menginstall dependency anda sudah siap untuk membuat program
di server.

6.1. Install Pthread Dependency


Ikuti langkah yang ada di gist
(https://gist.github.com/zheltikov/bfe8cabcd4d6ddb37f128eb92e65baec) dengan mencopy
satu persatu dan dieksekusi satu persatu. Pada EC2 yang anda miliki tidak dapat menambah
service untuk dapat merun command yang ada pada gist secara langsung, pesannya adalah
seperti berikut:
Berikut adalah perintah untuk instalasi pthreads:
Langkah 1 sampai 5 bertujuan untuk membuild ulang php versi 7 agar mengenable ZTS
(Zend Thread Safety). ZTS tidak dapat diaktifkan setelah dibuild, ini adalah opsi konfigurasi
waktu build
1. Update dan download package
sudo apt update && \
sudo apt install -y libzip-dev bison autoconf build-essential pkg-config git-core \
libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev \
libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev \
libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev

2. Pindah directory home (/home/ubuntu). Kemudian download php versi 7 dan


diekstraksi
cd $HOME
wget https://github.com/php/php-src/archive/php-7.2.2.tar.gz
tar --extract --gzip --file php-7.2.2.tar.gz

3. Pindah direktori dimanan php versi 7 di ekstrak


cd $HOME/php-src-php-7.2.2
./buildconf –force

CONFIGURE_STRING="--prefix=/etc/php7 --with-bz2 --with-zlib --enable-zip --disable-cgi \


--enable-soap --enable-intl --with-openssl --with-readline --with-curl \
--enable-ftp --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--enable-sockets --enable-pcntl --with-pspell --with-enchant --with-gettext \
--with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl \
--enable-bcmath --enable-mbstring --enable-calendar --enable-simplexml --enable-json \
--enable-hash --enable-session --enable-xml --enable-wddx --enable-opcache \
--with-pcre-regex --with-config-file-path=/etc/php7/cli \
--with-config-file-scan-dir=/etc/php7/etc --enable-cli --enable-maintainer-zts \
--with-tsrm-pthreads --enable-debug --enable-fpm \
--with-fpm-user=www-data --with-fpm-group=www-data"
./configure $CONFIGURE_STRING

4. Build PHP
make && sudo make install

5. Membuat phpize dan php-config programs executable


sudo chmod o+x /etc/php7/bin/phpize
sudo chmod o+x /etc/php7/bin/php-config

1. Clone github repository dari pthreads


git clone https://github.com/krakjoe/pthreads.git

2. Masuk kedalam folder pthreads dan menjalankan phpize


cd pthreads
/etc/php7/bin/phpize
Copy to clipboard

3. Mengatur konfigurasi untuk pthreads. --enable-pthreads=shared  adalah konfigurasi


utama pada bagian ini
./configure \
--prefix='/etc/php7' \
--with-libdir='/lib/x86_64-linux-gnu' \
--enable-pthreads=shared \
--with-php-config='/etc/php7/bin/php-config'
4. Menginstal pthreads sesuai dengan konfigurasi pada nomor 3.
make && sudo make install

5. Membuat php.ini.
cd $HOME/php-src-php-7.2.2
sudo mkdir -p /etc/php7/cli/
sudo cp php.ini-production /etc/php7/cli/php.ini

6. Menambahkan pthreads pada php.ini file


echo "extension=pthreads.so" | sudo tee -a /etc/php7/cli/php.ini
echo "zend_extension=opcache.so" | sudo tee -a /etc/php7/cli/php.ini
Copy to clipboard

7. Meremove instalasi php yang sudah ada. Selanjutnya file yang ada directory bin
diganti dengan php yang barusan di build
sudo rm /usr/bin/php
sudo ln -s /etc/php7/bin/php /usr/bin/php

8. Hasil php version sudah mengenable ZTS


php –version

6.2. Menjalankan contoh thread menggunakan php


Contoh implementasi dari pthreads sangat banyak atau sering kita temui/menfaatkan tetapi
kita tidak sadar. Untuk contoh pthreads dapat dilihat disini
(https://github.com/krakjoe/pthreads/tree/master/examples).

6.2.1. Membuat folder dan mengganti hak aksesnya sehingga kita dapat menyimpan
menggunakan VSCode.
1. Buka folder cd /var/www/html
/var/www/html
2. Membuat folder mkdir process
3. Mengubah hak ases sudo chown -R myuser /var/www/html/process
pada folder process.
Dengan demikian
VSCode dapat
menambah, menulis
file pada folder
process
4. Tambah file pada
folder process dengan
nama index.php. Tulis
isi dari file adalah
sebagai berikut

5. Jalankan php code php index.php


6. Hasilnya adalah
terdapat 5 thread
yang berjalan
Bersama. Contoh

Tugas :
1. Laporkan hasil praktikum 1, 2 dan 3.
2. Jelaskan perbedaan dan berikan contoh multi proses, multitasking, multi thread.

Anda mungkin juga menyukai