CodeIgniter biasanya digunakan untuk memudahkan web developer untuk membuat aplikasi web secara instan menggunakan framework. Mengelola framework CodeIgniter bisa dilakukan di cPanel hosting atau langsung dari VPS. Di artikel ini kamu akan mempelajari bagaimana cara Deploy CodeIgniter dengan Nginx di VPS Ubuntu versi 18.04.
Framework
Framework adalah kumpulan fungsi atau class yang sudah tersedia dan dapat digunakan untuk membuat aplikasi website. Alhasil, developer tak perlu lagi membuat fungsi dari nol, karena mereka bisa langsung menggunakan fungsi yang tersedia pada framework yang digunakan.
CodeIgniter
CodeIgniter adalah sebuah aplikasi open-source dengan model MVC (Model, View, Controller) yang dapat dimodifikasi gratis oleh semua orang. Aplikasi ini dapat membuat sebuah website dinamis menggunakan bahasa pemrograman PHP, CodeIgniter juga memudahkan developer untuk membuat aplikasi website dengan cepat dan mudah daripada membuat dari awal.
MVC
Model
Model bertugas untuk mengelola data yang berhubungan dengan database, seperti mengambil data, menginput data, atau mengolah database. Intinya, semua fungsi atau instruksi yang berhubungan pada database ada pada Model.
View
View bertugas untuk mendesain halaman user interface yang akan dilihat oleh pengguna atau pengunjung website. Views terpisah dari Model dan Controller sehingga pengembangan website dapat dilakukan lebih baik.
Controller
Controller bertugas sebagai perantara Model dan View sehingga saat ada permintaan dari user, maka Views akan menghubungkan Controller ke Model. Sederhananya, View mengirimkan instruksi yang akan diproses oleh Controller.
Alur Kerja CodeIgniter
- Pengguna mengirimkan permintaan (request) ke web.
- Eksekusi pertama kali pada file index.php.
- Index.php akan meneruskan request tersebut ke routing (routers.php).
- Routing akan mencari cache yang tersedia pada website, apabila ditemukan cache, maka cache tersebut yang akan diberikan (response) ke permintaan (request) pengguna. Namun jika tidak ada cache, baru diteruskan ke Controller.
- Controller bertanggung jawab atas permintaan (request) pengguna dengan mengambil data pada Model dan di-render ke dalam View dengan menggunakan plugins, helpers, atau libraries yang tersedia.
- Hasil render tersebut akan dikirim ke pengguna melewati cache, agar ketika View mengirimkan ke pengguna, data akan disimpan ke dalam cache terlebih dahulu jika fitur caching diaktifkan, lalu dikirimkan ke pengguna.
Persiapan Cara Deploy CodeIgniter
Sebelum memulai cara deploy CodeIgniter, ada beberapa hal yang harus kamu persiapkan, yaitu:
- Pastikan kamu sudah memiliki cloud server/VPS dan domain. Jika belum, kamu bisa membeli Cloud VPS dan domain terlebih dulu.
- Akses root ke VPS
Cara Deploy CodeIgniter di VPS Ubuntu 18.04
Saat melakukan deploy CodeIgniter di VPS, ada beberapa cara yang perlu kamu lakukan, yaitu:
- Update Server
- Instalasi Nginx (sebagai web server)
- Instalasi PHP dann Konfigurasi PHP-FPM
- Instalasi dan Konfigurasi MariaDB (sebagai database)
- Download CodeIgniter
- Instalasi SSL dan Konfigurasi Virtual Host
- Instalasi Firewall
- Konfigurasi CodeIgniter
- Testing
Berikut ini adalah penjelasannya:
Update Server
Pertama, pastikan terlebih dulu, apakah server sudah diperbarui. Tujuannya, agar package-nya juga ikut ter-update lalu lakukan reboot server.
$ apt-get update -y
$ reboot
Instalasi Nginx
Di langkah kedua ini, kamu perlu menginstal web server, yaitu Nginx.
$ apt-get install nginx -y
Start dan enable on-boot pada Nginx.
$ systemctl start nginx
$ systemctl enable nginx
Proses instalasi Nginx sudah selesai.
Instalasi PHP dan Konfigurasi PHP-FPM
Sebaiknya, gunakan CodeIgniter versi 7.0, untuk instalasi PHP versi 7.0 diperlukan PPA (Personal Package Archives), maka tambahkan PPA ondrej/php yang memiliki package php versi 7.2 dan extension php lain yang dibutuhkan.
Selain itu, untuk CodeIgniter 4, gunakan minimal php versi 7.2.
$ apt install software-properties-common
$ add-apt-repository ppa:ondrej/php
$ sudo apt update
Instal PHP 7.2 dan beberapa extension yang diperlukan menggunakan perintah dibawah ini:
$ apt-get install graphviz aspell ghostscript php7.2-fpm php7.2-cli php7.2-pspell php7.2-curl php7.2-gd php7.2-intl php7.2-mysql php7.2-mysqli php7.2-xml php7.2-xmlrpc php7.2-ldap php7.2-zip php7.2-json php7.2-opcache php7.2-readline php7.2-mbstring php7.2-soap -y
Setelah instalasi php 7.2 dan beberapa extension lainnya selesai, maka selanjutnya konfigurasi PHP-FPM.
$ nano /etc/php/7.2/fpm/pool.d/www.conf
Mengingat web server yang digunakan adalah Nginx, maka ubah user dan group menjadi www-data.
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Lalu uncomment pada security limit extension, hanya enable .php saja.
security.limit_extensions = .php
Uncomment PHP Environment.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Save dan exit.
Kemudian pada php.ini di PHP 7.2 dan PHP 7.2-FPM perlu diubah.
PHP 7.2
$ nano /etc/php/7.2/cli /php.ini
PHP 7.2-FPM
$ nano /etc/php/7.2/fpm/php.ini
Sesuaikan value-nya dengan di bawah ini.
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 512M
max_execution_time = 600
max_input_time = 1000
max_input_vars = 3000
Save dan exit.
Lalu tes konfigurasi tersebut untuk mengetahui salah atau benar.
$ php-fpm7.2 -t
NOTICE: configuration file /etc/php/7.2/fpm/php-fpm.conf test is successful
Kemudian restart services fpm-nya.
$ service php7.2-fpm restart
Instal dan Konfigurasi MariaDB
Di artikel ini, kami menggunakan MariaDB versi 10.4, karena MySQL-nya sudah deprecated atau sudah outdated sehingga dilanjutkan dengan MariaDB. Untuk melakukan instalasi MariaDB, kamu perlu menambahkan repository key untuk mendapatkan packages yang terbaru dari MariaDB.
$ apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ add-apt-repository “deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main”
$ apt-get update -y
$ apt-get install mariadb-server -y
Untuk mengecek versi MariaDB, gunakan perintah di bawah ini.
$ mysql -V
mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Kemudian start dan enable on-boot.
$ systemctl start mariadb
$ systemctl enable mariadb
MariaDB ataupun MySQL berjalan pada port 3306, lakukan secure installation.
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
… Success!
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
Remove anonymous users? [Y/n] y
… Success!
Disallow root login remotely? [Y/n] y
… Success!
Remove test database and access to it? [Y/n] y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reload privilege tables now? [Y/n] y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Konfigurasi MariaDB sudah selesai.
Kemudian, kamu perlu membuat database untuk keperluan konfigurasi CodeIgniter dan grant privileges-nya.
$ mysql -u root -p
Masukkan password yang tadi digunakan saat melakukan secure installation.
CREATE DATABASE cidb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER ‘ciuser’@’localhost’ IDENTIFIED BY ‘p4ssw0rd123’;
GRANT ALL PRIVILEGES ON cidb.* TO ‘ciuser’@’localhost’ IDENTIFIED BY ‘p4ssw0rd123’;
FLUSH PRIVILEGES;
Jika diikuti dengan tepat sampai cara ini, seharusnya kamu sudah berhasil membuat user dan database untuk deploy CodeIgniter.
Download CodeIgniter
Langkah selanjutnya adalah mengunduh CodeIgniter dari website resminya langsung. Tapi sebelum itu, kunjungi directory web dahulu.
Di artikel ini, yang digunakan adalah CodeIgniter versi 4.0. Bedanya, index.php pada versi 4.0 sudah berada di /public/ sehingga konfigurasi virtual host nanti directory-nya diarahkan ke public.
$ cd /var/www/
$ wget https://github.com/codeigniter4/framework/archive/v4.0.4.zip
$ unzip v4.0.4.zip
Ubah nama directory dari “framework-4.0.4” menjadi “codeigniter”:
$ mv framework-4.0.4/ codeigniter
Ubah permission dan owner dari directory CodeIgniter.
$ chown -R www-data:www-data /var/www/codeigniter
$ chmod 755 /var/www/codeigniter
Proses download CodeIgniter sudah selesai.
Instalasi SSL dan Konfigurasi Virtual Host
Jangan lupa untuk meningkatkan keamanan website, salah satunya adalah dengan menggunakan SSL. Di sini, kami menggunakan SSL Let’s Encrypt, karena gratis dan dapat diinstal secara bebas.
Tapi, pastikan dulu domain kamu sudah diarahkan ke IP VPS.
$ systemctl stop nginx
$ cd /opt/
Kemudian, clone Let’s Encrypt dari github repository.
$ git clone https://github.com/letsencrypt/letsencrypt
$ ./letsencrypt/letsencrypt-auto certonly –standalone
Lalu ikuti instruksinya.
Path sertifikat ada pada:/etc/letsencrypt/live/namadomain/
Full Chain: /etc/letsencrypt/live/namadomain/fullchain.pem
Private Key: /etc/letsencrypt/live/namadomain/privkey.pem
Jika sertifikat SSL sudah dipastikan terinstal pada domainmu, maka langkah selanjutnya adalah konfigurasi virtual host.
Ke directory Nginx, lalu buat virtual host file codeigniter.conf
$ cd /etc/nginx/
$ nano conf.d/codeigniter.conf
# PHP Upstream Handler
upstream php-handler {
server unix:/run/php/php7.2-fpm.sock;
}
# Nginx redirect HTTP to HTTPS – codeigniterubuntu.dewiweb.net
server {
listen 80;
server_name codeigniterubuntu.dewiweb.net;
# enforce https
return 301 https://$server_name$request_uri;
}
# HTTPS
server {
listen 443 ssl; # port default untuk https
server_name codeigniterubuntu.dewiweb.net;
# Grade A
# Use certificate and key provided by Let’s Encrypt:
ssl_certificate /etc/letsencrypt/live/codeigniterubuntu.dewiweb.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/codeigniterubuntu.dewiweb.net/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ‘ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256’;
# Root Code Igniter Directory
root /var/www/codeigniter/public;
rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;
location ^~ / {
try_files $uri $uri/ /index.php?q=$request_uri;
index index.php index.html index.htm;
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass php-handler;
}
}
}
Save dan exit.
Tes konfigurasi Nginx dan pastikan tidak ada error, kemudian restart Nginx.
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ systemctl start nginx
Jika diikuti dengan benar, saat kamu melakukan pemindaian SSL Server Test pada SSL Labs akan seperti ini hasilnya.
Saat ini, proses instalasi SSL dan konfigurasi Virtual Host sudah selesai.
Instalasi Firewall
Pada Firewall ini kami menggunakan Config Security & Firewall (CSF).
$ cd /usr/src
$ wget https://download.configserver.com/csf.tgz
$ tar -xzf csf.tgz
$ install.sh
Edit csf.conf lalu ubah value make TESTING menjadi 0.
$ nano /etc/csf.conf
make TESTING=’0’
Save dan exit.
Reload csf dengan perintah di bawah ini.
$ csf -r
Konfigurasi CodeIgniter
Selanjutnya, kamu perlu melakukan konfigurasi pada file-file config yang ada di CodeIgniter.
Untuk konfigurasi database, kunjugi directory CodeIgniter (/var/www/codeigniter/app/Config/)
$ cd /var/www/codeigniter/app/Config/
$ nano Database.php
Ubah pada bagian berikut dan samakan dengan database yang kamu buat sebelumnya.
‘hostname’ => ‘localhost’,
‘username’ => ‘ciuser’,
‘password’ => ‘p4ssw0rd123’,
‘database’ => ‘cidb’,
Save dan exit.
Testing
Coba akses website-mu pada browser yang kamu gunakan.
Tampilan ini menunjukkan cara deploy CodeIgniter dengan Nginx di VPS Ubuntu 18.04 telah berhasil.
Simpulan
Jika kamu mengikuti cara deploy ini dari awal sampai akhir dengan tepat, seharusnya CodeIgniter sudah bisa kamu operasikan. Selain itu, kamu bisa lakukan pengembangan pada website-mu sesuai dengan dokumentasi yang diberikan oleh CodeIgniter.
Namun, agar aplikasi website buatanmu dapat beroperasi semaksimal mungkin, pastikan kamu menggunakan hosting yang aman dan cepat, agar saat pengunjung menggunakan aplikasi website-mu, mereka tidak mengalami kesulitan. Selain itu, website-mu yang cepat dan aman juga berkesempatan mendapatkan peringkat baik dari Google, lho!
Demikian artikel tentang cara deploy CodeIgniter ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb, ya. Semoga artikel ini membantu!