Konfigurasi NGINX untuk Codeigniter & PHP 7 pada Ubuntu 16.04


Konfigurasi NGIX CodeIgniter & PHP 7

Konfigurasi NGIX untuk CodeIgniter & PHP 7 - Nginx (dibaca: engine x) adalah server HTTP dan Proxy open source yang bisa juga berfungsi sebagai proxy IMAP/POP3.

Kode sumber nginx ditulis oleh seorang warga negara Rusia yang bernama Igor Sysoev pada tahun 2002 dan dirilis ke publik pada tahun 2004. Nginx terkenal karena stabil, memiliki tingkat performansi tinggi dan minim mengonsumsi sumber daya.

Nginx juga memiliki fitur seperti reverse proxy multiple protocols (HTTP, Memcached, PHP‑FPM, SCGI, uwsgi), Stream HTTP video (FLV, HDS, HLS, MP4) serta HTTP/2 gateway. Beberapa situs terkenal yang menggunakan Nginx adalah Wordpress, Fastmail, Ohloh, Sourceforge, Github dsb.
Sumber: wikipeda

Pada artikel kali ini saya akan menjelaskan tentang konfigurasi Nginx untuk framework Codeigniter beserta PHP 7.
Pernahkan anda mengalami aplikasi Codeigniter selalu page not found pada web server Nginx, padalah jika menggunakan Apache, baik-baik saja?

Jika pernah, mari simak artikel ini dengan baik ...

Instalasi Nginx Web Server

Oiya sebelum melanjutkan, pada artikel ini saya menggunakan sistem operasi Linux, yakni Ubuntu 16.04 LTS.
Langkah pertama yakni menginstal Nginx.
$ sudo apt-get update
$ sudo apt-get install nginx

Setelah terinstall, silahkan buka alamat http://localhost atau http://ipaddress anda di browser. Jika menampilkan halaman default Nginx berarti instalasi Nginx berhasil.

Jika belum berhasil, jalankan perintah dibawah ini.
$ sudo systemctl start nginx
Agar proses nginx dapat langsung berjalan setelah booting, jalankan perintah berikut.
$ sudo systemctl enable nginx

Konfigurasi PHP Processor (php-fpm)

Pada PHP 7.0, berkas php.ini terletak pada direktori:
/etc/php/7.0/fpm/php.ini
Belum menginstal php7.0 beserta modulnya? silahkan baca artikel berikut:

Install LAMP (Linux Apache MySQL PHP) pada Ubuntu 16.04
Jika sudah, eksekusi perintah dibawah ini:
$ sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/;' /etc/php/7.0/fpm/php.ini
$ sudo systemctl restart php7.0-fpm

Konfigurasi Nginx agar dapat memproses berkas PHP

Buka berkas konfigurasi nginx: /etc/nginx/sites-available/default.
Opsional, silahkan backup berkas default yang asli:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
Sekarang edit berkas tersebut:
sudo nano /etc/nginx/sites-available/default
Silahkan hapus semua kode yang ada pada berkas default, lalu copy paste kode berikut ini:
server {

    # This is a minimum configuration Nginx webserver with PHP 7.0

    # Document root:
    # --------------
    root /var/www/html;
    index index.php index.html index.htm;

    server_name ip address atau domain;


    location / {
    try_files $uri $uri.html $uri/ @extensionless-php;
    index index.php index.html index.htm;
    }


    # nama folder project codeigniter:
    # sekaligus menghilangkan index.php pada url
    # ------------------------------------------
    location /codeigniter {
    index index.php index.html index.htm;
    try_files $uri $uri/ /codeigniter/index.php; 
    }


    # fastcgi settings PHP 7.0
    # ------------------------
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_intercept_errors on;
    }


    # Menghilangkan extension PHP pada URL:
    # -------------------------------------
    location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
    }

    location ~ /\.ht {
        deny all;
    }

}

Silahkan perhatikan baris kode yang dicetak tebal, sesuaikan dengan nama project dan dokumen root server anda.
Jika sudah, silahkan simpan konfigurasi tersebut, dan lakukan testing untuk melihat apakah terjadi error pada konfigurasi nginx.
$ sudo nginx -t
Jika tidak terjadi error, maka output-nya yaitu seperti dibawah ini:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reload konfigurasi nginx dan silahkan lanjutkan development anda!
$ sudo systemctl reload nginx

Happy coding!

2 comments:

  1. Halo, saya sudah melakukan sesuai instruksi tapi ketika saya akses http://localhost/codeigniter browser langsung download file index.php

    ReplyDelete
  2. Sudah edit berkas /etc/nginx/sites-available/default nya mas?
    coba dicek kembali stepnya takut ada yg terlewat, jgn lupa di restart/ reload NGINX nya

    ReplyDelete