Setup PHP Web Application pada Azure Virtual Machine

Oktoyadi
ecomindo-dev
Published in
6 min readApr 17, 2020

Beberapa perusahaan yang telah memulai budaya DevOps menginginkan agar sistem dan aplikasi yang telah dimiliki tetap dapat digunakan. Hal ini bertujuan untuk mengoptimalkan resource yang dimiliki dan investasi yang telah ditanamkan. Tidak sedikit perusahaan yang telah memiliki sistem aplikasi yang dikembangkan menggunakan script PHP dan berbagai framework pendukungnya.

Apabila sistem aplikasi tersebut ingin dikelola melalui platform DevOps, berikut ini adalah salah satu contoh implementasi CI/ CD menggunakan Azure DevOps pada lingkungan yang mungkin telah dimiliki oleh suatu perusahaan, baik pada cloud maupun on premise.

Beberapa perusahaan menginginkan agar server aplikasi berjalan pada lingkungan on premise mereka, atau menggunakan virtual machine yang dimiliki pada cloud tanpa berlangganan Application Service Plan.

Untuk memenuhi kebutuhan ini, dapat digunakan Hosted Agent yang dipasang pada server on premise atau atau virtual machine yang berada pada cloud.

Pembahasan ini merupakan bagian pertama dari dua bagian yang membahas implementasi CI/ CD untuk PHP Web Application menggunakan Hosted Agent pada Azure DevOps.

Hal pertama yang perlu disiapkan adalah lingkungan sistem aplikasi. Apabila sistem aplikasi telah berjalan, maka pastikan source code sistem aplikasi yang akan dimasukkan ke dalam Azure DevOps adalah versi yang terakhir.

Apabila kita menginginkan untuk memiliki server pada cloud seperti AWS atau Azure, dapat dilakukan dengan berlangganan (subscription) suatu virtual machine yang dilengkapi dengan resource yang diinginkan. Untuk fokus pembahasan ini, maka lingkungan yang digunakan adalah Azure.

Berlangganan virtual machine pada Azure
Resource yang didapatkan ketika memilih virtual machine pada Azure

Dengan berlangganan sebuah virtual machine pada Azure, kita dapat memiliki sebuah mesin yang dapat kita atur skalabilitasnya sesuai dengan beban kerja mesin dan permintaan pengguna aplikasi.

Setelah menyiapkan suatu server baik yang berada pada on premise maupun Cloud, langkah selanjutnya adalah menyiapkan platform aplikasi. Dalam pembahasan ini yang akan digunakan adalah Apache Web Server, PHP 7.3.15, MariaDB dan framework aplikasi Laravel.

a. Instalasi Apache Web Server

# Instalasi Apache Web Server
# a. Update the system software packages
# dapat juga menggunakan perintah instalasi lainnya
sudo yum -y update
# b. Install Apache Web Server
sudo yum install httpd
# c. Untuk menjalankan atau menghentikan Apache Web Server
sudo systemctl start httpd
sudo systemctl stop httpd
# d. Memeriksa Apache Web Server berjalan
ps -aux | grep httpd

b. Instalasi PHP

# Instalasi PHP, misalnya kita menginginkan PHP versi 7.3
sudo yum install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi-php73 install php
# Restart Apache Web Server
sudo systemctl restart httpd

Untuk memeriksanya dapat menggunakan perintah php -v.

Apabila server menggunakan virtual machine yang berada dalam cloud Azure, maka harus dibuat dan diaktifkan terlebih dahulu inbound port rule nya. Bukalah portal Azure, kemudian buka Virtual Machine > Networking untuk membuat inbound port rule. Pilihlah Add Inbound Port Rule, kemudian pilihlah tab Basic.

Form untuk mendaftarkan inbound port rule (Basic)

Rule yang kita tambahkan adalah inbound port rule pada port HTTP. Untuk penggunaan selanjutnya dapat digunakan port lainnya seperti HTTPS, SSH, FTP atau port lainnya

Inbound port rules yang telah didaftarkan

Untuk dapat mengetahui web server telah dapat digunakan, kita buat sebuah file info.php yang disimpan dalam folder /var/www/html yang berisi

<?php
phpinfo();
?>

Kemudian tampilkan dengan http://[alamat webserver]/info.php.

Informasi PHP yang digunakan oleh web server

c. Instalasi Database

Langkah berikut ini kita lakukan sebagai database contoh, apabila kita belum memiliki database. Apabila telah tersedia, dapat menggunakan konfigurasi database yang telah digunakan.

# Instalasi database MariaDB
sudo yum install mariadb-server mariadb
# Jalankan MariaDB Server
sudo systemctl start mariadb
# Opsional, namun dianjurkan untuk segera mengamankan akses ke dalam
# database server, terutama akses user 'root' dan remote login
sudo mysql_secure_installation
# Kita akan diminta membuat password untuk user root. Simpanlah
# password tersebut.

Setelah itu kita persiapkan database yang akan kita gunakan dalam aplikasi kita.

# Login ke dalam database, menggunakan user dan password yang
# sebelumnya telah dibuat
mysql -u root -p
# Kita akan masuk ke dalam menu MariaDB, lalu membuat Database
CREATE DATABASE `sampledb` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `sampledb`;
# Membuat user yang akan digunakan di dalam aplikasi
GRANT ALL PRIVILEGES ON `sampledb`.* TO 'phpappuser'@'localhost' IDENTIFIED BY 'appuser12345' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Kita dapat menggunakan database lain, sesuai dengan kebutuhan aplikasi kita.

d. Instalasi Aplikasi Web

Sama seperti halnya database di atas, langkah berikut ini kita lakukan apabila kita belum memiliki aplikasi yang telah berjalan.

Dalam pembahasan ini kita akan menggunakan contoh aplikasi web yang menggunakan framework Laravel PHP. Framework ini cukup banyak digunakan dalam komunitas developer PHP.

d.1. Instalasi Composer

Framework Laravel membutuhkan modul Composer. Untuk instalasi Composer di server / virtual machine Linux kita lakukan langkah berikut

# Instalasi composer di Linux
curl -sS https://getcomposer.org/installer | php
sudo mv composer .phar /usr/local/bin/composer
# Memeriksa versi composer yang terinstal.
composer -V
# Pada server atau virtual machine Linux, Laravel membutuhkan
# folder /storage dan /bootstrap/cache untuk dapat diakses
sudo chmod 777 -R storage
sudo chmod 777 -R bootstrap/cache

Sebelum melanjutkan instalasi aplikasi di server, pastikan dahulu bahwa aplikasi yang akan kita simpan ke server telah ada di komputer local/ developer.

d.2. Instalasi Aplikasi di komputer local/ developer

Sebelum meng-upload file-file aplikasi yang dikerjakan, developer bekerja di komputer lokal masing-masing. Apabila komputer yang kita gunakan adalah Windows, kita dapat mendownload Composer-Setup.exe , kemudian ikuti langkah-langkah instalasi. Untuk menjalankan Composer, kita perlu berada pada lokasi file Composer berada atau dengan mengatur PATH Composer terlebih dahulu dalam environment Windows.

Setelah Composer tersedia, kita dapat menggunakan contoh aplikasi pada alamat berikut:

https://github.com/Azure-Samples/laravel-tasks.git

Aplikasi ini dapat kita fork / clone/ download di komputer kita apabila kita belum memiliki aplikasi web yang akan dijalankan.

Setelah file-file aplikasi web tersedia di komputer local, bukalah file .env.example kemudian ubah isinya sesuai dengan parameter aplikasi kita

APP_NAME=”Cloud Web Application”
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sampledb
DB_USERNAME=phpappuser
DB_PASSWORD=appuser12345

Kemudian simpanlah dengan nama .env.

# Masuklah ke folder tempat aplikasi di atas tersimpan.
# Kemudian jalankan perintah untuk menginstal library-yang
# diperlukan oleh aplikasi tersebut, karena pada saat mendownload
# library /vendor tidak turut terinstal
composer install
# Generate key untuk aplikasi kita
php artisan key:generate
# Memeriksa versi Laravel yang terinstal
php artisan -V
# Siapkan struktur data dan data yang akan digunakan dalam aplikasi
php artisan migrate
# Jalankan perintah berikut, dan bukalah aplikasi pada web browser
# dengan alamat http://localhost:8000/
php artisan serve

d.3. Instalasi Aplikasi di server/ virtual machine

Setelah memastikan aplikasi yang ada di komputer local/ developer berjalan dengan baik dan merupakan versi terakhir, kita dapat menyalinnya ke server/ virtual machine.

Folder default dokumen aplikasi web adalah /var/www/html. Kita akan menyalin aplikasi kita ke dalam folder tersebut. Apabila pengelola server telah mengatur penempatan file-file aplikasi web, kita dapat mengikuti ketentuan dari pengelola server tersebut.

Dalam pembahasan ini file-file akan disimpan di dalam folder /var/www/html/CloudDevOps. Setelah kita membuat folder tersebut, salinlah seluruh file aplikasi dari komputer local/ developer ke dalam folder tersebut. Untuk menyalinnya kita dapat menggunakan aplikasi seperti Win SCP, atau Git. Jangan terlewat juga file-file seperti .env, karena file-file tersebut biasanya tidak ditampilkan (hidden file).

Bukalah file konfigurasi Apache /etc/httpd/conf/httpd.conf. Kemudian ubahlah variabel DocumentRoot dan atribut folder DocumentRoot tersebut.

DocumentRoot “/var/www/html/CloudDevOps/public”

Dan pada atribut folder dokumen

Options Indexes FollowSymLinks
AllowOverride All

Setelah file-file tersimpan, kemudian konfigurasi web server dan database server telah disesuaikan, pastikan struktur database telah sama dengan dengan di komputer local/developer.

# Siapkan struktur data dan data yang akan digunakan
php artisan migrate

Untuk selanjutnya kita akan melakukan setup CI/CD aplikasi web PHP menggunakan hosted agent pada Azure DevOps.

Melanjutkan ke: Setup CI/CD untuk PHP Application di Azure VM menggunakan Hosted Agent pada Azure DevOps

--

--