Menjalankan WordPress di OpenBSD 6.6 Dengan HTTPD OpenBSD

Pengenalan

Memandangkan kecenderungan OpenBSD untuk keselamatan, masuk akal untuk mengaktifkan laman web WordPress anda dengannya, terutamanya kerana WordPress dan PHP cenderung menjadi sasaran bergerak untuk anak-anak skrip. Oleh kerana httpd OpenBSD direka terutamanya untuk melayani sehingga halaman statik, operasi POST dikhaskan untuk proses fastcgi dan slowcgi. Ini menyukarkan pelakon nakal untuk berpotensi menghentikan proses pelayan web dan mendapatkan akses ke pelayan anda. Operasi POST disalurkan ke proses fastcgi dan menggunakan jurubahasa luaran. Artikel ini akan membincangkan bukan sahaja menubuhkan laman WordPress anda tetapi beberapa teknik penyelenggaraan asas dan bagaimana untuk membuat sandaran dan memulihkan laman web anda dan pangkalan datanya. Di mana sahaja anda melihat example.comsebagai domain, ganti dengan domain anda.

Konfigurasi Awal

Sekiranya anda belum melakukannya, anda perlu membuat /etc/doas.conffail. Perintah doas adalah pengganti mudah OpenBSD untuk sudo. Untuk kemudahan, saya telah menambahkan pilihan nopass supaya anda tidak perlu menaip semula kata laluan anda semasa menggunakan doas. Sekiranya anda memilih untuk tidak memilikinya, cuma tinggalkan nopass.

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

Bergantung pada bagaimana OpenBSD dikemas untuk penyebaran, kadang-kadang pengurus pakej mungkin tidak mempunyai konfigurasi repositori. Untuk mengkonfigurasi repositori rasmi OpenBSD, kami perlu membuat /etc/installurlfail.

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

Sekarang kita perlu menambah PHP dan beberapa modul tambahan yang diperlukan oleh WordPress untuk menangani perkara seperti imej dan penyulitan. Apabila digesa, pilih untuk memasang paket terbaru PHP. Satu perkara yang perlu anda lakukan ialah menyalin fail modul ini dari direktori sampel ke yang utama. Ini perlu dilakukan untuk membolehkan 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 Letakkan Sijil Sijil

Di dunia hari ini, laman web mesti disampaikan melalui SSL atau muka yang dikecilkan oleh enjin carian. Nasib baik, OpenBSD mempunyai aplikasi hebat yang disebut acme-client. Pelanggan acme secara automatik akan menghasilkan kunci persendirian baru dan meminta sijil sah yang baru. Pelanggan acme bergantung kepada mempunyai pelayan web di tempat supaya kami perlu membuat definisi pelayan lalai cepat.

Dengan editor kegemaran anda, buat /etc/httpd.conf. Kami akan menambahkan definisi pelayan lain ke fail kemudian. Buat masa ini ini akan menjadi cukup supaya fungsi 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 kegemaran 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 perlu mendayakan dan memulakan httpd. Setelah kami melakukan ini, maka kami dapat menjalankan acme-client dan menunggunya untuk mendapatkan sijil baru kami yang baru. Setelah kami melakukan ini, kami akan menambah tugas cron untuk meminta permintaan yang baru setiap 7 hari supaya kami tidak perlu risau tentang tamat tempoh.

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

Sekarang kita buat kerja cron. Tambahkan baris ini di bawah kemasukan yang terakhir. Dalam kes ini, kami meminta acme-client untuk meminta sijil baru pada pukul 1:00 pagi setiap hari Sabtu.

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

Mengkonfigurasi HTTPD untuk WordPress

Kini sudah tiba masanya untuk menyediakan httpd untuk WordPress. Daripada meletakkan definisi laman web kami secara langsung /etc/httpd.conf, kami akan meletakkannya dalam fail berasingan yang disebut /etc/httpd.conf.example.comdan memasukkannya ke dalam fail konfigurasi utama. Amnya adalah amalan yang baik untuk memisahkan kedua-dua, mengekalkan definisi di seluruh halaman dalam fail konfigurasi utama anda dan tetapan khusus domain dalam yang lain.

Tambahkan baris berikut ke bahagian bawah /etc/httpd.conffail anda :

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

Sekarang menggunakan editor kegemaran anda, buatlah /etc/httpd.conf.example.com. Untuk kemudahan, kami akan membuat fail log berasingan untuk domain anda. Ini menjadikannya lebih mudah apabila cuba mengatasi masalah yang berpotensi dengan laman web 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 keselamatan yang lebih besar, kami akan melaksanakan permintaan tambahan untuk nama pengguna dan kata laluan semasa log masuk ke laman web pentadbiran WordPress. Oleh kerana anak-anak skrip suka berulang kali mencuba dan menggunakan log masuk WordPress, kami membuat log masuk tambahan di peringkat pelayan web. Biasanya, mereka mendapat kira-kira 5 tekaan sebelum WordPress melontarkan 401 ralat Tidak Sah.

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

Sediakan dan Konfigurasikan PHP dan PHP-FPM

Kita harus membuat perubahan dalam php supaya pemasangan WordPress anda dapat menghantar e-mel. WordPress dan beberapa pemalam bergantung pada kemampuan untuk menghantar e-mel yang memberitahu anda mengenai peningkatan, amaran, dan perubahan. Ketidakupayaan untuk menghantar e-mel boleh mematahkan ciri-ciri WordPress tertentu. Oleh kerana httpd berjalan di persekitaran chroot, kita harus memberitahu php cara menghantar e-mel. Tambahan pula, kita perlu melakukan beberapa tweeks prestasi untuk php-fpm.

Cari sendmail_pathgarisan masuk /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 ubahnya seperti berikut:

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

Langkah seterusnya adalah untuk mendayakan dan memulakan php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Sediakan dan Konfigurasikan MariaDB

MariaDB adalah pengganti fork MySQL. Kita perlu melakukan konfigurasi awal dan kerja penyediaan pangkalan data untuk WordPress.

Sebelum kita dapat menggunakan MariaDB dengan berkesan, kita perlu membenarkan daemon mysql menggunakan lebih banyak sumber berbanding default. Untuk melakukan ini, buat perubahan berikut /etc/login.confdengan menambah entri ini di bahagian bawah.

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

Kita perlu membuat beberapa perubahan dalam fail konfigurasi MariaDB, /etc/my.cnf. Dengan memiliki klien dan pelayan mysql berkomunikasi melalui soket domain UNIX dan bukannya TCP, penggunaan memori pelayan anda dapat disimpan lebih rendah. Anda tidak perlu membuat semua perubahan yang dicadangkan di bawah. Kedua-dua perkara yang penting untuk diubah adalah socketgaris dan untuk memberi komen bind-addressgaris itu. Ini menggerakkan soket di dalam /var/wwwpersekitaran chroot supaya WordPress boleh menyambung ke pangkalan data. Dengan mengulas bind-addressgaris itu, kami menghalang MariaDB daripada mendengar 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

Kini kita perlu menjalankan pemasangan binari MariaDB dan membolehkan dan memulakan MariaDB. Prosedur ini akan menetapkan kata laluan root dan secara pilihan drop database pengujian. Adalah idea yang baik untuk mengikuti semua cadangan dalam peringkat pemasangan yang selamat.

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

Buat pangkalan data WordPress dan pengguna pangkalan data. Ingat untuk menggantikan <wp_user>dengan nama pengguna pangkalan data pilihan anda dan <password>dengan kata laluan kompleks 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

Pasang dan Konfigurasikan WordPress

WordPress tidak mempunyai pelabuhan OpenBSD rasmi untuk beberapa waktu kerana ia cukup berfungsi keluar dari kotak. Muat turun, ekstrak, dan pindahkan folder pemasangan 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 perlu menyalin /etc/resolv.confdan /etc/hostske direktori yang akan kita buat dipanggil /var/www/etc. Ini adalah supaya WordPress berjaya mencapai pasaran. Anda memerlukan ini untuk memuat turun plugin dan tema melalui laman admin WordPress. Ia juga penting untuk plugin Jet Pack berfungsi dengan baik.

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

Dari sini, layari laman web WordPress anda menggunakan https melalui URL yang anda nyatakan dalam definisi pelayan web. Jika semuanya berfungsi dengan betul, anda harus melihat wizard memasang WordPress. Apabila anda mendapat pilihan untuk menentukan pelayan pangkalan data, anda harus menggunakannyalocalhost:/var/run/mysql/mysql.sock

Setelah WordPress dipasang, sudah tiba masanya untuk menyediakan permalink agar mereka kelihatan lebih mesra SEO. Dari skrin admin WordPress, pergi ke Settings -> Permalinks. Klik pada Struktur Tersuai dan ketik /posts/%postname%. Setelah membuat perubahan ini, klik butang Simpan Perubahan. Anda kini mempunyai pautan mencari yang lebih bagus. Sebagai contoh, permalink akan kelihatan seperti ini:https://example.com/posts/example-blog-post

Dari sini, anda sepatutnya mempunyai laman web asas yang bersedia untuk pergi. Pastikan anda memasang pemalam seperti Jet Pack dan WP-Super Cache. Plugin WP-Super Cache membantu mempercepatkan laman web anda dengan melayari halaman web dan menghilangkan carian pangkalan data yang tetap dan JetPack memberikan anda beberapa statistik penonton yang sangat baik.

Menyandarkan Laman Web dan Database WordPress Anda

Ia harus pergi tanpa mengatakan bahawa sokongan laman web dan pangkalan data anda sangat penting. Syukurlah, ini adalah perkara yang mudah dilakukan. Sandaran kedua-dua direktori rumah anda dan kemudian anda boleh menyalinnya melalui scp ke lokasi lain. Anda juga boleh membuat tangkapan gambar melalui Panel Kawalan Vultr. Adalah idea yang baik untuk melakukan kedua-duanya.

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

Mengembalikan Laman Web WordPress Anda

Sekiranya pangkalan data anda rosak dan pemulihan diperlukan, lakukan perkara berikut:

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

Sekiranya anda membuat perubahan pada fail skrip WordPress yang merosakkan sesuatu, anda boleh memasang semula WordPress melalui panel kawalan pentadbir. Cari Updatesbahagian dan klik pada pautan. Cari butang yang dilabelkan Re-install Now. Ini sekurang-kurangnya akan memperbaiki yang rosak tetapi sebahagian besar konfigurasi anda harus tetap utuh.

Sekiranya pangkalan data anda dalam keadaan baik, tetapi anda secara tidak sengaja telah mengedit fail dan memecahkan sesuatu sehingga anda tidak dapat sampai ke konsol pentadbir WordPress, kemudian lakukan perkara 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

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut