“LAMP” stack adalah sekelompok perangkat lunak open-source yang biasanya dipasang bersama agar server meng-host situs web dan aplikasi web yang dinamis. Istilah ini sebenarnya adalah akronim yang mewakili sistem operasi Linux, dengan server web Apache. Data situs disimpan dalam database MySQL, dan konten dinamis diproses oleh PHP.

Cara Install LAMP Stack di Ubuntu 18.04
Cara Install LAMP Stack di Ubuntu 18.04

Contents

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus memiliki server Ubuntu 18.04 dengan non-root sudo-enabled user account dan firewall dasar. Ini dapat dikonfigurasi menggunakan panduan pengaturan server awal kami untuk Ubuntu 18.04.

Langkah 1 – Menginstal Apache dan Memperbarui Firewall

Instal Apache menggunakan manager paket Ubuntu, apt:

sudo apt update
sudo apt install apache2

Karena ini adalah command sudo , operasi ini dijalankan dengan hak akses root. Dimana diperlukan kata sandi username reguler Anda untuk memverifikasi tindakan Anda.

Setelah Anda memasukkan kata sandi Anda, apt akan memberi tahu Anda paket mana yang rencananya akan dipasang dan berapa banyak ruang disk tambahan yang akan mereka ambil. Tekan Y lalu tekan ENTER untuk melanjutkan, dan instalasi akan dimulai.

Sesuaikan Firewall untuk Mengizinkan Lalu Lintas Web

Selanjutnya, dengan asumsi bahwa Anda telah mengikuti instruksi pengaturan server awal dan mengaktifkan firewall UFW, pastikan firewall Anda memungkinkan lalu lintas HTTP dan HTTPS. Anda dapat memeriksa bahwa UFW memiliki profil aplikasi untuk Apache seperti:

sudo ufw app list
Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Jika Anda melihat profil Apache Full , itu menunjukkan bahwa lalu lintas ke port80 dan 443 terbuka:

sudo ufw app info "Apache Full"
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Izinkan lalu lintas HTTP dan HTTPS yang masuk untuk profil ini:

sudo ufw allow in "Apache Full"

Anda dapat melakukan pemeriksaan langsung untuk memverifikasi bahwa semuanya berjalan sesuai rencana dengan mengunjungi alamat IP publik server Anda di browser web Anda (lihat catatan di bawah judul berikutnya untuk mengetahui apa alamat IP publik Anda jika Anda tidak memiliki informasi ini sudah):

http://your_server_ip

Halaman web default Ubuntu 18.04 Apache akan ditampilkan:

Jika Anda melihat halaman ini, maka server web Anda sudah terpasang dengan benar dan dapat diakses melalui firewall Anda.

Cara Menemukan Alamat IP Publik Server Anda

Jika Anda tidak tahu alamat IP publik server Anda, ada sejumlah cara untuk menemukannya. Biasanya, ini adalah alamat yang Anda gunakan untuk terhubung ke server Anda melalui SSH.

Ada beberapa cara untuk melakukan ini dari command line. Pertama, Anda bisa menggunakan tools iproute2 untuk mendapatkan alamat IP Anda, dengan mengetik:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Akan ditampilkan dua atau tiga baris. Semua itu adalah alamat yang benar, tetapi komputer Anda mungkin hanya dapat menggunakan salah satunya, jadi silakan mencoba satu persatu.

Metode alternatif adalah dengan menggunakan utility curl  untuk menghubungi pihak luar untuk memberi tahu Anda bagaimana utility melihat server Anda. Ini dilakukan dengan menanyakan pada server tertentu apa alamat IP Anda:

sudo apt install curl
curl http://icanhazip.com

Terlepas dari metode yang Anda gunakan untuk mendapatkan alamat IP Anda, ketikkan itu di bilah alamat browser web Anda untuk melihat halaman Apache default.

Langkah 2 – Menginstal MySQL

Setelah server web Anda aktif dan berjalan, sekarang saatnya untuk menginstal MySQL. MySQL adalah sistem manajemen database yang mengatur dan menyediakan akses ke database tempat situs Anda menyimpan informasi.

Sekali lagi, gunakan apt untuk mendapatkan dan menginstal perangkat lunak ini:

sudo apt install mysql-server

Catatan: Dalam hal ini, Anda tidak harus menjalankan sudo apt update sebelum command. Ini karena Anda baru saja menjalankannya melalui command di atas untuk menginstal Apache. Indeks paket di komputer Anda harus up-to-date..

Command ini juga menunjukkan kepada Anda daftar paket yang akan diinstal, bersama dengan jumlah ruang disk yang akan mereka ambil. Ketik Y untuk melanjutkan.

Ketika instalasi selesai, jalankan skrip keamanan sederhana yang sudah diinstal sebelumnya dengan MySQL yang akan menghapus beberapa pengaturan default yang berbahaya dan mengunci akses ke sistem database Anda. Jalankan script interaktif dengan:

sudo mysql_secure_installation

Sistem akan menanyakan apakah Anda ingin mengkonfigurasi VALIDATE PASSWORD PLUGIN.

Catatan: Mengaktifkan fitur ini adalah semacam panggilan pengujian. Jika diaktifkan, kata sandi yang tidak cocok dengan kriteria yang ditentukan akan ditolak oleh MySQL dengan sebuah error. Ini akan menimbulkan masalah jika Anda menggunakan kata sandi yang lemah bersama dengan perangkat lunak yang secara otomatis mengkonfigurasi kredensial pengguna MySQL, seperti paket Ubuntu untuk phpMyAdmin. Merupakan hal yang aman dengan membiarkan validasi dalam kondisi nonaktif, tetapi Anda harus selalu menggunakan kata sandi yang kuat dan unik untuk kredensial basis data.

Ketik Y untuk jawaban ya atau apapun untuk melanjutkan tanpa mengaktifkan.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Jika Anda menjawab “ya”, Anda akan diminta untuk memilih tingkat validasi kata sandi. Ingatlah bahwa jika Anda mengetik 2 untuk level terkuat, Anda akan menerima error ketika mencoba mengatur kata sandi yang tidak mengandung angka, huruf besar dan kecil, dan karakter khusus, atau yang didasarkan pada kata-kata kamus umum.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Terlepas dari apakah Anda memilih untuk mengatur VALIDATE PASSWORD PLUGIN, server Anda selanjutnya akan meminta Anda untuk memilih dan mengonfirmasi kata sandi untuk pengguna MySQL root. Ini adalah akun administratif di MySQL yang telah meningkatkan hak istimewa. Pikirkan itu mirip dengan akun root untuk server itu sendiri (walaupun yang Anda konfigurasikan sekarang adalah akun khusus MySQL). Pastikan ini adalah kata sandi yang kuat dan unik, dan jangan biarkan kosong.

Jika Anda mengaktifkan validasi kata sandi, Anda akan ditunjukkan kekuatan kata sandi untuk kata sandi root yang baru saja Anda masukkan dan server Anda akan bertanya apakah Anda ingin mengubah kata sandi itu. Jika Anda senang dengan kata sandi saat ini, masukkan N untuk jawaban “tidak” pada prompt:

Using existing password for root.

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

Untuk sisa pertanyaan, tekan Y dan tekan tombol ENTER di setiap prompt. Ini akan menghapus beberapa pengguna anonim dan database pengujian, menonaktifkan login root jarak jauh, dan memuat aturan baru ini sehingga MySQL segera menghormati perubahan yang telah Anda buat.

Perhatikan bahwa dalam sistem Ubuntu yang menjalankan MySQL 5.7 (dan versi yang lebih baru), root pengguna MySQL diatur untuk mengotentikasi menggunakan plugin auth_socket secara default daripada dengan kata sandi. Hal ini memungkinkan keamanan dan kegunaan yang lebih besar dalam banyak kasus, tetapi juga dapat menyulitkan hal-hal ketika Anda perlu mengizinkan program eksternal (mis., PhpMyAdmin) untuk mengakses pengguna.

Jika Anda lebih suka menggunakan kata sandi saat menghubungkan ke MySQL sebagai root, Anda harus beralih dari metode autentikasi auth_socket ke mysql_native_password. Untuk melakukan ini, buka prompt MySQL dari terminal Anda:

sudo mysql

Selanjutnya, periksa metode otentikasi mana yang masing-masing akun pengguna MySQL Anda gunakan dengan command berikut:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Dalam contoh ini, Anda dapat melihat bahwa user root sebenarnya mengautentikasi menggunakan plugin auth_socket. Demi mengkonfigurasi akun root untuk mengautentikasi melalui kata sandi, jalankan command ALTER USER. Pastikan untuk mengubah kata sandi ke kata sandi kuat pilihan Anda:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Selanjutnya jalankan FLUSH PRIVILEGES yang memberi tahu server untuk memuat kembali tabel hibah dan menerapkan perubahan baru Anda:

mysql> FLUSH PRIVILEGES;

Periksa metode otentikasi yang digunakan oleh setiap pengguna untuk mengonfirmasi bahwa root tidak lagi mengautentikasi menggunakan pluginauth_socket :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Anda dapat melihat dalam contoh ini output pengguna MySQL root sekarang mengautentikasi menggunakan kata sandi. Setelah Anda mengonfirmasi ini di server Anda sendiri, Anda dapat keluar dari shell MySQL:

mysql> exit

Pada titik ini, sistem database sudah diatur dan Anda dapat melanjutkan untuk menginstal PHP, komponen terakhir dari stack LAMP.

Langkah 3 – Menginstal PHP

PHP adalah komponen pengaturan Anda yang akan memproses kode untuk menampilkan konten dinamis. Itu dapat menjalankan skrip, terhubung ke database MySQL Anda untuk mendapatkan informasi, dan menyerahkan konten yang diproses ke server web Anda untuk ditampilkan.

Sekali lagi, manfaatkan sistem apt untuk menginstal PHP. Selain itu, sertakan beberapa paket pembantu kali ini sehingga kode PHP dapat berjalan di bawah server Apache dan berbicara dengan database MySQL Anda:

sudo apt install php libapache2-mod-php php-mysql

Ini harus menginstal PHP tanpa masalah. Kami akan menguji ini sebentar lagi.

Dalam kebanyakan kasus, Anda ingin memodifikasi cara Apache menyajikan file ketika direktori diminta. Saat ini, jika pengguna meminta direktori dari server, Apache akan mencari file bernama index.html.Kami ingin memberi tahu server web untuk lebih memilih file PHP daripada yang lain, jadi buatlah Apache mencari file index.php terlebih dahulu.

Untuk melakukan ini, ketik perintah ini untuk membuka file dir.conf dalam editor teks dengan hak akses root:

sudo nano /etc/apache2/mods-enabled/dir.conf

Selanjutnya akan terlihat seperti ini:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Pindahkan file indeks PHP (yang disorot di atas) ke posisi pertama setelah spesifikasiDirectoryIndex , seperti ini:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Setelah selesai, simpan dan tutup file dengan menekan CTRL+X. Konfirmasikan penyimpanan dengan mengetik Ydan kemudian tekan ENTER untuk memverifikasi lokasi penyimpanan file.

Setelah itu, mulai ulang server web Apache agar perubahan Anda dikenali. Lakukan ini dengan mengetik:

sudo systemctl restart apache2

Anda juga dapat memeriksa status layanan apache2 mengunakan systemctl:

sudo systemctl status apache2
Sample Output● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Tekan Q untuk keluar dari output status ini.

Untuk meningkatkan fungsionalitas PHP, Anda memiliki opsi untuk menginstal beberapa modul tambahan. Untuk melihat opsi yang tersedia untuk modul dan pustaka PHP, salurkan output apt search menjadi less, sebuah pager yang memungkinkan Anda menggulir output dari perintah lain:

apt search php- | less

Gunakan tombol panah untuk menggulir ke atas dan ke bawah, dan tekan Q untuk keluar.

Hasilnya semua komponen opsional yang dapat Anda instal. Ini akan memberi Anda deskripsi singkat untuk masing-masing:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

Untuk mempelajari lebih lanjut tentang apa yang dilakukan setiap modul, Anda dapat mencari di internet untuk informasi lebih lanjut tentang mereka. Atau, lihat deskripsi panjang paket dengan mengetik:

apt show package_name

Akan ada banyak output, dengan satu bidang yang disebut Description yang akan memiliki penjelasan lebih lama tentang fungsionalitas yang disediakan modul.

Misalnya, untuk mengetahui apa yang dilakukan modul php-cli, Anda bisa mengetik:

apt show php-cli

Seiring dengan sejumlah besar informasi lain, Anda akan menemukan sesuatu yang terlihat seperti ini:

Output…
Description: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Ubuntu's default
 PHP version (currently 7.2).
…

Jika, setelah meneliti, Anda memutuskan ingin menginstal paket, Anda dapat melakukannya dengan menggunakan command apt install seperti yang Anda lakukan untuk perangkat lunak lain.

Jika Anda memutuskan itu php-cli adalah sesuatu yang Anda butuhkan, Anda dapat mengetik:

sudo apt install php-cli

Jika Anda ingin menginstal lebih dari satu modul, Anda dapat melakukannya dengan mendaftar masing-masing, dipisahkan oleh spasi, mengikuti command apt install , seperti berikut:

sudo apt install package1 package2 ...

Pada titik ini, tumpukan LAMP Anda diinstal dan dikonfigurasi. Sebelum Anda melakukan hal lain, kami menyarankan Anda menyiapkan host virtual Apache tempat Anda dapat menyimpan detail konfigurasi server Anda.

Langkah 4 – Menyiapkan Host Virtual (Disarankan)

Saat menggunakan server web Apache, Anda dapat menggunakan host virtual (mirip dengan blok server di Nginx) untuk merangkum detail konfigurasi dan menghosting lebih dari satu domain dari satu server. Kami akan mengatur domain yang disebut your_domain, tetapi Anda harus mengganti ini dengan nama domain Anda sendiri.

Apache pada Ubuntu 18.04 memiliki satu blok server yang diaktifkan secara default yang dikonfigurasi untuk melayani dokumen dari direktori /var/www/html. Meskipun ini bekerja dengan baik untuk satu situs, itu bisa menjadi berat jika Anda meng-hosting beberapa situs. Alih-alih memodifikasi /var/www/html, mari kita buat struktur direktori di dalam /var/www untuk situs your_domain Anda, biarkan /var/www/html  sebagai direktori default untuk dilayani jika permintaan klien tidak cocok dengan situs lain.

Buat direktori untuk your_domain sebagai berikut:

sudo mkdir /var/www/your_domain

Selanjutnya, tetapkan kepemilikan direktori dengan variabel lingkungan $USER:

sudo chown -R $USER:$USER /var/www/your_domain

Izin root web Anda harus benar jika Anda belum mengubah nilai unmask Anda, tetapi Anda dapat memastikannya dengan mengetik:

sudo chmod -R 755 /var/www/your_domain

Selanjutnya, buat halaman contoh index.html menggunakan nano atau editor favorit Anda:

nano /var/www/your_domain/index.html

Di dalamnya, tambahkan contoh HTML berikut:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Simpan dan tutup file setelah Anda selesai.

Agar Apache dapat menyajikan konten ini, perlu membuat file host virtual dengan arahan yang benar. Alih-alih memodifikasi file konfigurasi default yang terletak di/etc/apache2/sites-available/000-default.conf secara langsung, mari kita buat yang baru di/etc/apache2/sites-available/your_domain.conf:

sudo nano /etc/apache2/sites-available/your_domain.conf

Paste di blok konfigurasi berikut, yang mirip dengan default, tetapi diperbarui untuk direktori dan nama domain baru kami:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Perhatikan bahwa kami telah memperbarui DocumentRootke direktori baru kami danServerAdmin ke email yang situs your_domain administrator dapat mengakses. Kami juga menambahkan dua arahan: ServerName, yang menetapkan domain basis yang harus cocok dengan definisi host virtual ini, dan ServerAlias, yang mendefinisikan nama lebih lanjut yang harus cocok seolah-olah mereka adalah nama dasar.

Simpan dan tutup file setelah Anda selesai.

Mari kita aktifkan file dengan tool a2ensite :

sudo a2ensite your_domain.conf

Nonaktifkan situs default yang ditentukan dalam 000-default.conf:

sudo a2dissite 000-default.conf

Selanjutnya, mari kita uji untuk konfigurasi error:

sudo apache2ctl configtest

Anda akan melihat output berikut:

Output
Syntax OK

Mulai ulang Apache untuk menerapkan perubahan Anda:

sudo systemctl restart apache2

Apache harusnya sudah berjalan di domain Anda. Anda dapat menguji ini dengan menavigasi kehttp://your_domain, dimana Anda akan melihat ini:

Apache virtual host example

Dengan itu, host virtual Anda sudah berhasil diatur. Namun, sebelum membuat perubahan lagi atau menggunakan aplikasi, akan sangat membantu untuk secara proaktif menguji konfigurasi PHP Anda jika ada masalah yang harus diatasi.

Langkah 5 – Menguji Pemrosesan PHP di Server Web Anda

Untuk menguji apakah sistem Anda dikonfigurasikan dengan benar untuk PHP, buat skrip PHP yang sangat mendasar yang disebut info.php. Agar Apache menemukan file ini dan menyajikannya dengan benar, itu harus disimpan ke direktori root web Anda.

Buat file di root web yang Anda buat pada langkah sebelumnya dengan menjalankan:

sudo nano /var/www/your_domain/info.php

Ini akan membuka file kosong. Tambahkan teks berikut, yang merupakan kode PHP yang valid, di dalam file:

info.php
<?php
phpinfo();
?>

Setelah selesai, simpan dan tutup file.

Sekarang Anda dapat menguji apakah server web Anda dapat menampilkan konten yang dihasilkan oleh skrip PHP ini dengan benar. Untuk mencoba ini, kunjungi halaman ini di browser web Anda. Anda akan memerlukan alamat IP publik server Anda lagi.

Alamat yang ingin Anda kunjungi adalah:

http://your_domain/info.php

Halaman yang Anda datangi akan terlihat seperti ini:

Halaman ini menyediakan beberapa informasi dasar tentang server Anda dari perspektif PHP. Ini berguna untuk debugging dan untuk memastikan bahwa pengaturan Anda diterapkan dengan benar.

Jika Anda dapat melihat halaman ini di browser Anda, maka PHP Anda berfungsi seperti yang diharapkan.

Anda mungkin ingin menghapus file ini setelah tes ini karena sebenarnya bisa memberikan informasi tentang server Anda kepada pengguna yang tidak sah. Untuk melakukan ini, jalankan perintah berikut:

sudo rm /var/www/your_domain/info.php

Anda selalu dapat membuat kembali halaman ini jika Anda perlu mengakses informasinya lagi nanti.

Stack LAMP telah berhasil di-instal.