Maklumat

Tulisan-tulisan terkini dapat juga didapatkan di halaman Kompasiana di alamat https://kompasiana.com/didikaha

Khusus untuk konten-konten sastra seperti puisi, cerpen dan esai silahkan kunjungi http://blog.edelweis-art.com. Terima kasih (Penulis)

Rabu, Desember 18, 2019

Fungsi Penghitungan pada Excel

Fungsi Dasar Penghitungan


Pada Excel, setidaknya ada 5 fungsi dasar penjumlahan bilangan, yaitu SUM, COUNT, MAX, MIN & AVERAGE. Sesuai namanya, SUM berfungsi untuk menjumlahkan nilai yang ditentukan, sedangkan COUNT berfungsi untuk menghitung jumlah nilai yang ada. MAX & MIN berfungsi untuk mencari nilai tertinggi dan terendah sementara AVERAGE berfungsi mencari nilai rata-rata.


Mengacu pada tabel di atas, kita akan mencoba mengurangi satu per satu kelima fungsi dasar tersebut.

SUM


Rumus fungsi SUM adalah =SUM(number1;[number2];...) di mana parameter number adalah nilai yang akan dijumlahkan. Nilai tersebut bisa berada pada cell atau range.

Misalnya kita akan menghitung total kuantiti pada tabel di atas dan atau hanya menghitung total kuantiti dari produk DP saja.

Untuk menghitung total kuantiti yang berada pada cell C2 sampai dengan cell C14 (atau range C2:C14), maka rumusnya adalah =SUM(C2:C14) yang akan menghasilkan nilai 27.950. Adapun untuk menghitung total kuantiti dari produk DP saja yaitu yang ada di range C2:C5, range C7:C8, cell C11 dan range C13:14 maka rumusnya adalah =SUM(C2:C5;C7:C8;C11;C13:C14) yang akan menghasilkan nilai 12.350.

Catatan: Penentuan parameter data pada Excel menggunakan aturan sebagai berikut:
  • Untuk memilih data pada beberapa cell yang saling berurutan, menggunakan tanda titik dua (:) , misalnya data A1:A10 berarti mencakup semua cell yang ada pada kolom A baris 1 s.d 10 (terdiri dari 10 cell). Contoh lain data B2:D5 berarti mencakup semua cell yang ada pada kolom A s.d D masing-masing pada baris 2 s.d 5 (terdiri dari 12 cell). Himpunan cell yang saling berurutan inilah yang disebut dengan range
  • Untuk memilih data pada beberapa cell atau range yang acak, menggunakan tanda koma atau titik koma (;), misalnya data A1:A3;A5:A6;B4;C1:C6
  • Untuk memilih irisan data pada range yang saling beririsan, menggunakan tanda spasi. Misalnya data A1:B3 B2:C4 maka akan menghasilkan data B2:B3

COUNT


Rumus fungsi COUNT adalah =COUNT(value1;[value2];...) di mana value adalah nilai yang akan dihitung.

Untuk menghitung berapa kali penjualan terjadi pada tabel di atas maka rumusnya adalah =COUNT(A2:A14).

MAX, MIN & AVERAGE


Rumus fungsi MAX, MIN & AVERAGE berturut-turut adalah =MAX(number1;[number2];...)=MIN(number1;[number2];...) dan =AVERAGE(number1;[number2];...).

Untuk menentukan nilai kuantiti penjualan tertinggi & terendah pada tabel di atas maka rumusnya adalah =MAX(C2:C14) & =MIN(C2:C14). Sedangkan untuk mengetahui nilai rata-rata kuantiti penjualan produk DP maka rumusnya adalah =AVERAGE(C2:C5;C7:C8;C11;C13:C14).

Penghitungan dengan Menggunakan Kriteria


Saat berhadapan dengan data yang jumlahnya sangat banyak, tentu kita akan sangat kesulitan menghitung sebagian datanya saja seperti menjumlahkan nilai, menghitung jumlah atau mencari nilai rata-rata penjualan produk tertentu dengan urutan data yang acak seperti pada contoh di atas. Kita mesti harus sangat awas atau alih-alih ada data yang terlewat. Untunglah Excel menyediakan fungsi tambahan untuk SUM, COUNT & AVERAGE agar kita bisa memasukkan kriteria penghitungan dan tanpa repot-repot lagi harus memilah-milah datanya secara manual, yaitu fungsi IF dan atau IFS. Tambahan IF digunakan jika kita hanya akan memasukkan satu kriteria sedangkan IFS digunakan jika kriteria yang akan kita masukkan lebih dari satu. Untuk melakukan penghitungan dengan menggunakan kriteria, cukup dengan menggabungkan IF dan atau IFS dengan fungsi yang akan kita gunakan, menjadi SUMIF atau SUMIFS, COUNTIF atau COUNTIFS dan AVERAGEIF atau AVERAGEIFS.

SUMIF, COUNTIF & AVERAGEIF


Rumus fungsi SUMIF, COUNTIF & AVERAGEIF berturut-turut adalah =SUMIF(range;criteria;[sum_range])=COUNTIF(range;criteria) dan =AVERAGEIF(range;criteria;[average_range]). Parameter range adalah range di mana criteria berada sementara criteria adalah nilai kriteria penghitungan. Sementara parameter sum_range pada SUMIF atau average_range pada AVERAGEIF adalah range di mana data yang akan dihitung atau dicari nilai rata-ratanya berada, namun jika data berada pada range yang sama dengan kriteria maka parameter sum_range dan atau average_range tidaklah perlu diisi lagi.

Misalnya untuk menghitung total kuantiti penjualan, jumlah penjualan & rata-rata kuantiti penjualan dari kanvaser Andi maka rumusnya adalah =SUMIF(A2:A14;"Andi";C2:C14)=COUNTIF(A2:A14;"Andi") dan =AVERAGEIF(A2:A14;"Andi";C2:C14). A2:A14 adalah range di mana kriteria berada (yaitu nama kanvaser), Andi adalah kriteria nama kanvasernya dan C2:C14 adalah range data kuantiti yang akan dihitung atau dicari nilai rata-ratanya. Kriteria juga dapat merujuk pada cell yang berisi nilai kriteria, seperti pada gambar di bawah ini (cell E2 berisi kriteria yang akan digunakan yaitu nama kanvaser Andi).



SUMIFS, COUNTIFS & AVERAGEIFS


Rumus fungsi SUMIFS, COUNTIFS & AVERAGEIFS berturut-turut adalah =SUMIFS(sum_range;criteria_range1;criteria1;[criteria_range2;criteria2];...)=COUNTIFS(criteria_range1;criteria1;[criteria_range2;criteria2];...) dan =AVERAGEIFS(average_range;criteria_range1;criteria1;[criteria_range2;criteria2];...). Berbeda dengan jika hanya menggunakan satu kriteria di mana range data diletakkan sebagai parameter terakhir, maka pada penghitungan dengan multi kriteria, range data dalam hal ini sum_range pada SUMIFS dan average_range pada AVERAGEIFS diletakkan pada bagian depan disusul range dan nilai kriteria yang diperlukan.

Misalnya untuk menghitung total kuantiti penjualan, jumlah penjualan & rata-rata kuantiti penjualan dari kanvaser Andi untuk produk DP maka rumusnya adalah =SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DP")=COUNTIFS(A2:A14;"Andi";B2:B14;"DP") dan =AVERAGEIFS(C2:C14;A2:A14;"Andi";B2:B14;"DP")C2:C14 adalah range data kuantiti yang akan dihitung atau dicari nilai rata-ratanya. A2:A14 adalah range  kriteria 1 (nama kanvaser) dengan kriterianya Andi dan B2:B14 adalah range kriteria 2 (nama produk) dengan kriterianya adalah DP.

Catatan: Berbeda dengan SUMIF & AVERAGEIF, maka pada SUMIFS & AVERAGEIFS, meski antara data dan kriteria berada pada range yang sama, tetap keduanya harus disebutkan

Sekarang, masih mengacu pada tabel yang sama di atas, kita akan mencoba menghitung kembali total kuantiti penjualan kanvaser Andi namun kali ini untuk dua produk, yaitu DU5 & DU10 dengan menggunakan fungsi SUMIFS. Kita coba dengan menggunakan rumus =SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU5";B2:B14;"DU10").



Ups! Hasilnya 0. Nah, lho? Apakah ada yang salah? 

Tentang Kriteria Penghitungan


Ada beberapa hal yang perlu diketahui tentang penggunaan kriteria penghitungan pada Excel:

  • kriteria dapat berupa data teks, numerik ataupun logis
  • kecuali berupa data numerik, kriteria ditulis menggunakan tanda petik (")
  • kriteria dapat juga berupa cell referensi yang memuat nilai kriteria
  • kriteria dapat juga berupa fungsi
  • jika kriteria terdiri dari campuran data dan atau fungsi atau cell, gunakan tanda & untuk menggabungkannya, misalnya "<>"&A3 atau "<"&TODAY() 
  • logika yang diterapkan untuk penggunaan kriteria yang lebih dari satu (pada SUMIFS, COUNTIFS dan AVERAGEIFS) adalah AND (dan) bukan OR (atau), yang berarti data yang dihasilkan adalah data yang memenuhi semua kriteria 
  • untuk penghitungan data yang mengandung unsur data tertentu maka kita bisa menambahkan tanda bintang (*) pada kriteria, misalnya "*di" untuk kriteria nama kanvaser maka akan menghasilkan nilai dari Andi dan juga Budi, atau "DU*" untuk kriteria produk maka akan menghasilkan nilai dari DU1, DU5 dan DU10
  • kriteria dapat juga berupa array atau larik data teks, misalnya {"Andi";"Iwan"} atau {200;2500}, namun kriteria larik tidak dapat berisi cell atau range referensi atau fungsi, misalnya {A3;A5}
  • penggunaan kriteria berupa larik akan menghasilkan data berupa larik pula maka harus dijumlahkan kembali dengan fungsi SUM untuk fungsi SUMIFS dan COUNTIFS atau dihitung rata-ratanya kembali dengan fungsi AVERAGE untuk fungsi AVERAGEIFS, sebab jika tidak maka data yang akan ditampilkan hanyalah data pada larik pertama

Dari penjelasan di atas maka bisa dipahami sekarang kenapa rumus =SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU5";B2:B14;"DU10") menghasilkan 0. Karena dari rumus tersebut Excel akan mencari data kuantiti dengan kriteria kanvaser yang bernama Andi DAN produk dengan nama DU5 DAN produk dengan nama DU10, bukan produk dengan nama DU5 ATAU produk dengan nama DU10.

Agar penghitungan kita dapat menghasilkan nilai yang semestinya, kita dapat mengubah rumusnya menjadi =SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU5")+SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU10")


atau =SUM(SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU5");SUMIFS(C2:C14;A2:A14;"Andi";B2:B14;"DU10"))   


Seperti penjelasan di atas, maka kita pun dapat menggunakan kriteria berupa larik untuk produk, yaitu =SUM(SUMIFS(C2:C14;A2:A14;E2;B2:B14;{"DU5";"DU10"}))



Sebenarnya kita masih dapat menjumlahkan dengan multi kriteria berupa cell atau range referensi namun dengan menggunakan fungsi yang  berbeda yaitu SUMPRODUCT menjadi misalnya =SUMPRODUCT(--(A2:A14=E2);--(ISNUMBER(MATCH(B2:B14;H1:I1;0)));C2:C14). Namun, kita akan membahasnya pada tulisan berikutnya :)

Senin, Desember 16, 2019

Mengenal Tipe Data pada Excel

Pada umumnya, kita mengenal hanya ada tiga tipe data, yaitu huruf atau abjad, angka atau bilangan dan simbol atau tanda. Huruf meliputi A, B, C, ..., Z. Angka meliputi 0, 1, 2, ..., 9. Simbol seperti + untuk penjumlahan, $ untuk mata uang Dollar Amerika, # untuk tagar, dan sebagainya.  Ada pula yang membedakannya hanya menjadi 2 tipe atau konteks, yaitu teks dan bilangan. Bilangan dapat dihitung secara matematis sementara teks tidak (setidaknya tidak dengan cara yang sama seperti menghitung bilangan yang sesungguhnya).

Berbeda dengan kita, komputer sendiri tidaklah mengenal konteks. Komputer hanya mengenal 1 dan 0, atau on dan off pada mesin. Menjembatani kesenjangan persepsi antara kita, manusia, dengan komputer dan atau mesin, maka dibuatlah program untuk menerjemahkan inputan kita sehingga dapat dipahami dan dieksekusi oleh komputer ataupun mesin sekaligus memberikan output yang bisa kita pahami pula. Salah satu program yang cukup familiar kita gunakan sehari-hari adalah Excel.

Berkenaan dengan data, maka pada Excel secara garis besar data dibagi menjadi 4 tipe yaitu Logis, Numerik, Teks dan Error.

Tipe Data Logis


Tipe data logis digunakan terutama untuk melakukan pengujian baik terhadap data ataupun fungsi. Misalnya untuk menguji apakah data pada cell A1 sama dengan data pada cell B1 ataukah tidak. Atau menguji apakah jumlah data pada cell A1:A10 lebih besar dari data pada cell B1 ataukah tidak. Data tipe logis hanya ada 2 yaitu TRUE dan FALSE. TRUE untuk menyatakan benar jika kondisi yang diinginkan terpenuhi dan FALSE jika tidak terpenuhi.





Tipe Data Numerik


Tipe data numerik pada Excel meliputi semua macam bilangan baik bilangan bulat seperti 1.000 dan -2, bilangan desimal dan pecahan seperti 0,5 dan 3/5, bilangan eksponen seperti 1.23E+06 dan juga bilangan-bilangan lainnya seperti $10 dan 15% termasuk 15/12/2019 dan 5:45 PM. Ya, tanggal dan waktu pada Excel termasuk juga bilangan. Bilangan yang dapat ditampung oleh Excel mulai dari 2,2250 X 10-308 hingga 1,79768 X 10308.



Pada tabel yang pertama di atas, pada baris 1 merupakan tampilan sesuai format yang ditentukan dari bilangan seperti yang ada di bawahnya pada baris 2. Sedangkan pada tabel yang kedua, semua bilangan bernilai 0,75. Bilangan pada kolom D menghasilkan waktu jam 6 petang atau pukul 18. Dengan asumsi satu hari penuh atau 100 %-nya adalah 24 jam, maka nilai 0,75 atau setara dengan 75% maka menghasilkan waktu tersebut.

Excel akan menggunakan nilai bilangan pada setiap operasinya. Dengan demikian, tidak akan menjadi masalah jika kita menjumlahkan tanggal dengan bilangan desimal atau membagi bilangan eksponen dengan pecahan.



Satu hal yang perlu diperhatikan adalah, meski Excel dapat menampung data numerik yang sangat besar namun Excel hanya akan menangani maksimal 15 digit pertama. Jika ada data numerik dengan jumlah lebih dari 15 digit, maka sisa digit akan diabaikan (dikonversi menjadi 0). Misalnya bilangan 123456789123456789 yang terdiri dari 18 digit, maka ketika diletakkan di Excel akan menjadi 123456789123456000. Hal ini tentu akan mengganggu seperti misalnya untuk menampung data barcode bilangan yang lebih dari 15 digit. Menghindari ketidakvalidan data yang mungkin timbul, kita bisa menampilkannya dengan dengan mengubah tipe data menjadi teks.


Tipe Data Teks


Tipe data teks pada Excel adalah meliputi semua data selain data logis, numerik dan error. Namun demikian, seperti disebutkan di atas, data yang semula bertipe numerik pun dapat dijadikan teks, misalnya agar semua data dapat terbaca atau ditampilkan seperti angka 0 yang berada di depan. Jika data 000123 tetap sebagai data numerik, maka yang akan ditampilkan hanyalah 123. Namun jika diubah menjadi teks maka tetap akan ditampilkan secara utuh: 000123.

Tipe Data Error


Tipe data error pada Excel disediakan untuk mendefinisikan hasil operasi yang buntu (tidak dapat tertangani). Misalnya ketika kita melakukan operasi pembagian 2/0, ini akan menghasilkan #DIV/0!. Atau saat kita mengambil data dari tabel atau sheet lainnya namun ternyata data tersebut tidak ditemukan maka akan menghasilkan #N/A.

Berikut adalah daftar lengkapnya:

ErrorPenyebabKasus Umum
#DIV/0Membagi bilangan dengan 0Tanpa sengaja membagi bilangan dengan 0. Pada Excel, cell kosong akan dianggap 0 pada operasi perhitungan
#N/AData tidak ditemukanKita mengambil suatu nilai dari sumber data lain namun data tersebut tidak ditemukan
#NAME?Nama tidak dikenaliNama merujuk pada nama fungsi atau dataset yang digunakan. Kita keliru menggunakan nama
#NULL!Kekeliruan referensi rangeDalam operasi terhadap sebuah atau beberapa range, berlaku hal berikut:
- tanda titik dua (:) berfungsi untuk menggabungkan beberapa cell yang saling berkait menjadi sebuah range, misalnya A1:C5
- tanda koma atau titik koma berfungsi untuk menggabungkan cell atau range yang saling lepas, misalnya A1;C1;E1 atau A1:A2;C1:C2
- tanda spasi berfungsi untuk mengambil irisan dari beberapa range misalnya A1:C2 C2:C4

Jika kita keliru menggunakan tanda tersebut, misalnya harusnya koma atau titik koma tapi kita menggunakan spasi, atau kita melakukan irisan pada dua range yang saling lepas, maka akan timbul error ini
#NUM!Rumus atau fungsi berisi nilai numerik yang tidak validKita memasukkan nilai numerik menggunakan tipe data atau format angka yang tidak didukung di bagian argumen rumus. Misalnya, kita tidak bisa memasukkan nilai seperti $1,000 dalam format mata uang, karena tanda dolar digunakan sebagai indikator referensi absolut dan koma sebagai pemisah argumen dalam rumus
#REF!Referensi cell invalidMisalnya cell atau sheet yang dijadikan referensi perhitungan tanpa sengaja terhapus, atau jika referensinya menggunakan data pada file Excel yang berbeda, file itu tidak lagi ditemukan
#VALUE!Parameter data invalidMisalnya saat kita hendak menjumlahkan antara 2 cell namun salah satunya berupa teks

Sumber: Microsoft Excel Basics Part II: Data Types in Excel (John Atten, 2013) 

Minggu, September 29, 2019

Menguji Instalasi Server Web dan Koneksi ke Database

Pada tulisan sebelumnya, saya telah membahas tentang cara menginstal Apache, PHP & MariaDB untuk keperluan server web. Indikasi instalasi tersebut sukses atau tidak bisa kita lihat melalui Windows Services apakah masing-masing service-nya telah/dapat berjalan atau belum (dalam hal ini: service dari Apache & MariaDB). Jika masing-masing service telah berjalan, maka saatnya kita melakukan pengujian.

Pengujian yang pertama kita lakukan untuk Apache dan PHP. Pertama, kita coba cek log error untuk Apache & PHP. Nama dan lokasi file log error untuk Apache bisa dilihat pada baris ErrorLog "logs/error.log" pada file http.conf. Sementara file log error untuk PHP bisa dilihat pada baris error_log = php_errors.log pada file php.ini.

Apa yang tertulis di file log error Apache tergantung dari LogLevel yang ada, yaitu debug, info, notice, warn, error, crit, alert & emerg (lihat tabel di bawah ini).


Jika pada httpd.conf yang kita temukan adalah LogLevel warn artinya, sesuai tabel di atas, Apache akan mencatatkan kondisi-kondisi yang terjadi. Kita dapat mengubah LogLevel yang ada sesuai dengan kebutuhan kita. Sementara untuk log error PHP, secara bawaan PHP akan membiarkannya kosong jika tidak terjadi masalah. Artinya, jika kita tidak atau belum menemukan file log error PHP berarti baik-baik saja adanya.

Sekarang kita coba lihat file log error Apache.


Untuk proses instalasi yang telah kita lakukan, pada file log error Apache terlihat adanya sebuah warning saat service Apache dijalankan: [ssl:warn] [pid 4628:tid 652] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]. Ini sepertinya berkaitan dengan module ssl yang telah kita aktifkan namun belum kita atur konfigurasi ssl-nya. Untuk itu, sementara kita nonaktifkan kembali module ssl-nya dengan memberikan kembali tanda pagar (#) pada dua baris berikut:

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

Setelah kita restart Apache-nya, warning itu tidak lagi muncul (lihat gambar di bawah).


Adapun file log error PHP, ternyata belum ditemukan, artinya settingan pada file php.ini tidak ada yang bermasalah.

Berikutnya kita buat file index.php yang kita letakkan di root dokumen web dengan isian sebagai berikut:


Lalu kita coba buka melalui browser web di komputer server pada alamat http://localhost/index.php atau cukup http://localhost saja, maka akan nampak tampilan seperti di bawah ini.


Ya, phpinfo() memang berfungsi untuk menampilkan semua informasi terkait PHP yang kita gunakan. Sekarang kita coba buka halaman index.php tersebut dari komputer atau perangkat lain, yaitu cukup dengan mengetikkan alamat IP server pada browser web yang ada.


Yang muncul pada halaman kemudian berbeda dari apa yang ditampilkan saat mengaksesnya dari komputer server. Yang muncul hanyalah tulisan Hello, World! karena memang telah kita atur demikian. Dan memang sebaiknya informasi yang didapat dari phpinfo() janganlah ditampilkan untuk publik karena memang informasi yang ada bersifat krusial menyangkut data konfigurasi server kita.

Sekarang kita akan melakukan pengujian koneksi ke MariaDB menggunakan mysqli. Untuk itu kita buat file db_conn.php dengan isian sebagai berikut:


Setelah itu kita coba buka halamannya.



Ups! Ternyata error. Dan setelah kita cek di file log error PHP ditemukan keterangan: PHP Fatal error:  Uncaught Error: Call to undefined function mysqli_connect() in D:\htdocs\db_conn.php:11 Stack trace: #0 {main} thrown in D:\htdocs\db_conn.php on line 11.

Dari keterangan error yang ada, ternyata mysqli tidak atau belum dikenali. Sekarang kita coba cek php.ini. Ternyata mysqli-nya belum diaktifkan. ;extension=mysqli. Begitu pun dengan semua extention lainnya. Untuk itu, kita aktifkan dulu mysqli dengan membuang tanda titik-koma (;) yang berada di depannya. Sekalian juga kita aktifkan beberapa extention lainnya yang kita perlukan, seperti curl, fileinfo, pdo_mysql dan lain-lain. Setelah itu kita restart service Apache, dan kita coba buka kembali halaman db_conn.php.



Yess! Sekarang kita telah bisa tersambung ke database MariaDB.

Penting untuk selalu memperhatikan dan memahami log error jika sewaktu-waktu terjadi kendala, karena memang fungsi dari log error adalah membantu kita untuk mengetahui kondisi yang ada agar dapat diperbaiki

Untuk pengelolaan database lebih lanjut, kita akan menggunakan phpMyAdmin yang bisa diunduh di situs www.phpmyadmin.net. Saat ini versi stable terakhir yang tersedia adalah phpMyAdmin 4.9.1. Setelah kita unduh, ekstrak file phpMyAdmin-4.9.1-all-languages.zip lalu kita tempatkan di root dokumen web. Agar tidak sulit saat kita akan membukanya karena namanya terlalu panjang, ubahlah namanya menjadi misalnya phpmyadmin saja.


Ada beberapa settingan yang perlu kita lakukan. Pertama, secara default phpmyadmin tidak mengijinkan akses ke database tanpa password. Untuk itu kita perlu mengubahnya, jika saat instalasi MariaDB kita membiarkan password untuk root tetap kosong. Cari file config.sample.inc.php kemudian kita copy atau rename menjadi config.inc.php. Buka file tersebut lalu cari baris $cfg['Servers'][$i]['AllowNoPassword'] = false; dan ubah nilai false menjadi true. Kedua, ini sebenarnya opsional namun jika Anda tidak ingin phpmyadmin diakses dari luar komputer server, maka kita perlu membatasi aksesnya dengan mengubah sedikit isi pada file index.php dengan menambahkan beberapa baris berikut pada bagian paling atas:


Dengan pembatasan akses di atas, maka jika ada yang berusaha mengakses phpmyadmin dari luar komputer server akan otomatis diarahkan ke halaman utama web kita.

Demikian, mudah-mudahan bisa menambah pencerahan. Salam!

Sabtu, September 28, 2019

Menginstall Apache, PHP & MariaDB pada Windows

Meski sekarang tren penggunaan server pribadi sudah mulai beralih ke layanan cloud semacam AWS dan Alibaba Cloud, namun penggunaan server pribadi tentu masih diperlukan adanya. Misalnya untuk keperluaan internal semacam perpustakaan, lab atau untuk keperluan pengujian dan development secara offline. Bagi Anda yang ingin membangun server web secara instan di komputer Windows, Anda bisa memanfaatkan XAMPP. Dengan sekali instal, Anda akan mendapatkan sekaligus Apache, PHP & MariaDB (yang menggantikan MySQL) terinstal di komputer Anda. Namun bagi Anda yang ingin membangun server web secara manual, maka Anda mesti menginstal satu per satu aplikasi yang diperlukan tersebut (Apache, PHP & MariaDB). Saya sendiri, lebih suka membangun server web secara manual, baik untuk development maupun production, karena lebih mudah melakukan pengaturan, update dan upgrade versi. Namun, tentu ini adalah soal selera, karena sebenarnya menggunakan XAMPP pun kita masih bisa melakukan pengaturan khusus seperti yang kita inginkan.

Well, bagi Anda yang ingin membangun server web secara manual, berikut akan sedikit saya share cara instalasinya. Sebelumnya, tentunya Anda harus mempersiapkan installer dari aplikasi-aplikasi yang diperlukan.

Catatan:

Tutorial ini berlaku untuk Windows 10 64-bit. Jika Anda menggunakan versi Windows lain, mungkin akan ada beberapa langkah yang berbeda, terutama untuk file installer-nya. Silahkan Anda sesuaikan atau cari referensinya ke Mbah Google.

Pertama, Apache. Apache sebagai aplikasi utama server web yang memungkinan data yang disediakan dapat diakses dengan mudah melalui http. Anda bisa mengunduh installer Apache melalui situs apachelounge.com. Sampai tulisan dibuat, versi yang terakhir yang tersedia adalah Apache 2.4 VS16 yang dirilis pada tanggal 14 Agustus 2019.

KeduaPHP. Sesuai namanya (PHP: Hypertext Preprocessor), berfungsi untuk mengolah script yang kita tulis sebelum ditampilkan pada halaman web ataupun untuk mengelola inputan dari pengguna yang kemudian disimpan di database ataupun ditampilkan hasilnya pada halaman web. Untuk mengunduh installer PHP, Anda bisa mengunjungi alamat http://windows.php.net/download/. Versi terakhir saat ini adalah PHP 7.3 (7.3.10) yang dirilis pada tanggal 16 September 2019.

Ketiga, MariaDB. Anda bisa mengunduh installer MariaDB melalui alamat https://mariadb.com/downloads/. MariaDB, sebagaimana MySQL, merupakan aplikasi database yang berfungsi untuk menampung data yang dipergunakan untuk dipublikasikan melalui server web. Versi Community Server, yaitu yang tersedia secara cuma-cuma, yang terakhir dari MariaDB saat ini adalah versi 10.4.8.

Instalasi Apache & PHP


Kita akan menggunakan file zip untuk menginstal Apache dan PHP. Ekstrak file aplikasi Apache yang telah kita unduh yaitu httpd-2.4.41-win64-VS16.zip lalu pindahkan folder Apache24 yang berada di dalamnya ke drive C. Sementara untuk PHP, setelah kita ekstrak, ubahlah nama folder hasil ekstraksi dari php-7.3.10-Win32-VC15-x64.zip menjadi php lalu pindahkan ke drive C.

Bukalah file httpd.conf pada folder C:\Apache24\conf. Tambahkan baris Define PHPROOT "c:/php7" dan baris Define DOCROOT "d:/htdocs" setelah baris Define SRVROOT "c:/Apache24" (ketiga baris ini untuk mendefinisikan folder utama dari Apache & PHP serta folder htdocs) serta tambahkan baris PHPIniDir "${PHPROOT}" setelah baris ServerRoot "${SRVROOT}". Di bawahnya tambahkan lagi tiga baris berikut yang berfungsi agar file PHP dapat dijalankan di server web karena secara default file PHP tidak dapat dijalankan secara langsung:

AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
LoadModule php7_module "${PHPROOT}/php7apache2_4.dll"

Setelah itu, ubah email pada baris ServerAdmin admin@example.com menggunakan email Anda serta ubah nama server pada baris ServerName www.example.com:80 dengan nama domain atau ip server Anda. Ubah juga baris DocumentRoot "${SRVROOT}/htdocs" dan <Directory "${SRVROOT}/htdocs"> menjadi DocumentRoot "${DOCROOT}" dan <Directory "${DOCROOT}">. DOCROOT sendiri tidak harus berada di folder d:/htdocs. Bisa saja di d:/www atau kita tempatkan di folder atau drive lainnya. Yang terpenting adalah jangan meletakkannya di drive OS (C). Karena jika sewaktu-waktu OS-nya error atau rusak dan mesti diinstal ulang, kita lebih mudah untuk menyelamatkan datanya.

Selanjutnya, carilah baris AllowOverride None lalu ubah menjadi AllowOverride All (agar konfigurasi tambahan yang kita tulis pada file .htaccess kemudian dapat dijalankan juga). Lalu cari lagi baris DirectoryIndex index.html dan tambahkan index.php di depan index.html sehingga menjadi DirectoryIndex index.php index.html (berfungsi agar jika ada dua file index yang sama dengan ekstensi .php dan .html maka yang akan didahulukan/dieksekusi adalah file index.php).

Terakhir, aktifkan module rewrite, sochace_shmcb & ssl dengan membuang tanda pagar (#) pada baris-baris berikut:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

Jangan lupa save!. Module rewrite berfungsi salah satunya untuk mengubah url agar menjadi lebih enak dibaca dan diingat-ingat (misalnya mengubah url www.toko-sembako-online.com/index.php?cat=12&product=3456 menjadi www.toko-sembako-online.com/beras/beras-cianjur). Sedangkan module sochace_shmcb & ssl kita aktifkan agar web kita bisa diakses menggunakan https.

Selanjutnya, bukalah folder C:\php lalu copy file php.ini-development atau php.ini-production menjadi file php.ini. Bukalah file php.ini.

Jika diperlukan, ubahlah nilai-nilai dari max_execution_time, max_input_time, post_max_size, upload_max_filesize & memory_limit sesuai kebutuhan Anda. Setelah itu jangan lupa save. Parameter max_execution_time berfungsi untuk mengatur batas waktu berapa detik eksekusi sebuah script (default 30 dan 0 untuk tanpa batas). Sedangkan max_input_time, mengatur batas waktu input/request berapa detik sejak inputan/request diterima sampai dengan dieksekusi (default 60 dan -1 untuk tak terbatas). post_max_size mengatur batas ukuran file yang dapat dikirim melalui POST (misal 2MB atau 2048). upload_max_filesize mengatur batas ukuran file yang dapat diunggah (misal 1MB atau 1024) dan memory_limit mengatur alokasi memory komputer yang akan digunakan untuk mengeksekusi script PHP (misal 2048MB untuk alokasi memory sebesar 2GB).

Agar PHP dapat dikenali oleh sistem komputer, maka kita perlu memasukkan folder C:\php ke dalam Path System Environtment. Dan agar Apache dapat berjalan otomatis setiap kali komputer dinyalakan, maka silahkan buka CMD (buka sebagai Administrator) lalu ketik cd /d C:\Apache24\bin. Setelah aktif pada folder C:\Apache24\bin, ketik httpd.exe -k install -n "Apache2.4" untuk menginstall service Apache2.4.

Untuk melakukan upgrade versi Apache & atau PHP, sangat mudah, yaitu cukup mengganti file Apache yang berada di folder C:\Apache24 dan file PHP yang berada di folder C:\php dengan file baru. Jangan lupa sesuaikan konfigurasi dan pengaturannya di file httpd.conf & php.ini

Instalasi MariaDB


Jika untuk Apache & PHP kita menggunakan file zip, maka untuk menginstal MariaDB kita menggunakan file installer Windows (msi) yaitu mariadb-10.4.8-winx64.msi. Silahkan jalankan file tersebut dan ikuti petunjuk-petunjuk yang ada hingga proses instalasi selesai.

klik Next

centang untuk menyetujui lalu klik Next

klik tanda silang pada pilihan Database Instance

pilih Entire feature untuk menginstal semua fitur lalu klik Next

isikan kata sandi untuk 'root' atau buang centang pada Modify password
untuk membiarkan tanpa kata sandi lalu klik Next

klik Next

klik Install

tunggu sampai proses selesai lalu klik Next

selesai

Setelah MariaDB terinstal, seperti halnya folder htdocs, kita perlu memindahkan pula folder data MariaDB agar lebih aman. Untuk itu, silahkan buka Windows Service lalu stop dulu MariaDB. Buka folder data yang berada di C:\Program Files\MariaDB 10.4. Buka file my.ini lalu ganti lokasi penyimpanan data pada baris datadir=C:/Program Files/MariaDB 10.4/data ke lokasi baru misalnya menjadi datadir=D:/MariaDB/data. Jangan lupa save. Kemudian, pindahkan semua file dan folder yang berada di C:/Program Files/MariaDB 10.4/data ke D:/MariaDB/data (kecuali file my.ini). Jalankan kembali MariaDB.

Untuk mengupdate versi MariaDB ataupun menginstal lagi MariaDB pada komputer yang sama, cukup jalankan lagi file installernya dan ikut petunjuk yang ada. Jika kita bermaksud mengupdate versi, gunakan port yang sama seperti yang sedang digunakan (default port-nya 3306 seperti MySQL). Namun, jika bermaksud menginstal lagi, gunakan port dan nama service yang berbeda dan juga folder data yang berbeda. Jangan lupa menyesuaikan juga lokasi penyimpan pada file my.ini jika bermaksud mengupdate versi

pilih Create new untuk menginstal baru/menambahkan atau
pilih Do not create jika akan mengupgrade lalu klik Next

ubah Service Name dan TCP port untuk menginstal baru/menambahkan
atau biarkan apa adanya jika akan mengupgrade lalu klik Next

klik Ok

klik Finish untuk pengaturan lebih lanjut

klik No

centang pada pilihan database yang akan diupgrade lalu klik Upgrade

tunggu sampai proses selesai

selesai



Buka file my.ini pada folder data pada lokasi MariaDB yang baru (lihat gambar di atas) lalu sesuaikan lokasi data. Jika kita sedang mengupgrade maka kita tidak perlu memindahkan file dan folder yang ada pada folder data, karena kita akan menggunakan file dan folder yang telah ada sebelumnya. Namun jika kita bermaksud menginstal baru, maka kita perlu memindahkannya seperti saat instalasi pertama.

Jika kita sedang mengupgrade, pastikan service MariaDB sebelumnya sudah tidak ada atau di-disable pada Windows Services, sebab akan bisa membuat MariaDB tidak dapat dijalankan karena port-nya masih aktif.

Selamat mencoba!

Untuk melakukan pengujian terhadap instalasi Apache, PHP & MariaDB, silahkan baca tulisan saya yang berikutnya: Menguji Instalasi Server Web dan Koneksi ke Database