Saturday 11 June 2022

Konfigurasi LEMP Stack pada Server CentOS 7

lemp stack centos thumbnail

Pada tutorial ini kita akan membahas tentang konfigurasi LEMP Stack pada Server CentOS 7.

LEMP Server, singkatan dari Linux, Nginx, MySQL, PHP/Perl/Python, adalah setup yang sangat populer untuk Server CentOS 7. Dengan menggunakan beberapa aplikasi tambahan, CentOS dapat menjadi server sistem yang cukup andal. MySQL digunakan sebagai database dengan tambahan phpMyAdmin untuk sistem pengelolaannya, lalu Nginx digunakan sebagai server web itu sendiri dan PHP/Perl/Phyton digunakan untuk memproses konten yang dinamis.

Server CentOS yang kita gunakan pada tutorial ini adalah versi 7, dengan sedikit twist yaitu penambahan GUI pada server kita. Tapi tidak perlu khawatir, semua proses instalasinya sama saja dengan Ubuntu Server non GUI, karena semua proses instalasinya akan menggunakan Command Line. Kemudian kita akan melakukan instalasi PHP untuk Environmentnya.

Komposisi pada stack ini sebenarnya bisa kita sesuaikan dengan kebutuhan di lapangan atau client. Kita bisa melihat dari aplikasi apa yang akan di gunakan, di bangun menggunakan bahasa pemrograman apa dan database yang digunakan. Untuk web server sendiri, tergantung dari trafik atau banyaknya user client yang akan mengakses server kita, kita bisa menggunakan Apache, Nginx, atau Litespeed.

Sebelum masuk ke konfigurasi, pastikan bahwa server CentOS 7 kalian selalu up to date, ketikan perintah dibawah ini untuk memeriksa update yang tersedia :

sudo yum update

Selanjutnya kita masuk sebagai super user, ketikan perintah :

su

Lalu masukkan password server kalian.

Kemudian pastikan juga bahwa kalian sudah melakukan konfigurasi dasar pada server CentOS 7 kalian, seperti melakukan instalasi EPEL Repository, dengan mengaktifkan repositori ini akan memberikan kita akses pada paket aplikasi yang tidak tersedia pada repositori standar CentOS.
Dibawah ini adalah tahapan yang akan kita lakukan untuk melakukan konfigurasi LEMP Stack :
  1. Install Nginx Web Server
  2. Install MySQL
  3. Install PHP
  4. Install phpMyAdmin
Kita mulai saja proses konfigurasi LEMP Stack ini.

1. Install Nginx Web Server

Nginx adalah server HTTP dan Proxy dengan kode sumber terbuka yang bisa juga berfungsi sebagai proxy IMAP/POP3. Kenapa menggunakan Nginx?, Nginx terkenal karena stabil, memiliki tingkat performansi tinggi dan minim mengonsumsi sumber daya karena penggunaan memori yang kecil.

Sebelumnya menginstal nginx, pastikan bahwa server kalian sudah mengaktifkan EPEL Repository, kalian bisa melihat cara instalasinya pada post kami sebelumnya :
Kita bisa menginstall Nginx dengan mengetikan perintah :

sudo yum install nginx

Disini akan dilakukan pengecekan package Nginx, jika proses pengecekan sudah selesai akan muncul jumlah size paket yang akan diinstal, ketik Y lalu Enter untuk memulai proses instalasi Nginx.

Setelah proses instalasi Nginx selesai, kita bisa mengaktifkan service Nginx pada server kita dengan mengetikan perintah :

sudo systemctl start nginx

Selanjutnya kita enable service nginx server :

sudo systemctl enable nginx.service

Kemudian kita cek status dari service nginx :

sudo systemctl status nginx.service

Output :
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-06-09 14:52:00 WIB; 53s ago
 Main PID: 3245 (nginx)
   CGroup: /system.slice/nginx.service
           ├─3245 nginx: master process /usr/sbin/nginx
           ├─3246 nginx: worker process
           └─3247 nginx: worker process

Pastikan bahwa status service nginx sudah enabled dan active.

Terakhir kita bisa melakukan pengecekan apakah service nginx ini sudah berjalan atau belum pada server kita, caranya dengan membuka browser dan ketikan ip server pada address bar.

nginx-default-page-centos

Jika browser menampilkan halaman default Nginx dari server CentOS, berarti service nginx sudah berhasil kita instal dan berjalan pada server.

2. Install MySQL

Sebelum memutuskan untuk memilih CentOS sebagai server, kalian tentunya sudah memahami bahwa tiap OS memiliki default databasenya masing-masing, seperti CentOS yang menggunakan MariaDB sebagai defaultnya. Untuk menginstalnya kalian hanya perlu mengetik perintah sudo yum install mysql dan secara otomatis akan terinstal database MariaDB, tapi pada tutorial ini kita akan menggunakan MySQL untuk database pada server CentOS 7 kita.

Untuk cara instalasi database MySQL agak sedikit berbeda, kita perlu mengunjungi website repository MySQL pada link dibawah ini :

https://dev.mysql.com/downloads/repo/yum/

Dibawah ini adalah tampilan dari halaman websitenya :

repo-mysql-centos

Kita perlu mengimport repository mysql ini kedalam server kita, caranya dengan menggunakan wget dan link repository dari mysql. Kalian bisa menggunakan perintah dibawah ini :

wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm

Kalian bisa menyesuaikan dengan versi repositori yang ada pada websitenya, karena versinya bisa saja berbeda karena sudah update.

Selanjutnya kita perlu mengecek kesamaan repositori yang sudah kita import ke dalam server, caranya dengan mengetikan perintah :

md5sum mysql80-community-release-el7-6.noarch.rpm

Output :
62f64deae31dcc2399a0ebe05366498f  mysql80-community-release-el7-6.noarch.rpm

Kemudian kalian samakan serial number md5 yang muncul pada output dengan serial number md5 yang ada pada website repo. Ini bertujuan untuk memastikan bahwa repositori yang kita import sama dengan versi resminya dan tidak ada kerusakan atau perubahan.

Selanjutnya kita bisa menginstal repositori mysql ke server dengan mengetikan perintah :

sudo rpm -Uvh mysql80-community-release-el7-6.noarch.rpm

Output :
warning: mysql80-community-release-el7-6.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing...                                                 ################################# [100%]
Updating / installing...
   1:mysql80-community-release-el7-6      ################################# [100%]

Kemudian kita perlu mengimport GPG-KEY mysql ke dalam server kita, ketikan perintah dibawah ini :

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

Barulah kita bisa menginstal mysql ke dalam server kita, ketikan perintah dibawah ini :

sudo yum install mysql-server

Setelah mysql terinstal, kita jalankan servicenya dengan mengetikan perintah :

sudo systemctl start mysqld

Kalian bisa mengecek status dari service mysql menggunakan perintah :

sudo systemctl status mysqld

Output :
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-06-09 15:53:40 WIB; 8s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Process: 6118 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 6208 (mysqld)
 Status: "Server is operational"
 CGroup: /system.slice/mysqld.service
           └─6208 /usr/sbin/mysqld

Pastikan bahwa statusnya sudah enabled dan active, jika status masih terdisable kalian bisa mengetikan perintah enable agar service mysql bisa berjalan pada server.

Selanjutnya kita akan melakukan ubahan pada password root mysql, pertama kita akan melihat password default root, caranya dengan mengetikan perintah :

sudo grep 'password' /var/log/mysqld.log

Output :
2022-06-09T08:53:33.426610Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qwkBphbdr3#h

Kalian bisa mencatat atau mengcopy password pada outputnya, kemudian kita setting mysql dengan mengetikan perintah :

sudo mysql_secure_installation

Kemudian masukkan password root yang sudah kita catat atau copy sebelumnya ke dalam terminal.

Selanjutnya kita akan diminta untuk melakukan penggantian password, buat password dengan panjang 12 karakter, terdiri dari angka, simbol dan 1 huruf besar.

Selanjutnya akan muncul output seperti dibawah ini :

Output :
Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Kalian bisa ketik N untuk lanjut atau ketik Y jika belum yakin dengan password baru kalian.

Setelah itu, kita dapat mengetik Y pada semua pertanyaan yang muncul.

Output :
 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

Sampai pada tahap ini database MySQL sudah terinstal pada server kita.

Kalian bisa melakukan test login dengan perintah :

mysql -u root -p

3. Install PHP

Selanjutnya kita akan menginstal PHP versi 7 pada server kita. PHP digunakan sebagai environment pada server kita untuk pengelolaan konten website. Untuk menginstal PHP kita bisa menggunakan perintah sudo yum install php php-mysql.

Versi yang akan kalian dapatkan jika menggunakan perintah diatas adalah PHP versi 5, versi yang sudah sangat usang, terlebih kita juga akan menginstal phpmyadmin pada server kita, pasti akan terjadi error nanti, karena itulah kita akan menggunakan PHP versi 7 pada server kita.

Untuk menginstal PHP versi 7, kita akan import dulu repositorinya, caranya dengan mengetikan perintah :

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Selanjutnya kita instal repositori yang sudah kita import dengan mengetikan perintah :

sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php74

Sekarang kita bisa menginstal PHP pada server kita, ketikan perintah dibawah ini :

sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json

Setelah proses instalasi PHP selesai, kita perlu merestart Nginx agar service PHP bisa berjalan :

sudo systemctl restart httpd.service

Selanjutnya kita bisa melakukan pengecekan pada service PHP dengan membuat file info.php pada direktori /var/www/html. Fungsi pengecekan instalasi PHP disini adalah untuk memastikan bahwa instalasi php yang dilakukan pada server berhasil.

Kita akses terlebih dahulu direktorinya, ketikan perintah :

cd /var/www/html

Kemudian kita buat file info.php :

touch info.php

Selanjutnya kita lakukan ubahan pada file info.php :

nano info.php

Lalu masukkan script dibawah ini ke dalam file info.php :

<?php
phpinfo();
?>

Jika sudah tekan CTRL+X untuk keluar dan ketik Y untuk menyimpan pengaturan yang sudah dibuat. Selanjutnya kita bisa membuka browser dan ketikan ip_address_server/info.php ke dalam address bar.

php-7-centos

Terlihat versi PHP yang terinstal pada server kita adalah versi 7, sampai pada tahap ini kita sudah berhasil menginstal PHP dan menjalankan service PHP pada server.

4. Install phpMyAdmin

Sebelum menginstal phpmyadmin, kita perlu melakukan import dan menginstal EPEL Repository pada server kita.

sudo yum install epel-release
Jika repositori EPEL sudah tersedia pada server, kalian bisa menginstal phpmyadmin dengan mengetikan perintah :

sudo yum install phpmyadmin

Setelah phpmyadmin selesai di instal, kita perlu melakukan ubahan pada konfigurasinya, ketikan perintah dibawah ini :

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Kemudian tambahkan rule autentikasi dan lakukan ubahan pada ip 127.0.0.1 ke alamat ip server kalian seperti dibawah ini :

Output :
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

    Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpMyAdmin/.htpasswd
    Require valid-user

   <IfModule mod_authz_core.c>
     # Apache 2.4

Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpMyAdmin/.htpasswd
    Require valid-user

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
       Require ip 10.10.10.10
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Require all granted
     Allow from 10.10.10.10
Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
       Require ip 10.10.10.10
       Require ip ::1
     </RequireAny>
  </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.10.10
     Allow from ::1
   </IfModule>
</Directory>

Jika sudah tekan CTRL+X untuk keluar dan ketik Y untuk menyimpan pengaturan yang sudah dibuat.

Selanjutnya masuk ke dalam terminal mysql untuk menambahkan identifikasi pada user root mysql dengan mengetikan perintah :

mysql -u root -p

Kemudian ketikan query dengan format dibawah ini :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password_User_Root';

Terakhir kita bisa akses phpmyadmin menggunakan browser dan test login menggunakan user root.

phpmyadmin-dashboard-centos

Sampai pada langkah ini kita berhasil menginstal phpmyadmin ke dalam server kita, terlihat tidak ada pesan error pada dashboard phpmyadmin.

Seperti itu tadi cara bagaimana untuk melakukan setup LEMP Stack pada Server CentOS 7, cukup banyak tahapan yang harus dilakukan dengan proses import dan instalasi repositori lainnya.

Hal ini disebabkan karena komposisi dari web server kita yang beberapa menggunakan aplikasi yang tidak tersedia pada repositori bawaan CentOS.

Jadi kita diharuskan untuk mengimport dan menginstal repositori dari aplikasi yang ingin kita instal, baru setelah itu kita bisa menginstal aplikasi yang kita inginkan pada komposisi web server kita.

Sekian untuk tutorial konfigurasi LEMP Stack pada Server CentOS 7, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.
Previous Post
Next Post

Penulis blog dan atlet balap karung Indonesia, lahir di Jakarta 6 Juni. Sedang membentuk pasangan wanita yang manis, berpenampilan dinamis, tidak berkumis, tapi mirip artis.

0 comments: