Cara Deploy CodeIgniter dengan Nginx di VPS Ubuntu 18.04

CodeIgniter biasanya digunakan untuk memudahkan net developer untuk membuat aplikasi net secara instan menggunakan framework. Mengelola framework CodeIgniter bisa dilakukan di cPanel internet 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 internet site. 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 mannequin MVC (Mannequin, View, Controller) yang dapat dimodifikasi free of charge oleh semua orang. Aplikasi ini dapat membuat sebuah internet site dinamis menggunakan bahasa pemrograman PHP, CodeIgniter juga memudahkan developer untuk membuat aplikasi internet site dengan cepat dan mudah daripada membuat dari awal.

MVC

Mannequin

Mannequin bertugas untuk mengelola statistics yang berhubungan dengan database, seperti mengambil statistics, menginput statistics, atau mengolah database. Intinya, semua fungsi atau instruksi yang berhubungan pada database ada pada Mannequin.

View

View bertugas untuk mendesain halaman consumer interface yang akan dilihat oleh pengguna atau pengunjung internet site. Views terpisah dari Mannequin dan Controller sehingga pengembangan internet site dapat dilakukan lebih baik.

Controller

Controller bertugas sebagai perantara Mannequin dan View sehingga saat ada permintaan dari consumer, maka Views akan menghubungkan Controller ke Mannequin. Sederhananya, View mengirimkan instruksi yang akan diproses oleh Controller.

Alur Kerja CodeIgniter

alur kerja codeigniter

  1. Pengguna mengirimkan permintaan (request) ke net.
  2. Eksekusi pertama kali pada file index.php.
  3. Index.php akan meneruskan request tersebut ke routing (routers.php).
  4. Routing akan mencari cache yang tersedia pada internet site, apabila ditemukan cache, maka cache tersebut yang akan diberikan (response) ke permintaan (request) pengguna. Namun jika tidak ada cache, baru diteruskan ke Controller.
  5. Controller bertanggung jawab atas permintaan (request) pengguna dengan mengambil statistics pada Mannequin dan di-render ke dalam View dengan menggunakan plugins, helpers, atau libraries yang tersedia.
  6. Hasil render tersebut akan dikirim ke pengguna melewati cache, agar ketika View mengirimkan ke pengguna, statistics 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:

  1. Pastikan kamu sudah memiliki cloud server/VPS dan area. Jika belum, kamu bisa membeli Cloud VPS dan area terlebih dulu.
  2. 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:

  • Replace Server
  • Instalasi Nginx (sebagai net server)
  • Instalasi PHP dann Konfigurasi PHP-FPM
  • Instalasi dan Konfigurasi MariaDB (sebagai database)
  • Obtain CodeIgniter
  • Instalasi SSL dan Konfigurasi Digital Host
  • Instalasi Firewall
  • Konfigurasi CodeIgniter
  • Testing

Berikut ini adalah penjelasannya:

Replace Server

Pertama, pastikan terlebih dulu, apakah server sudah diperbarui. Tujuannya, agar bundle-nya juga ikut ter-replace lalu lakukan reboot server.

 

$ apt-get replace -y

$ reboot

Instalasi Nginx

Di langkah kedua ini, kamu perlu menginstal net server, yaitu Nginx.

 

$ apt-get set up nginx -y

 

Begin dan allow on-boot pada Nginx.

 

$ systemctl begin nginx 

$ systemctl allow 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 (Private Package deal Archives), maka tambahkan PPA ondrej/php yang memiliki bundle php versi 7.2 dan extension php lain yang dibutuhkan.

Selain itu, untuk CodeIgniter 4, gunakan minimal php versi 7.2.

 

$ apt set up software-properties-common

$ add-apt-repository ppa:ondrej/php

$ sudo apt replace

 

Instal PHP 7.2 dan beberapa extension yang diperlukan menggunakan perintah dibawah ini:

 

$ apt-get set up 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 /and so forth/php/7.2/fpm/pool.d/www.conf

 

Mengingat net server yang digunakan adalah Nginx, maka ubah consumer dan group menjadi www-data.

 

consumer = www-data

group = www-data

pay attention.proprietor = www-data

pay attention.group = www-data

pay attention.mode = 0660

 

Lalu uncomment pada safety restrict extension, hanya allow .php saja.

 

safety.limit_extensions = .php

 

Uncomment PHP Setting.

 

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/native/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 /and so forth/php/7.2/cli /php.ini

 

PHP 7.2-FPM

$ nano /and so forth/php/7.2/fpm/php.ini

 

Sesuaikan worth-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 /and so forth/php/7.2/fpm/php-fpm.conf take a look at is profitable

 

Kemudian restart providers 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 replace -y 

$ apt-get set up 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) utilizing readline 5.2

 

Kemudian begin dan allow on-boot.

 

$ systemctl begin mariadb

$ systemctl allow mariadb

 

MariaDB ataupun MySQL berjalan pada port 3306, lakukan safe set up.

 

Enter present password for root (enter for none):

OK, efficiently used password, transferring on…

 

Change to unix_socket authentication [Y/n] y

Enabled efficiently!

Reloading privilege tables..

 … Success!

 

Change the foundation password? [Y/n] y

New password:

Re-enter new password:

Password up to date efficiently!

Reloading privilege tables..

 … Success!

 

Take away nameless customers? [Y/n] y

 … Success!

 

Disallow root login remotely? [Y/n] y

 … Success!

 

Take away take a look at database and entry to it? [Y/n] y

 – Dropping take a look at database…

 … Success!

 – Eradicating privileges on take a look at database…

 … Success!

 

Reload privilege tables now? [Y/n] y

 … Success!

 

Cleansing up…

 

All performed!  If you happen to’ve accomplished the entire above steps, your MariaDB

set up ought to now be safe.

 

Thanks for utilizing 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 safe set up.

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 consumer dan database untuk deploy CodeIgniter.

Obtain CodeIgniter

Langkah selanjutnya adalah mengunduh CodeIgniter dari internet site resminya langsung. Tapi sebelum itu, kunjungi listing net dahulu. 

Di artikel ini, yang digunakan adalah CodeIgniter versi 4.0. Bedanya, index.php pada versi 4.0 sudah berada di /public/ sehingga konfigurasi digital host nanti listing-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 listing dari “framework-4.0.4” menjadi “codeigniter”:

 

$ mv framework-4.0.4/ codeigniter

 

Ubah permission dan proprietor dari listing CodeIgniter.

 

$ chown -R www-data:www-data /var/www/codeigniter

$ chmod 755 /var/www/codeigniter

 

Proses obtain CodeIgniter sudah selesai.

Instalasi SSL dan Konfigurasi Digital Host

Jangan lupa untuk meningkatkan keamanan internet site, salah satunya adalah dengan menggunakan SSL. Di sini, kami menggunakan SSL Let’s Encrypt, karena free of charge dan dapat diinstal secara bebas. 

Tapi, pastikan dulu area kamu sudah diarahkan ke IP VPS.

$ systemctl cease nginx

$ cd /choose/

 

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:/and so forth/letsencrypt/reside/namadomain/

Full Chain: /and so forth/letsencrypt/reside/namadomain/fullchain.pem

Non-public Key: /and so forth/letsencrypt/reside/namadomain/privkey.pem

Jika sertifikat SSL sudah dipastikan terinstal pada domainmu, maka langkah selanjutnya adalah konfigurasi digital host.

 

Ke listing Nginx, lalu buat digital host file codeigniter.conf

$ cd /and so forth/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.web

server {

    pay attention 80;

    server_name codeigniterubuntu.dewiweb.web;

    # implement https

    return 301 https://$server_name$request_uri;

}

 

# HTTPS

server {

        pay attention 443 ssl;     # port default untuk https

    server_name codeigniterubuntu.dewiweb.web;

 

        # Grade A

        # Use certificates and key offered by Let’s Encrypt:

        ssl_certificate /and so forth/letsencrypt/reside/codeigniterubuntu.dewiweb.web/fullchain.pem;

        ssl_certificate_key /and so forth/letsencrypt/reside/codeigniterubuntu.dewiweb.web/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 Listing

        root /var/www/codeigniter/public;

        rewrite ^/(.*.php)(/)(.*)$ /$1?file=/$3 final;

 

        location ^~ / {

                try_files $uri $uri/ /index.php?q=$request_uri;

                index index.php index.html index.htm;

 

                location ~ .php$ {

                        embrace 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 /and so forth/nginx/nginx.conf syntax is okay

nginx: configuration file /and so forth/nginx/nginx.conf take a look at is profitable

 

$ systemctl begin nginx

 

Jika diikuti dengan benar, saat kamu melakukan pemindaian SSL Server Check pada SSL Labs akan seperti ini hasilnya.

cara deploy codeigniter ssl report

Saat ini, proses instalasi SSL dan konfigurasi Digital Host sudah selesai.

Instalasi Firewall

Pada Firewall ini kami menggunakan Config Safety & Firewall (CSF).

 

$ cd /usr/src

$ wget https://obtain.configserver.com/csf.tgz 

$ tar -xzf csf.tgz

$ set up.sh

Edit csf.conf lalu ubah worth make TESTING menjadi 0.

 

$ nano /and so forth/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 listing 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.

cara deploy codeigniter berhasil

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 internet site buatanmu dapat beroperasi semaksimal mungkin, pastikan kamu menggunakan internet hosting yang aman dan cepat, agar saat pengunjung menggunakan aplikasi internet site-mu, mereka tidak mengalami kesulitan. Selain itu, internet site-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 weblog Dewaweb, ya. Semoga artikel ini membantu!

Leave a Reply

Your email address will not be published. Required fields are marked *