Instalasi Linux, Nginx, MySQL, PHP (LEMP) Di Centos 7

Linux, Nginx, MariaDB, PHP atau LEMP adalah sekumpulan perangakat lunak open source yang biasa dipasang bersamaan untuk membangun sebuah Web Server di linux. Istilah ini sebenarnya adalah akronim yang mewakili sistem operasi Linux, Dengan web server Nginx (Dibaca Engine X), database MySQL (menggunakan MariaDB), dan konten dinamis yang diproses oleh PHP.

Pada tutorial kali ini kita akan membahas bagaimana Instalasi Linux, Nginx, MySQL, PHP (LEMP) Di Centos 7 Dedicated Server Indonesia atau Cloud Server Indonesia. Note Selinux: Jika mengalami masalah dan Nginx tidak berjalan semestinya, pastikan untuk mengkonfigurasi Selinux menjadi mode Disable atau permissive.

Instalasi Nginx

Kita akan menggunakan web server Nginx, web server modern dan di klaim lebih efisien memory.

# Aktifkan EPEL repository
[admin@lemp ~]# yum -y install epel-release
# Instalasi Nginx
[admin@lemp ~]# yum -y install nginx

Setelah instalasi selesai, aktifkan Nginx saat boot dan jalankan:

[admin@lemp ~]# systemctl start nginx
[admin@lemp ~]# systemctl enable nginx

Jika service Firewalld berjalan, silahkan allow Protocol HTTP (80/tcp) dan HTTPS (443/tcp)

[admin@lemp ~]# firewall-cmd --add-service=http --permanent
[admin@lemp ~]# firewall-cmd --add-service=https --permanent
[admin@lemp ~]# firewall-cmd --reload

Instalasi MySQL (MariaDB)

Setelah Web server Nginx kita aktif dan berjalan, sekarang saatnya menginstall MariaDB, pengganti MySQL. MariaDB adalah sebuah database manajemen sistem yang di kembangkan oleh pengembang MYSQL. Mengapa di kembangkan oleh pengembang MYSQL adalah karena MYSQL sendiri telah di ambil alih atau telah di akuisisi oleh perusahaan ORACLE yang juga merupakan perusahaan yang bergerak dalam database sehingga menyebabkan MySQL menjadi produk yang berlisensi dan akan menjadi product yang komersil.

[admin@lemp ~]# yum -y install mariadb-server mariadb

Setelah instalasi selesai, aktifkan Nginx saat boot dan jalankan:

[admin@lemp ~]# systemctl start mariadb
[admin@lemp ~]# systemctl enable mariadb

Jika service Firewalld berjalan, dan database digunakan oleh server jauh makan silahkan allow 3306/TCP

[admin@lemp ~]# firewall-cmd --add-service=mysql --permanent
[admin@lemp ~]# firewall-cmd --reload

Instalasi PHP-FPM

Pada tutorial ini kita akan menginstall PHP Versi 7.x dan hal pertama yang akan kita lakukan adalah memasang repository CentOS tambahan yaitu repository REMI yang berisi paket yang dibutuhkan untuk PHP v7

[admin@lemp ~]# cd /tmp
[admin@lemp ~]# yum -y install wget
[admin@lemp ~]# wget -q http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[admin@lemp ~]# rpm -Uvh remi-release-7.rpm

Aktifkan repository REMI menggunakan perkakas yum-utils

[admin@lemp ~]# yum -y install yum-utils
## php70
[admin@lemp ~]# yum-config-manager --enable remi-php70
## php71
[admin@lemp ~]# yum-config-manager --enable remi-php71
## php72
[admin@lemp ~]# yum-config-manager --enable remi-php72

Kemudian Install paket PHP-FPM dengan menggunakan perintah berikut:

[admin@lemp ~]# yum -y install php-fpm php-common

Berikut beberapa modul php yang sering digunakan

[admin@lemp ~]# yum -y install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

Konfigurasi PHP-FPM

Kita sekarang telah selesai menginstall paket php dan beberapa modul tambahan, namun kita perlu melakukan sedikit perubahan konfigurasi demi alasan keamanan.

[admin@lemp ~]# vim /etc/php.ini

## Uncomment cgi.fix_pathinfo
cgi.fix_pathinfo=0
## Set time/zone
date.timezone = Asia/Jakarta

Selanjutnya kita akan melakukan konfigurasi pada berkas php-fpm

[admin@lemp ~]# vim /etc/php-fpm.d/www.conf

Kemudian ubah konfigurasi sehingga menjadi seperti berikut ini.

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
; user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
; group = apache
group = nginx

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
; listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Kemudian jalankan php-fpm dan pastikan juga berjalan saat boot

[admin@lemp ~]# systemctl start php-fpm
[admin@lemp ~]# systemctl enable php-fpm

Konfigurasi Nginx

Sekarang kita telah selesai menginstall semua komponen LEMP. Satu-satunya perubahan konfigurasi yang masih perlu kita lakukan adalah memberitahu Nginx untuk menggunakan PHP sebagai pemeroses konten. Web server nginx memiliki berkas konfigurasi utama nginx.conf yang tersimpan didalam directori /etc/nginx.

Namun pada tutorial ini kita akan melakukan konfigurasi pada level Server Blocks(Server Blocks adalah istilah dalam nginx, seperti “Virtualhost” pada Apache).

[admin@lemp ~]# vim /etc/nginx/conf.d/example.conf

Berikut adalah konfigurasi Server Blocks yang umum.

server {
    listen 80;
    server_name localhost;
    root /var/www/example;
    index index.php index.html index.htm;

    location / {
      try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
   }
}

jangan lupa untuk merestart service Nginx setelah mengubah konfigurasi.

[admin@lemp ~]# systemctl restart nginx

atau

[admin@lemp ~]# nginx -t reload

Informasi

Demikianlah tutorial tentang Instalasi Linux, Nginx, MySQL, PHP (LEMP) Di Centos 7. Berikut adalah informasi lanjut yang dapat dijadikan referensi

https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/
https://mariadb.org/