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)

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