“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.
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 Y
dan 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 DocumentRoot
ke 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:
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.