Cara Install WordPress di Rocky Linux 9 dengan Nginx
Rocky Linux 9 adalah sistem operasi tangguh yang dirancang untuk server. Dalam tutorial ini, kita akan belajar bagaimana cara instalasi WordPress di Rocky Linux 9 dengan menggunakan Nginx web server. WordPress adalah content management system (CMS) populer yang memungkinkan pengguna membuat dan mengelola website dengan mudah. Dengan menggabungkan stabilitas dan keamanan Rocky Linux dengan keserbagunaan WordPress dan Nginx, kita dapat menciptakan website yang dinamis untuk berbagai kebutuhan.
Tutorial Environment
Pada tutorial ini, kita akan bekerja dengan server, sistem operasi, dan perangkat lunak berikut:
- Vultr Cloud Server: 1 CPU, 1 GB RAM, 32 GB Storage
- Operating System: Rocky Linux 9
- Domain: aminlabs.my.id
- SSL: Let’s Encrypt
- Web Server: Nginx v1.20
- PHP: PHP v8.2
- Database: MariaDB v10.5
- WordPress: WordPress v6.4.3
Catatan: Daftar di sini untuk mendapatkan $100 free credit dari Vultr.
Langkah 1: Update system packages
Login ke server dan update system:
1 | dnf update |
Catatan: Tutorial ini menggunakan user root.
Langkah 2: Install Nginx web server
Jalankan perintah berikut untuk menginstal Nginx web server:
1 | dnf install nginx |
Setelah instalasi selesai, jalankan dan aktifkan Nginx:
1 2 | systemctl start nginx systemctl enable nginx |
Verifikasi status Nginx untuk mengetahui apakah sudah berjalan dengan baik:
1 | systemctl status nginx |
Buka port HTTP dan HTTPS di firewall, jalankan perintah berikut:
1 2 3 | firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload |
Langkah 3: Install MariaDB database
Instal server MariaDB menggunakan perintah berikut:
1 | dnf install mariadb-server |
Jalankan dan aktifkan MariaDB:
1 2 | systemctl start mariadb systemctl enable mariadb |
Langkah 4: Membuat Database
Login ke MariaDB:
1 | mysql |
Membuat database untuk WordPress:
1 2 3 4 | CREATE DATABASE aminlabs; GRANT ALL PRIVILEGES ON aminlabs.* TO 'aminlabs'@'localhost' IDENTIFIED BY 'secretpassword'; FLUSH PRIVILEGES; exit |
Langkah 5: Install PHP 8.2
Untuk menginstal PHP 8.2 di Rocky Linux 9, kita perlu menambahkan repositori EPEL dan repositori REMI ke sistem. Repositori ini menyediakan paket tambahan, termasuk versi PHP terbaru yang tidak tersedia di repositori default Rocky Linux.
Repositori EPEL (Extra Packages for Enterprise Linux) menyediakan paket tambahan untuk CentOS dan turunannya seperti Rocky Linux. Instal repositori EPEL menggunakan perintah berikut:
1 | dnf install epel-release |
Repositori REMI menyediakan versi terbaru dari berbagai paket perangkat lunak, termasuk PHP, yang tidak tersedia di repositori default. Instal repositori REMI dengan menjalankan perintah berikut:
1 | dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm |
Setelah menginstal repositori REMI, aktifkan repositori PHP 8.2:
1 | dnf module enable php:remi-8.2 |
Now, you can install PHP 8.2 and the required PHP modules:
1 | dnf install php82-php-fpm php82-php-cli php82-php-curl php82-php-mysqlnd php82-php-gd php82-php-opcache php82-php-zip php82-php-intl php82-php-common php82-php-bcmath php82-php-imagick php82-php-xmlrpc php82-php-json php82-php-readline php82-php-memcached php82-php-redis php82-php-mbstring php82-php-apcu php82-php-xml php82-php-dom php82-php-redis php82-php-memcached php82-php-memcache |
Membuat symbolic link php82
:
1 | ln -s /usr/bin/php82 /usr/bin/php |
Membuka file konfigurasi pool PHP-FPM:
1 | nano /etc/opt/remi/php82/php-fpm.d/www.conf |
Sesuaikan konfigurasi berikut:
1 2 3 4 5 | user = nginx group = nginx listen.owner = nginx listen.group = nginx ;listen.acl_users = apache |
Jalankan dan aktifkan PHP-FPM:
1 2 3 | systemctl enable php82-php-fpm systemctl start php82-php-fpm systemctl status php82-php-fpm |
Langkah 6: Konfigurasi Server Block
Membuat direktori untuk aminlabs.my.id
:
1 | mkdir /var/www/aminlabs.my.id |
Membuat file konfigurasi server block aminlabs.my.id
:
1 | nano /etc/nginx/conf.d/aminlabs.my.id.conf |
Masukkan konfigurasi berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | server { listen 80; server_name www.aminlabs.my.id aminlabs.my.id; root /var/www/aminlabs.my.id; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_pass unix:/var/opt/remi/php82/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; } access_log /var/log/nginx/aminlabs.my.id_access.log; error_log /var/log/nginx/aminlabs.my.id_error.log; } |
Restart Nginx:
1 | systemctl restart nginx |
Langkah 7: Install SSL from Let’s Encrypt
Let’s Encrypt adalah certificate authority yang memberikan sertifikat SSL gratis untuk mengaktifkan HTTPS (SSL/TLS). Diluncurkan pada tahun 2015 oleh Internet Security Research Group (ISRG) dengan tujuan untuk memudahkan pemilik website mengamankan website mereka dengan HTTPS.
Install Certbot dan Nginx web server plugin:
1 | dnf install certbot python3-certbot-nginx |
Meminta sertifikat SSL untuk aminlabs.my.id
dan www.aminlabs.my.id. Alamat email digunakan untuk mengirimkan pemberitahuan ketika sertifikat SSL akan segera habis masa berlakunya.
1 | certbot --non-interactive -m admin@aminlabs.my.id --agree-tos --no-eff-email --nginx -d aminlabs.my.id -d www.aminlabs.my.id --redirect |
Contoh pesan yang ditampilkan ketika permintaan sertifikat SSL berhasil:
1 2 3 4 5 6 7 8 9 10 11 12 | Account registered. Requesting a certificate for aminlabs.my.id and www.aminlabs.my.id Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/aminlabs.my.id/fullchain.pem Key is saved at: /etc/letsencrypt/live/aminlabs.my.id/privkey.pem This certificate expires on 2024-05-03. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background.Deploying certificate Successfully deployed certificate for aminlabs.my.id to /etc/httpd/conf.d/aminlabs.my.id-le-ssl.conf Successfully deployed certificate for www.aminlabs.my.id to /etc/httpd/conf.d/aminlabs.my.id-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://aminlabs.my.id and https://www.aminlabs.my.id |
Langkah 8: Install WordPress via WP-CLI
WP-CLI (WordPress Command Line Interface) adalah alat yang ampuh untuk mengelola instalasi WordPress dari baris perintah. Ini memberikan cara yang nyaman dan efisien untuk melakukan berbagai tugas seperti menginstal, memperbarui, dan mengelola situs WordPress tanpa perlu menggunakan browser web.
Dengan WP-CLI, kita dapat mengotomatiskan tugas-tugas WordPress, membuat skrip operasi yang kompleks, dan berinteraksi dengan database situs WordPress langsung dari antarmuka baris perintah. Ini menjadikannya alat yang sangat diperlukan bagi pengembang, administrator sistem, dan siapa saja yang mengelola banyak situs WordPress.
Mulailah dengan menginstal WP-CLI di server. Mengunduh file Phar dan membuatnya dapat dieksekusi untuk penggunaan global:
1 2 | wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/local/bin/wp chmod +x /usr/local/bin/wp |
Berpindah ke direktori document root:
1 | cd /var/www/aminlabs.my.id |
Download WordPress core terbaru menggunakan WP-CLI:
1 | wp core download |
Membuat file wp-config.php
menggunakan WP-CLI dan memberikan informasi database yang diperlukan:
1 2 3 4 5 | wp config create \ --dbname="aminlabs" \ --dbuser="aminlabs" \ --dbpass="secretpassword" \ --dbhost="localhost" |
Install WordPress dan membuat akun admin:
1 2 3 4 5 6 | wp core install \ --url="https://www.aminlabs.my.id" \ --title="AminLabs Blog" \ --admin_user="admin" \ --admin_password="secretpassword" \ |
Pesan yang ditampilkan ketika instalasi WordPress berhasil:
1 | Success: WordPress installed successfully. |
Ubah pengguna dan grup file WordPress menjadi pengguna dan grup server web Nginx:
1 | chown -R nginx:nginx /var/www/aminlabs.my.id |
Proses instalasi WordPress telah selesai. Browse domain untuk mencoba hasil instalasi.