Menginstal LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM dan PhpMyAdmin) di Gentoo Linux


Gentoo adalah salah satu distribusi Linux tercepat karena orientasi pembuatannya dari sumber dan disediakan oleh program manajemen perangkat lunaknya – Portage – alat tertentu yang diperlukan untuk membangun platform pengembang web lengkap yang bertindak dan bekerja sangat cepat dan, juga, memiliki tingkat penyesuaian yang tinggi.

Topik ini akan membawa Anda melalui proses instalasi langkah demi langkah untuk membangun platform lingkungan Web yang lengkap dengan LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), dan dengan bantuan pada USE flags yang disediakan oleh Portage Package Management, yang menawarkan serangkaian fungsionalitas paket pada proses kompilasi – modul atau pengaturan yang diperlukan untuk platform web, akan sangat mengubah konfigurasi server.

Persyaratan

  1. Instalasi Gentoo dengan Profil yang Dikeraskan untuk server yang terhubung ke Internet – Panduan Instalasi Gentoo.
  2. Jaringan dikonfigurasi dengan alamat IP statis.

Langkah 1: Instal Server Web Nginx

1. Sebelum mencoba melanjutkan instalasi Nginx, pastikan NIC Anda telah dikonfigurasi dengan Alamat IP Statis dan pastikan sumber Portage dan sistem Anda sudah yang terbaru.

sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world

2. Setelah proses pembaruan selesai, lanjutkan dengan instalasi Nginx dengan memilih pengaturan dan modul yang diinginkan dengan menggemakan flag Nginx USE ke file make.conf Portage . Daftar pertama modul instalasi default Nginx dengan menjalankan perintah berikut.

emerge -pv nginx

Untuk informasi detail modul (flag USE untuk paket) gunakan perintah equery.

equery uses nginx

Kemudian install Nginx dengan perintah berikut.

emerge --ask nginx

Jika Anda memerlukan modul tambahan (WebDAV, fancyindex, GeoIP, dll) selain modul default, yang akan dikompilasi oleh Nginx, tambahkan semuanya dalam satu baris pada file make.conf Portage dengan NGINX_MODULES_HTTP direktif, lalu kompilasi ulang Nginx dengan modul baru.

echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
emerge --ask nginx

3. Setelah Portage selesai memunculkan Nginx, jalankan daemon http dan verifikasi dengan mengarahkan browser Anda ke http://localhost.

Langkah 2: Instal PHP

4. Untuk menggunakan bahasa pemrograman web dinamis PHP dengan server Nginx, instal PHP-FastCGI Process Manager (FPM) dengan menambahkan fpm dan Ekstensi PHP penting lainnya pada flag USE Portage dan pastikan Anda menghapus ekstensi Apache.

emerge -pv php

equery uses php

echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
emerge --ask php

5. Sebelum memulai PHP-FPM, beberapa perubahan perlu diterapkan pada file konfigurasi layanan. Buka file konfigurasi php-fpm dan lakukan perubahan berikut.

nano /etc/php/fpm-php5.5/php-fpm.conf

Temukan dan batalkan komentar pada arahan berikut agar terlihat seperti ini.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. Setelah file konfigurasi PHP-FPM diedit, ubah izin file log PHP-FPM dan mulai layanan.

chmod 755 /var/log/php-fpm.log
/etc/init.d/php-fpm start

Meskipun layanan PHP-FPM dimulai, Nginx tidak dapat berkomunikasi dengan gateway PHP, sehingga beberapa perubahan perlu dilakukan pada file konfigurasi Nginx.

Langkah 3: Edit Konfigurasi Nginx

7. File konfigurasi template default Nginx hanya menyediakan soket HTTP dasar untuk localhost saja. Untuk mengubah perilaku ini dan mengaktifkan Virtual Host, buka file nginx.conf yang terletak di jalur /etc/nginx/ dan buat konfigurasi berikut.

nano /etc/nginx/nginx.conf

Temukan blok server pertama yang sesuai dengan localhost dan dengarkan alamat IP 127.0.0.1 dan puji semua pernyataannya agar terlihat seperti pada tangkapan layar di bawah.

Jangan tutup file dulu dan pindah ke bagian paling bawah dan tambahkan pernyataan berikut sebelum kurung kurawal penutup terakhir “ } “.

Include /etc/nginx/sites-enabled/*.conf;

8. Selanjutnya buat direktori sites-enabled dan sites-available ( untuk Virtual Host yang tidak digunakan) Nginx dan file konfigurasi untuk localhost pada protokol HTTP dan HTTPS .

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

Buat konfigurasi file berikut untuk localhost.

nano /etc/nginx/sites-available/localhost.conf

Tambahkan konten file berikut.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }

Untuk localhost dengan SSL buat file konfigurasi berikut.

nano /etc/nginx/sites-available/localhost-ssl.conf

Tambahkan konten file berikut.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }

9. Sekarang saatnya membuat dua skrip pada jalur sistem yang dapat dieksekusi (variabel shell ` PATH), yang bertindak sebagai perintah untuk mengaktifkan atau menonaktifkan Nginx Virtual Hosts.

Buat skrip Bash pertama bernama n2ensite yang akan mengaktifkan file konfigurasi Virtual Host dengan membuat tautan simbolik antara host tertentu dari sites-available ke sites-enabled.

nano /usr/local/bin/n2eniste

Tambahkan konten file berikut.

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

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/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 nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi

10. Kemudian buat skrip kedua bernama n2dissite, yang akan menghapus Virtual Host aktif tertentu dari jalur Nginx yang mendukung situs dengan konten berikut.

nano /usr/local/bin/n2dissite

Tambahkan konten berikut.

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

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!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi

11. Setelah selesai mengedit skrip Bash, tambahkan izin eksekusi dan aktifkan Host Virtual localhost – gunakan nama file konfigurasi Virtual Host tanpa ekstensi .conf, lalu mulai ulang layanan Nginx dan PHP-FPM untuk menerapkan perubahan.

chmod +x /usr/local/bin/n2dissite
chmod +x /usr/local/bin/n2ensite
n2ensite localhost
n2ensite localhost-ssl
service nginx restart
service php-fpm restart

12. Untuk menguji konfigurasi, buat file info PHP di jalur root default localhost untuk file web (/var/www/localhost/htdocs) dan alihkan browser Anda ke https://localhost/info.php atau http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php

Dengan menggunakan file konfigurasi Host Virtual localhost sebagai templat dan n2enmod dan n2dismod Nginx, kini Anda dapat dengan mudah menambahkan situs web sebanyak yang Anda suka, namun pastikan Anda memiliki penunjuk DNS yang valid untuk Internet -menghadapi server web atau menggunakan entri secara lokal pada file host sistem.

Langkah 4: Instal MySQL/MariaDB + PhpMyAdmin

Untuk menginstal database MySQL dan antarmuka Web PhpMyAdmin untuk MySQL gunakan prosedur yang sama seperti yang dijelaskan pada Menginstal LAMP di Gentoo.

13. Sebagai imbalannya jika Anda ingin menggunakan MariaDB, pengganti MySQL, gunakan perintah berikut untuk mendapatkan flag USE dan menginstalnya.

emerge -pv mariadb
emerge --ask mariadb

Jika Anda mengalami konflik paket dengan MySQL, tambahkan baris berikut ke package.accept.keywords Portage.

echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
emerge --ask mariadb

14. Setelah database MySQL terinstal, mulailah layanan dan amankan menggunakan mysql_secure_installation (ubah kata sandi root, nonaktifkan login root di luar localhost, hapus pengguna anonim/database pengujian).

service mysql start
mysql_secure_installation

15. Masuk ke database MySQL menggunakan perintah mysql -u root -p untuk menguji fungsinya dan biarkan dengan perintah exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Jika Anda tidak terlalu mahir dengan baris perintah MySQL. instal frontend Web PhpMyAdmin dengan menjalankan perintah berikut.

emerge -pv dev-db/phpmyadmin
echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
emerge  --ask dev-db/phpmyadmin

17. Setelah PhpMyAdmin selesai menginstal, buat file konfigurasi berdasarkan contoh file konfigurasi, ubah frasa sandi blowfish_secret dengan string acak, lalu buat tautan simbolis dari /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ ke jalur root dokumen Virtual Host yang ingin Anda akses antarmuka web PhpMyAdmin.

cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
cp config.sample.inc.php  config.inc.php
nano config.inc.php

ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin

18. Untuk mengakses database MySQL melalui antarmuka Web PhpMyAdmin, buka browser dan gunakan alamat URL berikut https://localhost/phpmyadmin.

19. Langkah terakhir adalah mengaktifkan layanan di seluruh sistem, agar dimulai secara otomatis setelah reboot.

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

Sekarang kami memiliki pengaturan lingkungan minimal untuk hosting Web, dan jika Anda hanya menggunakan halaman dinamis HTML, JavaScript, dan PHP dan Anda tidak memerlukan situs web SSL, konfigurasi di atas akan memuaskan Anda.