Kombinasi Linux, Nginx, MySQL, dan PHP dikenal sebagai LEMP stack adalah lingkungan web hosting populer untuk aplikasi berbasis PHP. Di sini Linux adalah sistem operasi, Nginx adalah server web yang populer, MySQL adalah sistem manajemen basis data relasional yang digunakan untuk menyimpan data dan PHP adalah bahasa pemrograman yang banyak digunakan.
Artikel ini akan membantu Anda menginstal Nginx, MySQL 8.0 dan PHP 7.4 di sistem Linux Ubuntu. Mari kita mulai dengan instalasi LEMP stack mesin Ubuntu Anda.
Prasyarat
Sebelum memulai instalasi LEMP di Ubuntu:
- Sistem Ubuntu 20.04 yang sedang berjalan
- Masuk sebagai akun yang disediakan sudo di sistem Anda. Untuk membuatnya, ikuti tutorial pengaturan server awal.
- Nama domain/subdomain menunjuk ke server Anda
Menginstal Server Web Nginx
Selanjutnya, Anda perlu menginstal server web Nginx di sistem Anda. Paket Nginx tersedia di repositori apt default.
Jalankan perintah berikut untuk menginstalnya:
sudo apt update sudo apt install nginx
Menginstal PHP dengan PHP-FPM
Paket PHP 7.4 tersedia di bawah repositori default di Ubuntu 20.04 LTS. Gunakan perintah berikut untuk memperbarui apt cache dan menginstal PHP di sistem Anda.
sudo apt update sudo apt install -y php7.4 php7.4-fpm
Instal juga modul PHP tambahan yang diperlukan untuk aplikasi Anda.
sudo apt install php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-xml
Anda telah menginstal PHP 7.4 dengan paket PHP FPM di sistem Anda. Mari kita periksa status layanan PHP FPM dengan menjalankan perintah di bawah ini:
sudo systemctl status php7.4-fpm ● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-16 05:15:57 UTC; 34s ago Docs: man:php-fpm7.4(8) Process: 882716 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74> Main PID: 882699 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2283) Memory: 10.3M CGroup: /system.slice/php7.4-fpm.service ├─882699 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─882714 php-fpm: pool www └─882715 php-fpm: pool www Jun 16 05:15:57 tecadmin systemd[1]: Starting The PHP 7.4 FastCGI Process Manager... Jun 16 05:15:57 tecadmin systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Menginstal MySQL
Repositori apt Ubuntu 20.04 default berisi server MySQL 8.0. Terakhir, instal paket mysql-server untuk database MySQL. Juga, instal paket php-mysql untuk menggunakan dukungan MySQL menggunakan PHP. Gunakan perintah berikut untuk menginstalnya.
sudo apt install mysql-server php7.4-mysql
Penginstal akan meminta kata sandi root, Kata sandi ini akan berfungsi untuk pengguna root MySQL Anda. Setelah menginstal MySQL, jalankan perintah berikut untuk pengaturan awal server MySQL. Anda akan melihat bahwa skrip akan meminta lebih banyak pengaturan daripada versi MySQL sebelumnya seperti kebijakan validasi kata sandi, dll.
sudo mysql_secure_installation
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT 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 component? Press y|Y for Yes, any other key for No: yThere 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: 2Please set the password for root here. New password: Re-enter new password:Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : ySuccess. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : ySuccess. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y- Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : ySuccess. All done!
Konfigurasi Nginx dengan PHP-FPM
Mari buat host virtual Nginx untuk dijalankan dengan FPM/FastCGI. Untuk tutorial ini, kami menggunakan VirtualHost default. Edit file konfigurasi Host VirtualHost di editor teks. Anda dapat membuat VirtualHost baru sesuai kebutuhan Anda, jadi pastikan untuk mengaktifkan VirtualHost baru.
sudo vim /etc/nginx/sites-available/example.com
Gunakan konfigurasi Nginx Virtual host dasar di bawah ini dengan pengaturan php fpm. Perbarui konfigurasi sebagai berikut.
Apache
12345678910112131415 | server { dengarkan 80; root /var/www/html; indeks index.php index.html index.htm; nama_server contoh.com; lokasi / { try_files $uri $uri/ =404; } lokasi ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }} |
Simpan perubahan Anda ke file konfigurasi dan buat tautan ke direktori yang diaktifkan situs.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
Kemudian restart layanan Nginx untuk memuat ulang perubahan.
sudo systemctl restart nginx
Langkah 5 – Kelola Layanan
Kami telah selesai dengan instalasi LAMP stack pada sistem Ubuntu 20.04 LTS. Perintah di bawah ini akan membantu Anda untuk memulai/menghentikan atau memulai ulang layanan Nginx dan MySQL yang berjalan dengan systemd.
Untuk memulai ulang layanan Nginx dan MySQL, ketik:
sudo systemctl restart nginx sudo systemctl restart mysql
Untuk memulai layanan Nginx dan MySQL, ketik:
sudo systemctl start nginx sudo systemctl start mysql
Untuk menghentikan layanan Nginx dan MySQL, ketik:
sudo systemctl stop nginx sudo systemctl stop mysql
Langkah 6 – Sesuaikan Aturan Firewall
Anda dapat langsung memberikan nama layanan seperti "http" atau "https" untuk mengizinkan. Firewalld menggunakan file /etc/services untuk menentukan port layanan yang sesuai.
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Langkah 7 – Verifikasi Pengaturan
Setelah menyelesaikan semua pengaturan. Mari kita buat info.php file root dokumen situs web dengan konten berikut.
sudo echo "<?php phpinfo(); ?>" > /var/www/html/info.php
Sekarang akses file ini di browser web. Anda akan melihat layar seperti di bawah ini dengan semua detail PHP di server.