Instal WordPress dengan Ubuntu 22.04, Apache2, MariaDB dan PHP 8.2-FPM

Jika Anda berencana untuk meng-host WordPress di Cloud Server, panduan ini akan sangat membantu Anda. LAMP adalah singkatan dari Linux, Apache, MariaDB dan perangkat lunak PHP yang digabungkan bersama yang dikenal sebagai LAMP stack.

Pro & Kontra memilih server web Apache daripada NGINX

  • Kelebihan: Ini mendukung file .htaccess yang biasa digunakan oleh banyak Page Caching & Optimization. Ini adalah pilihan yang bagus untuk non-koder.
  • Kontra: Performanya sedikit lebih rendah daripada NGINX tetapi dapat dikelola menggunakan APO. Untuk situs dengan trafik tinggi, LEMP stack adalah pilihan terbaik.

Ikuti 3 langkah ini dan tonton videonya. Butuh bantuan? Hubungi saya. 😊

  1. Menyiapkan DNS Cloudflare
  2. Mendapatkan Ubuntu Server
  3. Menerapkan Tumpukan LAMP

Sekarang sebelum Anda memulai, berikut tip singkatnya. Gunakan Search and Replace Extension untuk mengubah example.com secara massal ke domain Anda sendiri di halaman web ini.

Kiat hemat waktu bagi pengguna Google Chrome.
search replace

Bagian A: Menjaga Nameserver Cloudflare tetap aktif

Kami akan menggunakan Cloudflare DNS untuk mendapatkan sertifikat Let’s Encrypt Wildcard SSL. Selesaikan langkah ini terlebih dahulu untuk menikmati migrasi zero-downtime.

Periksa Nameserver Saat Ini

Bagian B: Siapkan Server Ubuntu Server 22.04 LTS

Ubuntu
Logo Ubuntu

1. Daftar Vultr untuk mendapatkan $100 Kredit gratis (Berlaku selama 14 hari)

Sebagai seseorang yang telah mencoba begitu banyak perusahaan server Cloud, pengalaman saya mengatakan bahwa Anda tidak bisa salah dengan Vultr. Orang-orang ini tulus dan peduli dalam hal dukungan dan layanan.

vultr

⚡ Kinerja

  • AMD EPYC™ Generasi ke-3
  • NVME / SSD
  • CPU hingga 4 GHz
  • Kecepatan Jaringan Hingga 5Gbps
  • Pusat data di Amerika, Eropa, Asia, Austraillia
  • IPV6 siap

💡 Fitur

  • Dasbor Ramah Pemula
  • Sekali klik ke Snapshot
  • Pencadangan Otomatis (Berbayar)
  • Firewall Awan Gratis
  • Perlindungan DDoS (Berbayar)
  • 100% Virtualisasi KVM

⚙ Dukungan

  • PayPal/Kartu
  • Dukungan Tiket 24/7
  • Dokumentasi

2. Deloy Server Baru

Cukup klik pada tombol plus untuk memulai

Deploy New Server

3. Pilih jenis Server

Pilih Cloud Compute untuk CPU bersama dengan harga terjangkau.

Cloud Compute

Selanjutnya, Anda perlu memilih CPU & Storage Technology, Anda dapat memilih “AMD High Performance”.

CPU Technology

4. Pilih Lokasi Server

Vultr menawarkan server di empat benua. Untuk latensi terendah dan kinerja terbaik, Anda harus selalu memilih wilayah yang paling dekat dengan audiens Anda.

vultr server region

Misalnya, jika 99% lalu lintas berasal dari Asia, pilih wilayah terdekat – Singapore.

Asia

  • Mumbai, India
  • Delhi NCR, India
  • Bengaluru, India
  • Singapore, Singapore
  • Tokyo, Japan
  • Seoul, South Korea

America

  • Miami, United States
  • Atlanta, United States
  • Chicago, United States
  • Dallas, United States
  • Honolulu, United States
  • Los Angeles, United States
  • Mexico City, Mexico
  • New York (NJ), United States
  • Seattle, United States
  • Silicon Valley, United States
  • Toronto, Canada, São Paulo

Europe

  • Stockholm, Sweden
  • London, United Kingdom
  • Amsterdam, Netherlands
  • Frankfurt, Germany
  • Madrid, Spain
  • Paris, France
  • Warsaw, Poland

Australlia

  • Sydney, Australlia
  • Melbourne, Australia

5. Pilih Gambar Server > Sistem Operasi > Ubuntu 22.04 LTS x64

ubuntu os

Dukungan jangka panjang (LTS) adalah kebijakan manajemen siklus hidup produk di mana rilis perangkat lunak komputer yang stabil dipertahankan untuk jangka waktu yang lebih lama daripada edisi standar.

ubuntu releases 2

6. Pilih Ukuran Server

server size

Paket $6/bulan akan menjadi titik awal yang bagus untuk blog baru. Anda dapat meningkatkan kapan saja sesuai kebutuhan.

Tip: Jika Anda bermigrasi, periksa Total ukuran instalasi di Info kesehatan situs.

Site health info

7. Aktifkan IPV6, Cadangan

vultr enable backup ipv6

8. Tambahkan kunci SSH

Ini adalah langkah opsional yang direkomendasikan untuk meningkatkan keamanan.

Add SSH key
  • Klik tombol Add New untuk menambahkan kunci SSH baru untuk mengirimkan 🔒Kunci Publik Anda.
  • Hasilkan Kunci menggunakan metode di bawah ini sesuai OS Anda.
win os
  • Unduh aplikasi PuTTy.
  • Cari PuTTygen di menu Start
  • Klik pada tombol Generate dan arahkan pointer mouse
  • Salin kunci publik dan berikan ke Vultr
  • Masukkan kata sandi kunci
  • Simpan 🔑Kunci Pribadi di lokasi teraman.
  • Ini bisa digunakan untuk login ke SSH atau SFTP.
linux 2
  • Jalankan: ssh-keygen -t rsa. Untuk kunci 4096-bit yang lebih aman, jalankan: ssh-keygen -t rsa -b 4096
  • Tekan enter ketika ditanya di mana Anda ingin menyimpan kunci (ini akan menggunakan lokasi default).
  • Masukkan frasa sandi untuk kunci Anda.
  • Jalankan cat ~/.ssh/id_rsa.pub – ini akan memberi Anda kunci dalam format yang tepat untuk ditempelkan ke panel kontrol.
  • Pastikan Anda membuat cadangan file ~/.ssh/id_rsa. Ini tidak dapat dipulihkan jika hilang.

Pilih kunci SSH Anda

Mengikuti langkah-langkah ini akan melampirkan kunci publik Anda ke Instance baru Anda. Kemudian, Anda akan dapat masuk ke SSH menggunakan kata sandi Plain Text dan kunci SSH.

select SSH public key

9. Tautkan aturan Firewall Web ke Instansi Server

Firewall
  1. Klik Manage dan buat Grup Firewall baru.
  2. Izinkan port TCP 22 untuk SSH. 80 untuk HTTP dan 443 HTTPS untuk aturan IPV4 dan IPV6 keduanya.
  3. Setelah selesai, tautkan grup Firewall ke Instance Anda.
firewall status
Hanya menerima koneksi TCP dari 22, 80, 443
Link Firewall Group
Tautkan aturan firewall ke instance baru

10. Masukkan Nama Host dan label klik Deploy Now

server hostname label

Now, you will see installing in the progress

Instance Installing

11. Buka halaman Instance Baru

Salin alamat IP, nama pengguna dan kata sandi. Port default Anda adalah 22.

new instance info page

12. Nonaktifkan Login Kata Sandi

Untuk alasan keamanan, direkomendasikan untuk menonaktifkan autentikasi kata sandi dan hanya mengizinkan autentikasi berbasis kunci.

  1. Edit berkas konfigurasi nano /etc/ssh/sshd_config
  2. Temukan (CTRL + W) dan cari PasswordAuthentication
  3. Ubah nilai dari ya ke tidak
  4. Untuk menyimpan tipe, CTRL + O
  5. Mulai ulang layanan SSH menggunakan perintah sudo service ssh restart
disable password auth
Nonaktifkan Autentikasi Kata Sandi

Mulai waktu berikutnya, Anda dapat menggunakan SSH melalui key saja seperti yang ditunjukkan dalam video.

Untuk Linux atau Mac, gunakan Terminal dengan perintah seperti ini

ssh [email protected] -p 22 -i id_rsa

Langkah 13. Nonaktifkan UFW

Ketika Anda menerapkan instance baru di VULTR, instance tersebut dilengkapi dengan UFW (Uncomplicated Firewall) yang diaktifkan yang membuat semua port diblokir kecuali port SSH 22. Ini dapat mengembalikan ERR_CONNECTION_REFUSED Error di browser. Untuk memperbaikinya, saya sarankan agar UFW dinonaktifkan.

ufw disable

Sekarang, saya akan mempercepat proses awal untuk menerapkan WordPress pada tumpukan LAMP.

Bagian C. Menyebarkan WordPress pada LAMP Stack

1. Memperbarui repositori

Ketik perintah di bawah ini dan tekan tombol enter

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

atau

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

Lain kali, selalu gunakan perintah pintasan di bawah ini untuk memperbarui.

./update

2. Instal MariaDB dengan keamanan

Login lagi dan masukkan perintah berikut

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Jawab pertanyaan di bawah ini

  • Enter current password for root (enter for none): Нажмите клавишу Enter
  • Switch to unix_socket authentication [Y/n]: Введите n и нажмите клавишу Enter.
  • Set root password? [Y/n]: Нажмите клавишу Enter.
  • New password: Скопируйте надежный пароль из генератора паролей Dashlane. Чтобы вставить пароль в консоль SSH, щелкните правой кнопкой мыши и нажмите клавишу Enter. Пароль не будет виден на экране.
  • Re-enter new password: Щелкните правой кнопкой мыши и снова нажмите клавишу Enter.

Setelah kata sandi berhasil ditetapkan, Anda akan melihat

Password updated successfully!
Reloading privilege tables..
... Success!

Juga, Anda perlu menjawab pertanyaan-pertanyaan berikut.

  • Remove anonymous users? [Y/n]: Снова нажмите клавишу Enter.
  • Disallow root login remotely? [Y/n]: Снова нажмите клавишу Enter.
  • Remove test database and access to it? [Y/n]: Снова нажмите клавишу Enter.
  • Reload privilege tables now? [Y/n]: Снова нажмите клавишу Enter.

3. Buat Database baru untuk WordPress

Login ke MySQL, tekan tombol enter ketika meminta kata sandi.

mysql -u root -p

Buat Database baru, dan berikan hak istimewa untuk menggunakan pengguna dengan kata sandi. Di sinilah WordPress menyimpan semua informasi posting, halaman, tema, plugin, dll.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Di mana Anda …
basis data adalah wordpress
nama pengguna adalah gulshan
kata sandi adalah 5pY8CKJxDRJEGQNkX7

Tip: Pertimbangkan untuk menggunakan kredensial login yang unik

4. Instal PHP 8.2, Apache2 dan atur Izin

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Mengubah Konfigurasi PHP

Sebagian besar tema dan plugin mewah membutuhkan konfigurasi PHP kelas atas untuk dapat berjalan. Oleh karena itu, kita harus melakukan perubahan ini.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Instal Sertifikat SSL Wildcard Let’s Encrypt

Buat file cloudflare.ini di dalam direktori /root/.secrets/.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Tambahkan kode di bawah ini dan simpan menggunakan CTRL + O dan keluar menggunakan CTRL + X

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Temukan email Cloudflare dan Global API key Anda di “Profil Saya” > Token API > Global API Key

chmod 0400 /root/.secrets/cloudflare.ini

Instal Certbot dan DNS Authenticator sesuai dengan OS dan server web HTTP

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Dapatkan Sertifikat SSL Wildcard

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Atur Pembaruan Otomatis menggunakan Cron Job

  • Jenis crontab -e
  • Ketik 1 untuk nano editor
  • Masukkan perintah di bawah ini dan simpan
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Uji pembaruan

certbot renew --dry-run

Aktifkan modul-modul yang berguna ini

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Buat Direktori Aplikasi untuk setiap situs WordPress yang ingin Anda instal

mkdir -p /var/www/example.com/public

Ini akan menjadi jalur Akar Dokumen Anda dalam berkas Konfigurasi Apache Anda. Alasan membuat example.com di dalam www adalah untuk menjaga agar setiap situs tetap teratur. Kedua, saya juga membuat direktori publik dengan tujuan untuk menyimpan semua file inti WordPress di sana tetapi wp-config.php satu tingkat ke atas (/var/www/example.com/).

7. Membuat Konfigurasi Apache2

Ini penting di mana Anda perlu mengkonfigurasi domain Anda, bagaimana Apache2 harus menangani permintaan HTTP Anda.

Hapus file konfigurasi blok server default Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Sekarang, Buat file konfigurasi blok server baru. Anda perlu melakukan langkah ini setiap kali Anda ingin menambahkan WordPress baru di server yang sama.

Harap ganti example.com dengan domain sendiri dan jangan lupa untuk mengakhiri nama file konfigurasi dengan ekstensi .conf. Jika tidak, maka tidak akan berfungsi.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Ganti example.com dengan domain sendiri
  2. Masukkan kode di bawah ini dan tekan ctrl+o untuk menyimpan dan ctrl+x untuk keluar.
##############################################################
#                                                               
#  CATATAN: Mohon lakukan pencarian dan ganti example.com menjadi domain sendiri.
#                                                                
##############################################################


# Kami akan memaksa HTTPS non-www
# Jika Anda menginginkan HTTPS www, harap pertahankan https://www.example.com/ di baris terakhir.
# Atau Anda mungkin akan menghadapi masalah pengalihan ulang.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Recommended for Cloudflare users
   # RemoteIPHeader X-Forwarded-For
   
   # Jalur Akar Dokumen (Perhatikan jalur ini untuk menghindari 404)
   DocumentRoot /var/www/example.com/public
   
   # Jalur Log adalah /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Izinkan penggunaan file .htaccess untuk mengganti konfigurasi
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Blokir eksekusi PHP di dalam Direktori Unggahan
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Lindungi wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth untuk keamanan tambahan
  # Jika Anda menginginkan HTTP Auth untuk halaman Login WordPress, maka pertimbangkan untuk menghapus blok kode ini.
  # Jika Anda melakukannya, Anda juga harus membuat file .htpasswd.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Blokir XML-RPC untuk mencegah Serangan DDoS. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Menangani eksekusi PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

To save, press CTRL+O and Enter key. Then, exit nano editor using command CTRL+X.

Untuk mengaktifkan blokir server, masukkan perintah

Sebelum menjalankan perintah di bawah ini, harap ganti example.com ke domain sendiri.

a2ensite example.com.conf

Konfigurasi pengujian (opsional)

apache2 -t

Mulai ulang dan perbarui

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Instal file WordPress

Unduh file WordPress di direktori /var/www/example.com/public/ dan atur izin.

cd /var/www/example.com/public/ && wget https://id.wordpress.org/latest-id_ID.tar.gz && tar -xvzf latest-id_ID.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-id_ID.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

Untuk memperbarui izin di masa mendatang, gunakan perintah di bawah ini. Ini akan mengatur www-data untuk semua yang ada di dalam direktori /var/www/

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Memperbarui DNS

Jika Anda meng-hosting WordPress secara lokal, ingin mem-bypass proxy atau ingin melakukan migrasi zero downtime, langkah ini berguna. Saya biasanya lebih suka dalam kasus area Dev WordPress Statis. 😉

  • Ada dua cara untuk mengarahkan DNS. Jika Anda memigrasikan situs ke Vultr dan ingin mengujinya terlebih dahulu secara lokal, maka edit file host Anda dan arahkan ke sana.

Untuk Windows

  • Pergi ke properti ‪‪C:\Windows\System32\drivers\etc\hosts
  • Ubah izin “Keamanan” menjadi kontrol penuh untuk Nama Pengguna Anda saat ini
  • Sekarang Anda dapat dengan bebas mengedit file host di bawah pengguna Sistem Anda dan menyimpannya.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Sebagai contoh, beginilah seharusnya tampilannya

Untuk Mac atau Linux

Anda dapat mengedit file host menggunakan perintah ini di bawah pengguna sudo.

sudo nano /etc/hosts

Memperbarui DNS dengan Cloudflare

  • Jika semuanya terlihat sempurna dan Anda ingin membuat situs Anda hidup, Login ke Cloudflare DNS dan perbarui IP baru.
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

di mana @ menunjukkan domain root example.com

9. Kunjungi nama domain Anda untuk menyiapkan WordPress

Jika Anda ingin menyimpan domain versi non-www untuk WordPress Anda maka kunjungi versi non-www selain www.

https://example.com
  • Berikan kredensial login Basis Data untuk memulai Penyiapan WordPress
  • Jalankan Instalasi
  • Isi detail dasar Situs baru Anda dan Instal WordPress.
  • Masuk ke WordPress

Hal-hal lain yang diperlukan

  • Tingkatkan Memori Swap untuk menangani beban mendadak
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Pastikan untuk menggunakan plugin Page Caching untuk menjaga beban server tetap terkendali. Karena ini adalah tumpukan LAMP, saya akan merekomendasikan Anda WP Fastest Cache.
  • Selalu simpan cadangan.
  • Gunakan Layanan plugin SMTP untuk mengirim email keluar WordPress jika tidak, Anda tidak akan dapat menerima tautan reset kata sandi, formulir kontak 7 pesan.

Akhirnya, instalasi WordPress telah selesai.

Saya sangat menghargai waktu berharga Anda dalam membaca artikel ini. Sampai jumpa di tutorial berikutnya!

Tinggalkan komentar