Gratis Saldo $50 Cloud Server

Harga Cloud Server Cuma $5/bulan

Daftar Sekarang

12 min read

Cara Menginstal Linux, Apache, MySQL, PHP (LAMP) di Ubuntu 18.04

Iman Sugirman

Introduction

LAMP Stack adalah sekelompok perangkat lunak sumber terbuka yang biasanya dipasang bersama untuk memungkinkan 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.

Dalam panduan ini, kami akan menginstal tumpukan LAMP pada server Ubuntu 18.04.

Prasyarat

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

Menginstal Apache dan Memperbarui Firewall

Server web Apache adalah salah satu server web paling populer di dunia. Ini didokumentasikan dengan baik dan telah digunakan secara luas untuk sebagian besar sejarah web, yang menjadikannya pilihan default yang bagus untuk hosting situs web.

Instal Apache menggunakan manajer paket Ubuntu, apt:

sudo apt update
sudo apt install apache2

Karena ini adalah perintah sudo, operasi ini dijalankan dengan hak akses root. Ini akan menanyakan kata sandi pengguna reguler Anda untuk memverifikasi niat Anda.

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

Sesuaikan Firewall untuk Mengizinkan Lalu Lintas Web

Selanjutnya, dengan asumsi bahwa Anda telah mengikuti instruksi pengaturan server awal dan mengaktifkan firewall UFW, pastikan bahwa 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 akan menunjukkan bahwa itu memungkinkan lalu lintas ke port 80 dan 443:

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

Anda akan melihat halaman web default Ubuntu 18.04 Apache, yang ada untuk tujuan informasi dan pengujian. Seharusnya terlihat seperti ini:

LAMP Stack

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

Cara Menemukan Alamat IP Publik Server Anda

Jika Anda tidak tahu apa 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 berbeda untuk melakukan ini dari baris perintah. Pertama, Anda bisa menggunakan alat iproute2 untuk mendapatkan alamat IP Anda dengan mengetik ini:

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

Ini akan memberi Anda dua atau tiga baris kembali. Semua itu adalah alamat yang benar, tetapi komputer Anda mungkin hanya dapat menggunakan salah satunya, jadi silakan mencoba masing-masing.

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

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

Apa pun metode yang Anda gunakan untuk mendapatkan alamat IP, ketikkan di bilah alamat browser web Anda untuk melihat halaman Apache default.

Menginstal MySQL

Sekarang server web Anda sudah aktif dan berjalan, sekarang saatnya untuk menginstal MySQL. MySQL adalah sistem manajemen basis data. Pada dasarnya, ini akan mengatur dan menyediakan akses ke database tempat situs Anda dapat menyimpan informasi.

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

sudo apt install mysql-server

Perintah ini juga akan menampilkan daftar paket yang akan diinstal, bersama dengan jumlah ruang disk yang akan digunakan. Masukkan Y untuk melanjutkan.

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

sudo mysql_secure_installation

Ini akan menanyakan apakah Anda ingin mengkonfigurasi PLUGIN VALIDATE PASSWORD.

Jawab Y untuk ya, atau apa pun 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 memasukkan 2 untuk level terkuat, Anda akan menerima kesalahan ketika mencoba mengatur kata sandi yang tidak mengandung angka, huruf besar dan kecil, dan karakter khusus, atau yang didasarkan pada kata-kata kamus umum.

Ada tiga tingkat kebijakan validasi kata sandi:

RENDAH Panjang> = 8
MENENGAH Panjang> = 8, numerik, campuran huruf, dan karakter khusus
KUAT Panjang> = 8, angka, kasus campuran, karakter khusus dan file kamus

Silakan masukkan 0 = RENDAH, 1 = MENENGAH dan 2 = KUAT: 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 root MySQL. Ini adalah akun administratif di MySQL yang telah meningkatkan hak istimewa. Anggap saja 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 diperlihatkan 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 Anda saat ini, masukkan N untuk "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. Ini memungkinkan beberapa 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 mengganti metode autentikasi dari 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 perintah berikut:

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 pengguna root sebenarnya mengautentikasi menggunakan plugin auth_socket. Untuk mengonfigurasi akun root untuk mengautentikasi dengan kata sandi, jalankan perintah ALTER USER berikut. Pastikan untuk mengubah kata sandi menjadi kata sandi pilihan Anda:

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

Kemudian, jalankan FLUSH PRIVILEGES yang memberi tahu server untuk memuat ulang tabel hibah dan menerapkan perubahan baru Anda:

FLUSH PRIVILEGES;

Periksa kembali metode otentikasi yang digunakan oleh masing-masing pengguna Anda untuk mengonfirmasi bahwa root tidak lagi diautentikasi menggunakan plugin auth_socket:

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 keluaran bahwa pengguna MySQL root sekarang mengotentikasi menggunakan kata sandi. Setelah Anda mengonfirmasi ini di server Anda sendiri, Anda dapat keluar dari shell MySQL:

exit

Pada titik ini, sistem basis data Anda sekarang telah diatur dan Anda dapat melanjutkan untuk menginstal PHP, komponen terakhir dari tumpukan LAMP.

Instalasi 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 akan ingin memodifikasi cara Apache melayani file ketika direktori diminta. Saat ini, jika pengguna meminta direktori dari server, Apache akan mencari file bernama index.html terlebih dahulu. Kami ingin memberi tahu server web untuk lebih memilih file PHP daripada yang lain, jadi buat 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

Ini akan terlihat seperti ini:

<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 spesifikasi DirectoryIndex, seperti ini:

<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 Y dan kemudian tekan ENTER untuk memverifikasi lokasi penyimpanan file.

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

sudo systemctl restart apache2

Anda juga dapat memeriksa status layanan apache2 menggunakan 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, kirimkan hasil pencarian yang tepat menjadi lebih sedikit, sebuah pager yang memungkinkan Anda menggulirkan keluaran dari perintah lain:

apt search php- | less

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

Hasilnya adalah 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 fungsi yang disediakan modul.

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

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 untuk menginstal paket, Anda dapat melakukannya dengan menggunakan perintah apt install seperti yang telah Anda lakukan untuk perangkat lunak lain.

Jika Anda memutuskan bahwa 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 perintah apt install, seperti ini:

sudo apt install package1 package2 ...

Pada titik ini, tumpukan LAMP Anda diinstal dan dikonfigurasi. Namun, sebelum melakukan perubahan lagi atau menggunakan aplikasi, akan sangat membantu untuk menguji secara proaktif konfigurasi PHP Anda jika ada masalah yang harus diatasi.

Menguji Pemrosesan PHP di Server Web Anda

Untuk menguji apakah sistem Anda dikonfigurasi 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 yang sangat spesifik, yang disebut "root web".

Di Ubuntu 18.04, direktori ini terletak di /var/www/html/. Buat file di lokasi itu dengan menjalankan:

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

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

<?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_server_ip/info.php

Subscribe Tutorial Gratis

Dapatkan informasi Update terbaru dari Blog saya. Akan dikirim setiap 2 minggu sekali. Tanpa Spam, Tanpa Jibjab