GNU/Linux >> Belajar Linux >  >> Ubuntu

Tutorial server LAMP Ubuntu 16.04 (LTS) dengan Apache, PHP 7, dan MySQL

LAMP adalah singkatan dari L inux, A tempel, M ySQL, P HP. Tutorial ini menunjukkan bagaimana Anda dapat menginstal server web Apache di server Ubuntu 16.04 LTS (Xenial Xerus) dengan PHP 7 (mod_php) dan dukungan MySQL / MariaDB dan cara menyiapkan sertifikat SSL dengan Let's encrypt. Selain itu, saya akan menginstal PHPMyAdmin untuk mempermudah administrasi MySQL. Penyiapan LAMP adalah dasar yang sempurna untuk sistem CMS populer seperti Joomla, Wordpress, atau Drupal.

Catatan Awal

Dalam tutorial ini, saya akan menggunakan hostname server1.example.com dengan alamat IP 192.168.1.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

Saya merekomendasikan untuk menggunakan pengaturan server Ubuntu minimal sebagai dasar tutorial, yang dapat berupa gambar server virtual atau root dengan instalasi minimal Ubuntu 16.04 dari perusahaan hosting web atau Anda menggunakan tutorial server minimal kami untuk menginstal server dari awal.

Saya menjalankan semua langkah dalam tutorial ini dengan hak akses root, jadi pastikan Anda masuk sebagai root:

sudo su

1. Menginstal MySQL atau Database MariaDB

Saat ini ada dua sistem database MySQL yang banyak digunakan, server "MySQL" klasik yang dikembangkan oleh Oracle dan tersedia dalam versi 5.7 sekarang dan fork MySQL bernama MariaDB yang dikembangkan oleh pengembang MySQL asli Monty Widenius.

Saya akan menunjukkan cara menginstal kedua alternatif di bawah ini. Ikuti saja salah satu bab 1.1 atau 1.2 tetapi tidak keduanya. Saya akan menggunakan MySQL 5.7 untuk image mesin virtual yang dapat diunduh dari Howtoforge.

1.1 Instal MySQL 5.7

Untuk menginstal MySQL 5.7, jalankan perintah ini:

apt-get -y install mysql-server mysql-client

Paket mysql-server dan mysql-client disebut 'meta-packages', mereka selalu menginstal versi MySQL terbaru yang tersedia dari Ubuntu. Versi terbaru saat ini adalah MySQL 5.7.

Kami telah menetapkan kata sandi root untuk MySQL selama instalasi, tetapi saya ingin menghapus pengguna anonim dan menguji database untuk alasan keamanan. Jalankan perintah mysql_secure_installation di bawah ini untuk mencapainya.

mysql_secure_installation

Anda akan ditanyai pertanyaan berikut:

Mengamankan penerapan server MySQL.
Masukkan kata sandi untuk root pengguna:<-- Masukkan kata sandi root MySQL
VALIDASI PASSWORD PLUGIN dapat digunakan untuk menguji sandi
dan meningkatkan keamanan. Ini memeriksa kekuatan kata sandi
dan memungkinkan pengguna untuk menetapkan hanya kata sandi yang
cukup aman. Apakah Anda ingin menyiapkan plugin VALIDATE PASSWORD?
Tekan y|Y untuk Ya, tombol lain untuk Tidak:
Menggunakan kata sandi yang ada untuk root.
Ubah kata sandi untuk root ? ((Tekan y|Y untuk Ya, tombol apa saja untuk Tidak): <-- Pilih 'y' di sini jika Anda ingin mengaktifkan validasi kata sandi, saya tidak memerlukan fungsi itu, jadi saya memilih 'n' di sini.
... skipping.
Secara default, instalasi MySQL memiliki pengguna anonim,
memungkinkan siapa pun untuk masuk ke MySQL tanpa harus membuat
akun pengguna untuk mereka. Ini dimaksudkan hanya untuk
pengujian, dan untuk membuat penginstalan berjalan sedikit lebih lancar.
Anda harus menghapusnya sebelum pindah ke lingkungan
produksi.
Hapus pengguna anonim? (Tekan y|Y untuk Ya, tombol lain untuk Tidak) :<-- y
Berhasil.

Biasanya, root hanya diperbolehkan untuk terhubung dari
'localhost'. Ini memastikan bahwa seseorang tidak dapat menebak
kata sandi root dari jaringan.
Larang login root dari jarak jauh? (Tekan y|Y untuk Ya, tombol lain untuk Tidak) :<-- y
Berhasil.
Secara default, MySQL dilengkapi dengan database bernama 'test' yang
bisa diakses oleh siapa saja. Ini juga dimaksudkan hanya untuk pengujian,
dan harus dihapus sebelum dipindahkan ke lingkungan
produksi.

Hapus database pengujian dan akses ke sana? (Tekan y|Y untuk Ya, tombol apa saja untuk Tidak) :<-- y
- Menjatuhkan database pengujian...
Berhasil.
- Menghapus hak istimewa pada database pengujian...
Berhasil.
Memuat ulang tabel hak istimewa akan memastikan bahwa semua perubahan
yang dilakukan sejauh ini akan segera berlaku.
Muat ulang tabel hak istimewa sekarang? (Tekan y|Y untuk Ya, tombol lain untuk Tidak) :<-- y
Berhasil.
Semua selesai!

Pengaturan MySQL telah diamankan sekarang.

1.2 Instal MariaDB 10

Jalankan perintah berikut untuk menginstal MariaDB-server dan klien:

apt-get -y install mariadb-server mariadb-client

Sekarang kita menetapkan kata sandi root untuk MariaDB.

mysql_secure_installation

Anda akan ditanyai pertanyaan berikut:

Masukkan kata sandi saat ini untuk root (masukkan untuk tidak ada):<-- tekan enter
Tetapkan kata sandi root? [Y/n] <-- y
Kata sandi baru:<-- Masukkan kata sandi root MariaDB baru di sini
Masukkan kembali kata sandi baru:<-- Ulangi kata sandi
Hapus pengguna anonim? [Y/n] <-- y
Larang login root dari jarak jauh? [Y/n] <-- y
Muat ulang tabel hak istimewa sekarang? [Y/n] <-- y

Uji login ke MariaDB dengan "perintah mysql"

mysql -u root -p

dan masukkan kata sandi root MariaDB yang telah Anda tetapkan di atas. Hasilnya akan seperti screenshot di bawah ini:

Untuk keluar dari shell MariaDB, masukkan perintah "quit" dan tekan enter.

2. Instal Apache Web Server

Apache 2 tersedia sebagai paket Ubuntu, oleh karena itu kita dapat menginstalnya seperti ini:

apt-get -y install apache2

Sekarang arahkan browser Anda ke http://192.168.1.100, dan Anda akan melihat halaman default Apache2 (Berhasil!):

Akar dokumen vhost default apache adalah /var/www/html di Ubuntu dan file konfigurasi utama adalah /etc/apache2/apache2.conf. Sistem konfigurasi didokumentasikan sepenuhnya di /usr/share/doc/Apache2/README.Debian.gz .

3. Instal PHP 7

Kita dapat menginstal PHP 7 dan modul Apache PHP sebagai berikut:

apt-get -y install php7.0 libapache2-mod-php7.0

Kemudian restart Apache:

systemctl restart Apache2

4. Uji PHP dan dapatkan detail tentang penginstalan PHP Anda

Akar dokumen dari situs web default adalah /var/www/html. Sekarang kita akan membuat file PHP kecil (info.php) di direktori itu dan memanggilnya di browser. File akan menampilkan banyak detail berguna tentang instalasi PHP kami, seperti versi PHP yang diinstal.

nano /var/www/html/info.php
phpinfo();
?>

Kemudian ubah pemilik file info.php menjadi pengguna dan grup www-data.

chown www-data:www-data /var/www/html/info.php

Sekarang kita memanggil file itu di browser (mis. http://192.168.1.100/info.php):

Seperti yang Anda lihat, PHP 7.0 bekerja, dan bekerja melalui Apache 2.0 Handler, seperti yang ditunjukkan pada baris Server API. Jika Anda menggulir lebih jauh ke bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5. MySQL tidak terdaftar di sana yang berarti kami belum memiliki dukungan MySQL / MariaDB di PHP.

5. Dapatkan dukungan MySQL / MariaDB di PHP

Untuk mendapatkan dukungan MySQL di PHP, kita dapat menginstal paket php7.0-mysql. Ini adalah ide yang baik untuk menginstal beberapa modul PHP lain serta Anda mungkin membutuhkannya untuk aplikasi Anda. Anda dapat mencari modul PHP yang tersedia seperti ini:

pencarian apt-cache php7.0

Pilih yang Anda butuhkan dan instal seperti ini:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7. 0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Sekarang restart Apache2:

systemctl restart Apache2

PHP 7 sekarang memiliki dukungan MySQL / MariaDB seperti yang ditunjukkan pada phpinfo() di atas.

6. Instal cache Opcache + APCu PHP untuk mempercepat PHP

PHP 7 dikirimkan dengan cacher opcode bawaan untuk menyimpan dan mengoptimalkan kode perantara PHP, ia memiliki nama 'opcache' dan tersedia dalam paket php7.0-opcache. Sangat disarankan untuk menginstal Opcache untuk mempercepat halaman PHP Anda. Selain opcache, saya akan menginstal APCu yang merupakan pembungkus kompatibilitas untuk opcache untuk menyediakan fungsi cache APC, sistem caching yang sering digunakan di PHP versi 5.x dan banyak sistem CMS yang masih menggunakannya.

Opcache dan APcu dapat diinstal sebagai berikut:

apt-get -y install php7.0-opcache php-apcu

Jangan khawatir jika itu menunjukkan bahwa Opcache sudah diinstal.

Sekarang restart Apache:

systemctl restart Apache2

Sekarang muat ulang http://192.168.1.100/info.php di browser Anda dan gulir ke bawah ke bagian modul lagi. Anda sekarang akan menemukan banyak modul baru di sana:

Harap jangan lupa untuk menghapus file info.php saat Anda tidak membutuhkannya lagi karena file tersebut memberikan detail sensitif dari server Anda. Jalankan perintah berikut untuk menghapus file.

rm -f /var/www/html/info.php

7. Aktifkan situs web SSL di Apache

SSL/ TLS adalah lapisan keamanan untuk mengenkripsi koneksi antara browser web dan server Anda. Sebagian besar browser web mulai menunjukkan situs sebagai tidak aman hari ini ketika koneksi antara server dan browser web tidak dienkripsi dengan SSL. Dalam bab ini, saya akan menunjukkan cara mengamankan situs web Anda dengan SSL.

Jalankan perintah berikut di server Anda untuk mengaktifkan dukungan SSL (https://). Jalankan:

a2enmod ssl
a2ensite default-ssl

yang mengaktifkan modul SSL dan menambahkan symlink di folder /etc/apache2/sites-enabled ke file /etc/apache2/sites-available/default-ssl.conf untuk memasukkannya ke dalam konfigurasi apache yang aktif. Kemudian restart Apache untuk mengaktifkan konfigurasi baru:

systemctl restart Apache2

Sekarang uji koneksi SSL dengan membuka https://192.168.1.100 di browser web.

Anda akan menerima peringatan SSL karena sertifikat SSL server adalah sertifikat SSL "ditandatangani sendiri", ini berarti browser tidak mempercayai sertifikat ini secara default dan Anda harus menerima peringatan keamanan terlebih dahulu. Setelah menerima peringatan, Anda akan melihat halaman default apache.

"Kunci Hijau" yang tertutup di depan URL di browser menunjukkan bahwa koneksi dienkripsi.

Ada dua cara untuk menghilangkan peringatan SSL, ganti sertifikat SSL yang ditandatangani sendiri /etc/ssl/certs/ssl-cert-snakeoil.pem dengan sertifikat SSL yang ditandatangani secara resmi yang Anda beli dari Otoritas SSL atau yang Anda dapatkan sertifikat SSL gratis dari Let's encrypt, yang akan saya jelaskan di bab 8.

8. Dapatkan Sertifikat SSL gratis dari Let's Encrypt

Langkah pertama untuk mengamankan situs web dengan Let's Encrypt SSL Certificate adalah menginstal paket python-letsencrypt-apache. Jalankan perintah berikut:

apt-get -y install python-letsencrypt-apache

Langkah selanjutnya kita akan meminta sertifikat SSL dari Let's Encrypt, selama proses ini, server Let's Encrypt mencoba untuk terhubung ke server Anda melalui nama domain yang Anda berikan pada perintah letsencrypt. Penting bahwa nama domain ini sudah menunjuk ke server Anda dalam DNS sehingga situs web sudah dapat dijangkau dengan nama domainnya pada port 80 (http). Jika situs web tidak dapat dijangkau dari internet, maka pembuatan sertifikat SSL Let's Encrypt akan gagal.

Sebelum kita dapat mulai membuat sertifikat SSL, atur nama domain di file konfigurasi vhost. Buka file vhost default dengan editor:

nano /etc/apache2/sites-available/000-default.conf

dan tambahkan baris:

Contoh NamaServer.com

Tepat di bawah baris 'DocumentRoot'. Ganti example.com dengan nama domain situs web Anda sendiri.

Kemudian buat Sertifikat SSL dengan perintah ini:

letsencrypt --apache -d example.com

Ganti example.com dengan nama domain Anda di sini lagi. Perintah akan memulai wizard yang menanyakan beberapa pertanyaan kepada Anda.

Masukkan alamat email yang dapat dihubungi oleh administrator yang bertanggung jawab atas situs web ini.

Terima syarat dan ketentuan otoritas SSL Let's Encrypt.

Pilih apakah Anda ingin mengalihkan permintaan non-SSL ke https:// secara otomatis. Saya akan memilih ya di sini untuk menghindari masalah duplikat konten saat situs web tersedia sebagai versi http:// dan https://.

Sertifikat SSL telah berhasil diterbitkan.

Saat Anda mengakses situs web sekarang dengan browser, Anda akan dialihkan secara otomatis ke SSL dan kunci hijau di depan bilah URL di browser menunjukkan bahwa kami menggunakan sertifikat SSL tepercaya sekarang.

8.1 Mari mengenkripsi Pembaruan Otomatis

Let's Encrypt Sertifikat SSL hanya berlaku untuk jangka pendek selama 80 hari. Oleh karena itu kami akan menyiapkan cronjob sekarang untuk memperbarui sertifikat SSL secara otomatis bila diperlukan. Perintahnya adalah 'letsencrypt perbarui'.

Siapkan cronjob untuk pembaruan otomatis LE. Jalankan:

crontab -e

untuk membuka root crontab di editor. Masukkan baris berikut di akhir file:

0 1 * * * /usr/bin/letsencrypt perpanjang &> /dev/null

simpan file, ini akan mengaktifkan cronjob. Cronjob ini akan memanggil perintah pembaruan Let's Encrypt setiap malam jam 1 pagi. Perintah akan memperbarui sertifikat SSL hanya jika diperlukan (30 hari sebelum kedaluwarsa), tidak ada masalah untuk menjalankannya setiap malam.

9. Instal phpMyAdmin

phpMyAdmin adalah antarmuka web di mana Anda dapat mengelola database MySQL Anda. Sebaiknya Anda menginstalnya:

apt-get -y install phpmyadmin

PENTING:Penginstal apt akan menanyakan beberapa pertanyaan kepada Anda sekarang, salah satunya adalah memilih jenis server web. Kesalahan umum adalah bahwa jenis server web hanya disorot tetapi tidak dipilih. Untuk memilih item dalam menu yang tepat, Anda harus menekan bilah spasi pada keyboard setelah Anda menavigasi ke item dengan tombol tab atau kursor. Menyorotnya saja tidak cukup!

Anda akan melihat pertanyaan berikut:

Server web untuk mengkonfigurasi secara otomatis: <-- Pilih opsi:apache2
Konfigurasikan database untuk phpmyadmin dengan dbconfig-common? <-- Ya
Kata sandi aplikasi MySQL untuk phpmyadmin:<-- Tekan enter, apt akan membuat kata sandi acak secara otomatis.

9.1 Akses root ke PHPMyAdmin dengan MariaDB

Langkah berikut diperlukan untuk instalasi MariaDB saja, jika Anda menggunakan MySQL 5.7, lewati langkah ini.

MariaDB mengaktifkan plugin yang disebut "unix_socket" untuk pengguna root secara default, plugin ini mencegah agar pengguna root dapat masuk ke PHPMyAdmin dan koneksi TCP ke MySQL berfungsi untuk pengguna root. Untuk mendapatkan pengguna dengan hak istimewa untuk membuat pengguna lain dan database di PHPMyAdmin, saya akan membuat pengguna MySQL baru dengan nama "admin" dengan hak yang sama dari pengguna root.

Masuk ke database MySQL sebagai pengguna root di shell:

mysql -u root

Buat user baru dengan nama "admin" dan password "howtoforge". Ganti kata sandi "howtoforge" dengan kata sandi aman pada perintah di bawah ini!

BUAT PENGGUNA 'admin'@'localhost' DIIDENTIFIKASI DENGAN 'howtoforge';
BERIKAN SEMUA HAK ISTIMEWA DI *.* KEPADA 'admin'@'localhost' DENGAN GRANT OPTION;
Hak Istimewa FLUSH;
keluar

Setelah itu, Anda dapat mengakses phpMyAdmin di http://192.168.1.100/phpmyadmin/:

10 Unduhan gambar mesin virtual dari tutorial ini

Tutorial ini tersedia sebagai image mesin virtual siap pakai dalam format ovf/ova yang kompatibel dengan VMWare dan Virtualbox. Gambar mesin virtual menggunakan detail login berikut:

Masuk SSH / Shell

Nama pengguna:administrator
Kata sandi:howtoforge

Pengguna ini memiliki hak sudo.

Masuk MySQL

Nama pengguna:root
Kata sandi:howtoforge

IP VM adalah 192.168.1.100, dapat diubah di file /etc/network/interfaces. Harap ubah semua kata sandi di atas untuk mengamankan mesin virtual.

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • MySQL:http://www.mysql.com/
  • MariaDB:https://mariadb.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. Instalasi WordPress di Ubuntu Linux dengan Apache dan MySQL

  2. Cara Menginstal Apache, MySQL, PHP (LAMP) di Ubuntu 16.04 LTS

  3. Cara Setup Opencart dengan LAMP (PHP, Apache, Mariadb) di Ubuntu 20.04

  1. Tutorial server LAMP Ubuntu 14.10 dengan Apache 2, PHP 5 dan MySQL (MariaDB)

  2. Tutorial server LAMP Ubuntu 15.04 dengan Apache 2, PHP 5 dan MariaDB (bukan MySQL)

  3. Tutorial server LAMP Ubuntu 15.10 dengan Apache 2.4, PHP 5 dan MariaDB (bukan MySQL)

  1. Cara Instal Drupal 8 dengan Apache, MySQL dan SSL di Ubuntu 15.10

  2. Cara Menginstal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 20.04 LTS

  3. Cara Menginstal Lighttpd dengan PHP-FPM dan MySQL di Ubuntu 20.04 LTS