Arsip Tag: config

Setup Nginx PHP-FPM MariaDB & Codeigniter di Ubuntu 16.04 LTS

PHP7 sudah tersedia di Ubuntu 16.04 LTS Xenial Xerus, jadi kita tidak perlu mengandalkan software pihak ketiga untuk meng-install php7 di ubuntu. Tutorial ini akan menjelaskan bagaimana meng-install Nginx, MariaDB, dan PHP-FPM (LEMP Stack) di ubuntu 16.04 LTS Xenial Xerus

Langkah 1: Update Ubuntu 16.04 LTS

Sebelum meng-install software apapun, usahakan untuk eng-update repositori dan paket software. jalankan perintah di bawah ini di ssh terminal

sudo apt update

sudo apt upgrade

Langkah 2: Install Nginx Web Server

Nginx adalah salah satu web server dengan performa yang tinggi. dapat juga digunakan sebagai reverse proxy. Jalankan perintah di bawah ini untuk mulai menginstall Nginx

sudo apt install nginx

Setelah terinstall, konfigurasikan Nginx secara otomatis dijalankan ketika Ubuntu dijalankan.

sudo systemctl enable nginx

Kemudian start Nginx dengan perintah ini:

sudo systemctl start nginx

Untuk cek status:

systemctl status nginx

Output:

● nginx.service - A high performance web server and a reverse proxy server
 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
 Active: active (running) since Sat 2016-06-04 08:31:23 EDT; 1 day 2h ago
 Main PID: 298 (nginx)
 CGroup: /system.slice/nginx.service
 ├─298 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
 └─299 nginx: worker process

enabled” artinya pada saat Ubuntu booting, secara otomatis Nginx dijalankan.

Pada browser,masukkan IP Public server Ubuntu 16.04 LTS. Anda akan melihat halaman”Welcome to Nginx” yang artinya Nginx sudah berjalan dengan benar

 

Kemudian, kita perlu mengatur agar www-data (Nginx User) sebagai owner dari direktori web root)

sudo chown www-data /usr/share/nginx/html -R

Langkah 3: Install MariaDB

MariaDB merupakan pengganti dari MySQL yang dikembangkan oleh anggota utama dari MySQL yang fokus pada akusisi Oracle untuk menjadikan MySQL produk non-open source. Banyak yang menggunakannya seperti Arch Linux, Fedora, Google, Wikipedia dsb, migrasi ke MariaDB.

sudo apt install mariadb-server mariadb-client

Setelah terinstall, cek status MariaDB

systemctl status mysql

Output:

● mysql.service - LSB: Start and stop the mysql database server daemon
 Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
 Active: active (running) since Wed 2016-04-20 18:52:01 EDT; 1min 30s ago
 Docs: man:systemd-sysv-generator(8)

Jika tidak berjalan (running), jalankan perintah di bawah ini:

sudo systemctl start mysql

Untuk meng-otomatiskan ketika Ubuntu 14.04 pada saat restart:

sudo systemctl enable mysql

Sekarang, jalankan perintah instalasi di bawah ini:

sudo mysql_secure_installation

Ketika ditanya password root MariaDB, tekan ENTER karena kita belum mengaturnya, kemudian masukkan password root MariaDB dan konfirmasi password yang baru.

 

Langkah berikutnya tekan ENTER untuk semua pertanyaan, mulai dari menghapus user anonymous, disable remote root login dan menghapus database test. Langkah ini merupakan syarat dasar dari keamanan MariaDB

 

Langkah 4: Install PHP7

Jalankan perintah di bawah ini untuk meng-install PHP7 dan ekstensi PHP7

sudo apt install php7.0-fpm php7.0-mbstring php7.0-xml php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl

Ekstensi php (modul) diperlukan untuk CMS (content management system) seperti wordpress, joomla, dsb. sebagai contoh jika tidak ada modul ekstensi php7.0-xml, maka pada halaman wordpress misalnya akan kosong dan pada log error Nginx akan ada pesan seperti ini:

PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()
 Installing these PHP extensions ensures that your CMS runs smoothly.

Sekaran jalankan php7.0-fpm

sudo systemctl start php7.0-fpm

Check status:

systemctl status php7.0-fpm

Sample output:

● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
 Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor pre
 set: enabled)
 Active: active (running) since Wed 2016-04-20 19:21:05 EDT; 2s ago

Langkah 5: Create a Default Nginx Server Block File

Hapus symlink bawaan di direktori sites-enabled

sudo rm /etc/nginx/sites-enabled/default

Kemudian buat file default server block baru di direktori /etc/nginx/conf.d/

sudo nano /etc/nginx/conf.d/default.conf

Paste-kan teks di bawah ini, ganti 111.222.333.444 dengan IP server atau domain server Anda

server {
 server_name 111.222.333.444;

root /var/www/html;  #sesuaikan dengan direktori web root
 index index.php index.html;

# set expiration of assets to MAX for caching
 location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
 expires max;
 log_not_found off;
 }

location / {
 # Check if a file or directory index file exists, else route it$
 try_files $uri $uri/ /index.php;
 }

location ~ \.php($|/.+) {

fastcgi_pass 127.0.0.1:9000;

fastcgi_split_path_info ^(.+\.php)(/.*)$;
 fastcgi_param SCRIPT_FILENAME $request_filename;
 include fastcgi_params;
}

location /subdir_codeigniter/ {
 alias /var/www/html/subdir_codeigniter/;
 try_files $uri $uri/ /subdir_codeigniter/index.php;

location ~ \.php$ {
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_index index.php;
 fastcgi_pass 127.0.0.1:9000;
 include /etc/nginx/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $request_filename;
 }
}

}

Di sini saya akan mengupload codeigniter di sub-direktori subdir_codeigniter, dan web-root saya upload dengan CMS WordPress, tutorialnya bisa di buka di sini

Tutup file dan test konfigurasi Nginx kemudian reload

sudo nginx -t

sudo systemctl reload nginx

Langkah 6: Test PHP

untuk mengetahui versi PHP7, jalankan perintah ini:

php --version

Output:

PHP 7.0.15-7ubuntu2 (cli) ( NTS )
 Copyright (c) 1997-2016 The PHP Group
 Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
 with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Untuk pengecekanPHP-FPM, buat file test.php di direktori web-root

sudo nano /usr/share/nginx/html/test.php

Ketikkan kode di bawah ini.


<?php phpinfo(); ?>

Simpan dan tutup file dari editor, dan panggil file test.php di browser 111.222.333.444/test.php

 

Jika muncuk informasi mengenai proses PHP dan table PHP Info berarti PHP berjalan dengan baik di Ubuntu 16.04 LTS

 

Untuk kemanan hapus file test.php

sudo rm /var/www/html/test.php

Langkah 7: Download CodeIgniter

https://codeigniter.com/download

Upload ke direktori subdir_codeigniter sesuai dengan konfigurasi defaul.conf yang telah kita atur sebelumnya.

Sesuaikan file config.php pada Application/config/ dengan mengubah base_url dan hilangkan index.php pada index_page

$config['base_url'] = 'http://111.222.333.444/subdir_codeigniter/';

$config['index_page'] = ' ';

Selamat, CodeIgniter sudah bisa berjalan di server Ubuntu 16.04 dengan web server Nginx. Untuk konfigurasi database menggunakan MariaDB akan kita bahas pada tutorial berikutnya