Menginstal LAMP (Linux, Apache, MySQL/MariaDB, dan PHP/PhpMyAdmin) di Arch Linux


Arch Linux menyediakan lingkungan sistem yang fleksibel dan merupakan solusi paling cocok untuk mengembangkan aplikasi web pada sistem kecil yang tidak kritis karena merupakan Open Source yang lengkap dan menyediakan rilis terkini pada Kernel dan perangkat lunak web untuk server dan database.

Ruang lingkup utama tutorial ini adalah untuk memandu Anda melalui petunjuk langkah demi langkah lengkap yang pada akhirnya akan mengarah pada instalasi salah satu kombinasi perangkat lunak yang paling banyak digunakan dalam Pengembangan Web: LAMP (Linux, Apache, MySQL/MariaDB, dan PHP/PhpMyAdmin ) dan ini akan menyajikan kepada Anda beberapa fitur bagus (skrip Bash yang cepat dan kotor) yang tidak ada di sistem Arch Linux, namun dapat memudahkan pekerjaan membuat beberapa Host Virtual , buat Sertifikat SSL dan Kunci yang diperlukan untuk transaksi HTTS yang aman.

Persyaratan

  1. Proses Instalasi Arch Linux sebelumnya – lewati bagian terakhir dengan DHCP.
  2. Instalasi LEMP sebelumnya di Arch Linux – hanya bagian dengan konfigurasi Alamat IP Statis dan akses SSH jarak jauh.

Langkah 1: Instal Perangkat Lunak Dasar LAMP

1. Setelah instalasi sistem minimal dengan alamat IP statis dan akses sistem jarak jauh menggunakan SSH, tingkatkan perangkat Arch Linux Anda menggunakan utilitas pacman.

sudo pacman -Syu

2. Ketika proses pemutakhiran selesai, instal LAMP dari beberapa bagian, instal terlebih dahulu Server Web Apache dan mulai/verifikasi setiap daemon proses server.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Instal bahasa skrip sisi server dinamis PHP dan modul Apache-nya.

sudo pacman -S php php-apache

4. Pada langkah terakhir instal database MySQL, pilih 1 fork database komunitas (MariaDB), lalu mulai dan periksa status daemon.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Sekarang Anda telah menginstal perangkat lunak LAMP dasar dan memulai dengan konfigurasi default sejauh ini.

Langkah 2: Amankan Basis Data MySQL

5. Langkah selanjutnya adalah mengamankan basis data MySQL dengan menetapkan kata sandi untuk akun root, menghapus akun pengguna anonim, menghapus basis data pengujian dan melarang login jarak jauh untuk pengguna root (tekan [ Masukkan] kunci untuk kata sandi akun root saat ini dan jawab dengan Ya pada semua pertanyaan keamanan).

sudo mysql_secure_installation

6. Verifikasi konektivitas database MySQL dengan menjalankan perintah berikut lalu keluar dari shell database dengan pernyataan quit atau exit.

mysql -u root -p

Langkah 3: Ubah File Konfigurasi Utama Apache

7. Konfigurasi berikut sebagian besar terkait dengan Server Web Apache untuk menyediakan antarmuka dinamis untuk Virtual Hosting dengan bahasa skrip PHP, SSL atau Host Virtual non-SSL dan dapat dilakukan dengan memodifikasi konfigurasi file layanan httpd.

Pertama buka konfigurasi file Apache utama dengan editor teks favorit Anda.

sudo nano /etc/httpd/conf/httpd.conf

Di bagian paling bawah file, tambahkan dua baris berikut.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Peran pernyataan Sertakan di sini adalah untuk memberi tahu Apache bahwa mulai sekarang, ia harus membaca konfigurasi lebih lanjut dari semua file yang berada di /etc/httpd/conf/sites-enabled/ (untuk Virtual Hosting) dan /etc/httpd/conf/mods-enabled/ ( untuk modul server yang diaktifkan) jalur sistem yang diakhiri dengan ekstensi .conf.

8. Setelah Apache diinstruksikan dengan dua arahan ini, buat direktori sistem yang diperlukan dengan mengeluarkan perintah berikut.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

Jalur situs-tersedia menampung semua file konfigurasi Host Virtual yang tidak diaktifkan di Apache tetapi skrip Bash berikutnya akan menggunakan direktori ini untuk menautkan dan mengaktifkan situs web yang berlokasi di sana.

Langkah 4: Buat Perintah Apache a2eniste dan a2diste

9. Sekarang saatnya membuat skrip Apache a2ensite dan a2dissite yang akan berfungsi sebagai perintah untuk mengaktifkan atau menonaktifkan file konfigurasi Virtual Host. Ketik perintah cd untuk kembali ke jalur pengguna $HOME Anda dan buat skrip bash a2eniste dan a2dissite menggunakan editor favorit.

sudo nano a2ensite

Tambahkan konten berikut pada file ini.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Sekarang buat file skrip bash a2dissite.

sudo nano a2dissite

Tambahkan konten berikut.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Setelah file dibuat, alokasikan izin eksekusi dan salin ke direktori ` PATH yang dapat dieksekusi agar tersedia di seluruh sistem.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Langkah 5: Buat Host Virtual di Apache

11. File konfigurasi default Virtual Host untuk server Web Apache di Arch Linux disediakan oleh file httpd-vhosts.conf yang terletak di /etc/httpd/conf/extra / jalur tetapi jika Anda memiliki sistem yang menggunakan banyak Host Virtual akan sangat sulit untuk melacak situs web apa yang diaktifkan atau tidak. Jika Anda ingin menonaktifkan situs web, Anda harus mengomentari atau menghapus semua arahannya dan itu bisa menjadi misi yang sulit jika sistem Anda menyediakan banyak situs web dan situs web Anda memiliki lebih banyak arahan konfigurasi.

Menggunakan jalur sites-available dan sites-enabled, sangat menyederhanakan pekerjaan mengaktifkan atau menonaktifkan situs web dan juga mempertahankan semua file konfigurasi website Anda meskipun diaktifkan atau tidak.

Pada langkah selanjutnya kita akan membuat Virtual Host pertama yang menunjuk ke localhost default dengan path DocumentRoot default untuk menyajikan file situs web (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Tambahkan arahan Apache berikut di sini.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Pernyataan paling penting di sini adalah direktif Port dan ServerName yang memerintahkan Apache untuk membuka koneksi jaringan pada port 80 dan mengalihkan semua kueri dengan nama localhost ke melayani file yang terletak di jalur /srv/http/.

12. Setelah file localhost dibuat, aktifkan lalu restart daemon httpd untuk melihat perubahan.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Kemudian arahkan browser Anda ke http://localhost, jika Anda menjalankannya dari sistem Arch atau http://Arch_IP jika Anda menggunakan sebuah sistem jarak jauh.

Langkah 6: Aktifkan SSL dengan Virtual Hosting di LAMP

SSL (Secure Sockets Layer) adalah protokol yang dirancang untuk mengenkripsi koneksi HTTP melalui jaringan atau Internet, yang membuat aliran data dikirim melalui saluran aman menggunakan kunci kriptografi simetris/asimetris dan disediakan di Arch Linux melalui paket OpenSSL.

14. Secara default modul SSL tidak diaktifkan pada Apache di Arch Linux dan dapat diaktifkan dengan menghapus komentar modul mod_ssl.so dari httpd.conf utama file konfigurasi dan Sertakan file httpd-ssl.conf yang terletak di jalur httpd tambahan.

Namun untuk menyederhanakan, kita akan membuat file modul baru untuk SSL di jalur yang mendukung mods dan membiarkan file konfigurasi utama Apache tidak tersentuh. Buat file berikut untuk modul SSL dan tambahkan konten di bawah ini.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Tambahkan konten berikut.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Sekarang buat file Virtual Host yang menunjuk ke nama localhost yang sama tetapi kali ini menggunakan konfigurasi server SSL, dan ubah sedikit namanya untuk mengingatkan Anda bahwa itu adalah singkatan dari localhost dengan SSL.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Tambahkan konten berikut pada file ini.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Selain arahan Port dan ServerName, arahan penting lainnya di sini adalah arahan yang menunjuk ke file Sertifikat SSL dan file Kunci SSL yang belum dibuat jadi jangan restart Apache Web Server atau Anda akan mendapatkan beberapa kesalahan.

16. Untuk membuat file Sertifikat SSL dan Kunci yang diperlukan, instal paket OpenSSL dengan mengeluarkan perintah di bawah ini.

sudo pacman -S openssl

17. Kemudian buat skrip Bash berikut yang secara otomatis membuat dan menyimpan semua Sertifikat Apache dan Kunci Anda di /etc/httpd/conf/ssl/ jalur sistem.

sudo nano apache_gen_ssl

Tambahkan konten file berikut lalu simpan dan buat dapat dieksekusi.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Jika Anda ingin skrip tersedia di seluruh sistem, salin skrip tersebut ke ` PATH yang dapat dieksekusi.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Sekarang buat Sertifikat dan Kunci Anda dengan menjalankan skrip. Berikan opsi SSL Anda dan jangan lupa nama sertifikat dan Nama Umum agar sesuai dengan domain resmi Anda (FQDN).

sudo ./apache_gen_ssl

Setelah sertifikat dan kunci dibuat jangan lupa untuk mengubah konfigurasi sertifikat dan kunci SSL Virtual Host Anda agar sesuai dengan nama sertifikat ini.

19. Langkah terakhir adalah mengaktifkan SSL Virtual Host baru dan memulai ulang server Anda untuk menerapkan konfigurasi.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Itu dia! Untuk memverifikasinya, buka browser dan tambahkan Arch IP pada URL menggunakan protokol HTTPS: https://localhost atau https://system_IP.

Langkah 7: Aktifkan PHP di Apache

20. Secara default, Apache hanya menyajikan konten file statis HTML di Arch Linux tanpa dukungan bahasa skrip dinamis. Untuk mengaktifkan PHP, pertama buka file konfigurasi utama Apache lalu cari dan hapus komentar pada pernyataan LoadModule berikut (php-apache tidak bekerja dengan mod_mpm_event di Arch Linux ).

sudo nano /etc/httpd/conf/httpd.conf

Menggunakan [Ctrl]+[w] cari dan beri komentar pada baris berikut hingga terlihat seperti ini.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Kemudian buat file baru untuk modul PHP di jalur yang mendukung mods dengan konten berikut.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Tambahkan konten berikut (Anda harus menggunakan mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Untuk memverifikasi pengaturan, buatlah file PHP bernama info.php di DocumnetRoot Anda (/srv/http/), lalu restart Apache dan arahkan browser Anda ke file info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Itu dia! Jika semuanya terlihat seperti gambar di atas, Anda sekarang memiliki bahasa skrip sisi server dinamis PHP yang diaktifkan di Apache dan Anda sekarang dapat mengembangkan situs web menggunakan CMS Sumber Terbuka seperti WordPress misalnya.

Jika Anda ingin memverifikasi konfigurasi sintaksis Apache dan melihat daftar modul yang dimuat tanpa memulai ulang daemon httpd, jalankan perintah berikut.

sudo apachectl configtest
sudo apachectl -M

Langkah 8: Instal dan Konfigurasi PhpMyAdmin

23. Jika Anda tidak menguasai baris perintah MySQL dan menginginkan akses jarak jauh sederhana ke database MySQL yang disediakan melalui antarmuka web maka Anda perlu menginstal paket PhpMyAdmin di kotak Arch Anda.

sudo pacman -S phpmyadmin php-mcrypt

24. Setelah paket diinstal, Anda perlu mengaktifkan beberapa ekstensi PHP (mysqli.so, mcrypt.so – untuk otentikasi internal) dan Anda juga dapat mengaktifkan modul lain yang diperlukan untuk platform CMS masa depan seperti openssl.so, imap.so atau iconv.so dll.

sudo nano /etc/php/php.ini

Temukan dan hapus komentar pada ekstensi di atas.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Juga, pada file yang sama, cari dan temukan pernyataan open_basedir dan tambahkan jalur sistem PhpMyAdmin (/etc/webapps/ dan /usr/share/webapps/) untuk memastikan PHP dapat mengakses dan membaca file di bawah direktori tersebut (Jika Anda juga mengubah jalur Virtual Hosts DocumentRoot dari /srv/http/ ke lokasi lain, Anda juga perlu menambahkan jalur baru di sini ).

25. Hal terakhir yang perlu Anda lakukan untuk mengakses Antarmuka Web PhpMyAdmin adalah menambahkan pernyataan Apache PhpMyAdmin pada Host Virtual. Sebagai tindakan keamanan akan memastikan bahwa Antarmuka Web PhpMyAdmin hanya dapat diakses dari localhost (atau alamat IP sistem) menggunakan protokol HTTPS dan bukan dari Host Virtual lain yang berbeda. Jadi, buka file Apache localhost-ssl.conf Anda dan di bagian bawah, sebelum pernyataan terakhir, tambahkan konten berikut.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Setelah itu restart daemon Apache dan arahkan browser Anda ke alamat berikut dan Anda akan dapat mengakses Antarmuka Web PhpMyAdmin Anda: https://localhost/phpmyadmin atau https://system_IP/phpmyadmin.

27. Jika, setelah Anda masuk ke PhpMyAdmin, Anda melihat kesalahan di bagian bawah mengenai blowfish_secret, buka dan edit /etc/webapps/phpmyadmin/config.inc. php dan masukkan string acak seperti pada pernyataan berikut, lalu segarkan halaman.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Langkah 9: Aktifkan LAMP System Wide

28. Jika Anda ingin tumpukan LAMP dimulai secara otomatis setelah sistem di-boot ulang, jalankan perintah berikut.

sudo systemctl enable httpd mysqld

Ini adalah beberapa pengaturan konfigurasi utama pada LAMP yang diperlukan untuk mengubah sistem Arch Linux menjadi platform web yang sederhana namun kuat, cepat dan kuat dengan perangkat lunak server mutakhir untuk non-kecil -lingkungan kritis, tetapi jika Anda keras kepala dan masih ingin menggunakannya dalam lingkungan produksi besar, Anda harus mempersenjatai diri dengan banyak kesabaran dan memberikan perhatian ekstra pada pembaruan paket dan membuat gambar cadangan sistem secara teratur untuk pemulihan sistem yang cepat jika terjadi kegagalan sistem.