Menjalankan WordPress di OpenBSD 6.6 Dengan OpenBSDs HTTPD

pengantar

Mengingat kegemaran OpenBSD untuk keamanan, masuk akal untuk memberi daya pada situs WordPress Anda dengannya, terutama karena WordPress dan PHP cenderung menjadi target yang bergerak untuk skrip kiddies. Karena httpd OpenBSD terutama dirancang untuk menyajikan halaman statis, operasi POST dicadangkan untuk proses fastcgi dan slowcgi. Hal ini mempersulit aktor jahat untuk berpotensi memecah proses server web dan mendapatkan akses ke server Anda. Operasi POST disalurkan ke proses fastcgi dan menggunakan penerjemah eksternal. Artikel ini tidak hanya akan membahas pengaturan situs WordPress Anda tetapi juga beberapa teknik pemeliharaan dasar dan cara membuat cadangan dan memulihkan situs dan basis datanya. Di mana pun Anda melihat example.comsebagai domain, harap ganti dengan domain Anda.

Konfigurasi Awal

Jika Anda belum melakukannya, Anda harus membuat /etc/doas.conffile. Perintah doas adalah pengganti mudah OpenBSD untuk sudo. Untuk kenyamanan, saya telah menambahkan opsi nopass sehingga Anda tidak perlu mengetik ulang kata sandi saat menggunakan doas. Jika Anda memilih untuk tidak memiliki ini, cukup hapus nopass.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

Bergantung pada bagaimana OpenBSD dikemas untuk penyebaran, kadang-kadang manajer paket mungkin tidak memiliki repositori yang dikonfigurasi. Untuk mengkonfigurasi repositori resmi OpenBSD, kita harus membuat /etc/installurlfile.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Sekarang kita harus menambahkan PHP dan beberapa modul tambahan yang dibutuhkan WordPress untuk menangani hal-hal seperti gambar dan enkripsi. Saat diminta, pilih untuk menginstal paket PHP terbaru. Satu hal yang harus Anda lakukan adalah menyalin file modul ini dari direktori sampel ke yang utama. Ini harus dilakukan untuk mengaktifkan modul PHP tambahan.

doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

Dapatkan Mari Mengenkripsi Sertifikat

Di dunia sekarang ini, situs web harus dilayani melalui SSL atau wajah ditolak oleh mesin pencari. Untungnya, OpenBSD memiliki aplikasi hebat bernama acme-client. Klien acme akan secara otomatis menghasilkan kunci pribadi baru dan meminta sertifikat baru yang sepenuhnya valid. Klien acme tergantung pada memiliki server web di tempat sehingga kita perlu membuat definisi server default cepat.

Dengan editor favorit Anda, buat /etc/httpd.conf. Kami akan menambahkan definisi server lain ke file nanti. Untuk saat ini ini sudah cukup sehingga acme-client berfungsi dengan baik.

prefork 5
types { include "/usr/share/misc/mime.types" }

server "default" {
    listen on egress port 80
    root "/htdocs"
    directory index "index.html"

    location "/.well-known/acme-challenge/*" {
        request strip 2
        root "/acme"
    }
}

Juga menggunakan editor favorit Anda, buat /etc/acme-client.conf.

authority letsencrypt {
    api url "https://acme-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
    alternative names { www.example.com }
    domain key "/etc/ssl/private/example.com.key"
    domain full chain certificate "/etc/ssl/example.com.crt"
    sign with letsencrypt
}

Sekarang kita harus mengaktifkan dan memulai httpd. Setelah kami melakukan ini, maka kami dapat menjalankan acme-client dan menunggu untuk mendapatkan sertifikat baru kami. Setelah kami melakukan ini, kami akan menambahkan pekerjaan cron untuk secara otomatis meminta yang baru setiap 7 hari sehingga kami tidak perlu khawatir tentang kedaluwarsa.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

Sekarang kita menciptakan pekerjaan cron. Tambahkan baris ini di bawah entri terakhir. Dalam hal ini, kami memberi tahu klien acme untuk meminta sertifikat baru pada pukul 01:00 setiap hari Sabtu.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

Mengkonfigurasi HTTPD untuk WordPress

Sekarang saatnya untuk mengatur httpd untuk WordPress. Daripada menempatkan definisi situs web kami secara langsung /etc/httpd.conf, kami akan menempatkannya dalam file terpisah yang disebut /etc/httpd.conf.example.comdan memasukkannya ke dalam file konfigurasi utama. Biasanya merupakan praktik yang baik untuk memisahkan keduanya, menjaga definisi di seluruh situs dalam file konfigurasi utama Anda dan pengaturan khusus domain dalam yang berbeda.

Tambahkan baris berikut ke bagian bawah /etc/httpd.conffile Anda :

include "/etc/httpd.conf.example.com"

Sekarang menggunakan editor favorit Anda, buat /etc/httpd.conf.example.com. Untuk kenyamanan, kami akan membuat file log terpisah untuk domain Anda. Ini membuatnya lebih mudah ketika mencoba untuk mengejar potensi masalah dengan situs Anda.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Untuk keamanan yang lebih besar, kami akan mengimplementasikan permintaan tambahan untuk nama pengguna dan kata sandi saat masuk ke situs administrasi WordPress. Karena skrip kiddies ingin berulang kali mencoba dan bruteforce login WordPress, kami membuat login tambahan di tingkat server web. Biasanya, mereka mendapatkan sekitar 5 tebakan sebelum WordPress melakukan kesalahan 401 Tidak Resmi.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

Mempersiapkan dan Mengkonfigurasi PHP dan PHP-FPM

Kami harus membuat perubahan dalam php sehingga instalasi WordPress Anda dapat mengirim email. WordPress dan beberapa plugin mengandalkan kemampuan untuk mengirim email yang memberi tahu Anda tentang peningkatan, peringatan, dan perubahan. Ketidakmampuan untuk mengirim email dapat merusak fitur WordPress tertentu. Karena httpd berjalan dalam lingkungan chroot, kami harus memberi tahu php cara mengirim email. Selanjutnya, kita harus melakukan beberapa tweak kinerja untuk php-fpm.

Cari sendmail_pathbaris /etc/php-7.3.inidan buat perubahan berikut:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

Cari baris berikut /etc/php-fpm.confdan ubah sebagai berikut:

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

Langkah selanjutnya adalah mengaktifkan dan memulai php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Mempersiapkan dan Mengkonfigurasi MariaDB

MariaDB adalah pengganti garpu MySQL. Kita perlu melakukan beberapa konfigurasi awal dan pekerjaan persiapan basis data untuk WordPress.

Sebelum kita dapat menggunakan MariaDB secara efektif, kita perlu mengizinkan daemon mysql untuk menggunakan lebih banyak sumber daya daripada default. Untuk melakukan ini, buat perubahan berikut /etc/login.confdengan menambahkan entri ini di bagian bawah.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

Kami harus membuat beberapa perubahan pada file konfigurasi MariaDB /etc/my.cnf,. Dengan meminta klien dan server mysql berkomunikasi melalui soket domain UNIX alih-alih TCP, penggunaan memori server Anda dapat lebih rendah. Anda tidak harus melakukan semua perubahan yang disarankan di bawah ini. Dua yang penting untuk diubah adalah socketgaris dan untuk mengomentari bind-addressgaris. Ini memindahkan soket di dalam /var/wwwlingkungan chroot sehingga WordPress dapat terhubung ke database. Dengan mengomentari bind-addresssaluran, kami mencegah MariaDB dari mendengarkan pada port TCP.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

Sekarang kita perlu menjalankan MariaDB menginstal biner dan mengaktifkan dan memulai MariaDB. Prosedur ini akan menetapkan kata sandi root dan secara opsional menjatuhkan basis data pengujian. Sebaiknya ikuti semua saran di tahap instalasi yang aman.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

Buat basis data WordPress dan pengguna basis data. Ingatlah untuk mengganti <wp_user>dengan nama pengguna basis data pilihan Anda dan <password>dengan kata sandi yang rumit yang Anda pilih.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

Instal dan Konfigurasi WordPress

WordPress belum memiliki port resmi OpenBSD untuk beberapa waktu karena cukup banyak yang berhasil. Unduh, ekstrak, dan pindahkan folder instalasi WordPress.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Kita harus menyalin /etc/resolv.confdan /etc/hostske direktori yang akan kita buat dipanggil /var/www/etc. Ini agar WordPress dapat berhasil menjangkau pasar. Anda memerlukan ini untuk mengunduh plugin dan tema melalui situs admin WordPress. Penting juga bagi plugin Jet Pack untuk bekerja dengan baik.

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

Dari sini, browse ke situs web WordPress Anda menggunakan https melalui URL yang Anda tentukan dalam definisi server web. Jika semuanya berfungsi dengan benar, Anda akan melihat panduan pemasangan WordPress. Ketika Anda masuk ke opsi untuk menentukan server database, Anda harus menggunakanlocalhost:/var/run/mysql/mysql.sock

Setelah WordPress terinstal, sekarang saatnya untuk mengatur permalink sehingga mereka terlihat lebih ramah SEO. Dari layar admin WordPress, buka Settings -> Permalinks. Klik pada Struktur dan jenis Kustom /posts/%postname%. Setelah melakukan perubahan ini, klik tombol Simpan Perubahan. Anda sekarang memiliki tautan yang tampak lebih bagus. Misalnya, permalink akan terlihat seperti ini:https://example.com/posts/example-blog-post

Dari sini, Anda harus memiliki situs web dasar yang siap digunakan. Pastikan Anda menginstal plugin seperti Jet Pack dan WP-Super Cache. Plugin WP-Super Cache membantu mempercepat situs web Anda dengan caching halaman web dan menghilangkan pencarian database konstan dan JetPack memberi Anda beberapa statistik pemirsa yang sangat baik.

Mencadangkan Situs Web dan Basis Data WordPress Anda

Seharusnya tidak perlu dikatakan bahwa membuat cadangan situs web dan basis data Anda sangat penting. Untungnya, ini adalah hal yang relatif mudah dilakukan. Cadangkan keduanya ke direktori home Anda dan kemudian Anda dapat menyalinnya melalui scp ke lokasi lain. Anda juga dapat membuat snapshot melalui Panel Kontrol Vultr. Adalah ide yang baik untuk melakukan keduanya.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

Memulihkan Situs WordPress Anda

Jika basis data Anda rusak dan pemulihan diperlukan, lakukan yang berikut ini:

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

Jika Anda membuat perubahan pada file skrip WordPress yang memecahkan sesuatu, Anda selalu dapat menginstal ulang WordPress melalui panel kontrol admin. Cari Updatesbagian dan klik tautannya. Cari tombol berlabel Re-install Now. Ini setidaknya akan memperbaiki apa yang rusak tetapi sebagian besar konfigurasi Anda harus tetap utuh.

Jika database Anda dalam kondisi yang baik, tetapi Anda secara tidak sengaja mengedit file dan memecah hal-hal ke titik di mana Anda bahkan tidak bisa sampai ke konsol admin WordPress, kemudian lakukan hal berikut:

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut