บทนำ
ยิ่งคุณติดตั้ง OpenBSD ของคุณเป็นค่าเริ่มต้นมากขึ้นเท่านั้นและหากไม่มีแพ็คเกจเพิ่มเติมจำนวนมากก็จะยิ่งปลอดภัยมากขึ้นเท่านั้น ในขณะที่การตั้งค่าทั่วไปสำหรับ WordPress คือการใช้ Apache และ PHP เป็นไปได้แน่นอน (และเป็นที่ต้องการ) เพื่อใช้ httpd ในตัวของ OpenBSD บทช่วยสอนนี้จะช่วยให้คุณเริ่มต้นด้วยการตั้งค่าใบรับรอง Let's Encrypt เว็บเซิร์ฟเวอร์และ WordPress อย่างสมบูรณ์ คุณจะต้องเข้าถึงรูทเพื่อที่จะทำสิ่งนี้ได้
การกำหนดค่าเริ่มต้น
หากคุณยังไม่ได้ดำเนินการคุณจะต้องสร้าง/etc/doas.conf
ไฟล์ doas
คำสั่งจะเปลี่ยนง่าย OpenBSD sudo
สำหรับ
su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf
เราต้องบอก OpenBSD ว่าบรรจุภัณฑ์นั้นอยู่ที่ไหน สิ่งนี้เกิดขึ้นใน/etc/installurl
ไฟล์
doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit
ตอนนี้เราต้องเพิ่ม PHP และโมดูลพิเศษบางอย่างที่ WordPress ต้องการเพื่อจัดการกับสิ่งต่าง ๆ เช่นรูปภาพและการเข้ารหัส เมื่อได้รับแจ้งให้เลือกติดตั้งแพ็คเกจใหม่ล่าสุดของ PHP สิ่งหนึ่งที่คุณต้องทำคือคัดลอกini
ไฟล์โมดูลจากไดเรกทอรีตัวอย่างไปยังไฟล์หลัก สิ่งนี้จะต้องทำเพื่อเปิดใช้งานโมดูล PHP เพิ่มเติม
doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli pecl73-mcrypt pecl73-imagick
doas su -
cp /etc/php-7.3.sample/* /etc/php-7.3/.
รับ Let's Encrypt Certificates
OpenBSD มีแอปพลิเคชั่นที่ยอดเยี่ยมที่เรียกว่า acme-client นวัตกรรมเล็กน้อยนี้คือสิ่งที่จะสร้างรหัสบัญชีของคุณรหัสส่วนตัวและรับใบรับรองสำหรับคุณ acme-client ขึ้นอยู่กับการมีเว็บเซิร์ฟเวอร์อยู่ดังนั้นเราจึงกำหนดนิยามเซิร์ฟเวอร์เริ่มต้นอย่างรวดเร็ว
/etc/httpd.conf
ด้วยการแก้ไขที่คุณชื่นชอบสร้าง เราจะเพิ่มคำจำกัดความเซิร์ฟเวอร์อื่น ๆ ลงในไฟล์ในภายหลัง สิ่งที่เราต้องทำตอนนี้คือเตรียม httpd เพื่อดำเนินการตอบสนองต่อความท้าทายเพื่อรับใบรับรอง SSL ฟรีที่ถูกต้อง
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"
}
}
/etc/acme-client.conf
นอกจากนี้ยังใช้โปรแกรมแก้ไขที่คุณชื่นชอบสร้าง
authority letsencrypt {
api url "https://acme-v01.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
authority letsencrypt-staging {
api url "https://acme-staging.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.fullchain.pem"
sign with letsencrypt
}
เปิดใช้งานและเริ่ม httpd จากนั้นรับใบรับรองที่ออกให้ คุณจะเห็นว่ามีการออกใบรับรอง
doas rcctl enable httpd php73_fpm
doas rcctl start httpd
doas acme-client -ADFv example.com
doas rcctl stop httpd
การเพิ่มคำจำกัดความเซิร์ฟเวอร์
เพิ่มบรรทัดการกำหนดค่าต่อไปนี้/etc/httpd.conf
หลังจากกำหนด Let's Encrypt ตั้งค่า httpd เพื่อดำเนินการเปลี่ยนเส้นทางจาก http ไปยัง https เนื่องจากคุณมีใบรับรอง SSL ฟรีและคุณไม่ต้องการเสี่ยงที่จะส่งการเข้าสู่ระบบและรหัสผ่านผ่านลิงค์ที่ไม่ปลอดภัย จดบรรทัดlocation "/posts/*"
นี่คือส่วนที่ทำให้ WordPress permalinks ดูสวย นอกจากนี้การกำหนดค่านี้ยังมีวิธีที่จะช่วยป้องกันความพยายามในการเข้าสู่เว็บไซต์ WordPress admin
server "example.com" {
listen on egress port 80
alias "www.example.com"
block return 302 "https://$SERVER_NAME$REQUEST_URI"
}
server "example.com" {
listen on egress tls port 443
alias "www.example.com"
root "/htdocs/example.com
directory index "index.php"
location "/posts/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-json/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-login.php*" {
authenticate "WordPress" with "/htdocs/htpasswd"
fastcgi socket "/run/php-fpm.sock"
}
#Uncomment the following lines to disable xmlrpc. You increase security
#at the expense of being able to use to use
#the Android and iPhone WordPress App.
#location "xmlrpc.php*" {
# block return 404
#}
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
tls {
certificate "/etc/ssl/example.com.fullchain.pem"
key "/etc/ssl/private/example.com.key"
}
}
สร้างไฟล์ชื่อผู้ใช้และรหัสผ่านเพื่อเพิ่มระดับความปลอดภัยให้กับเว็บไซต์ WordPress admin เลือกรหัสผ่านที่ดี สิ่งนี้จะแจ้งให้คุณทราบชื่อผู้ใช้และรหัสผ่านเพื่อเรียกใช้wp-login.php
สคริปต์
doas su
cd /var/www/htdocs
htpasswd htpasswd wp_user
chown www:www htpasswd
chmod 0640 htpasswd
MariaDB เป็นทางเลือกแทนที่ของ MySQL เราต้องทำการตั้งค่าเบื้องต้นและการเตรียมฐานข้อมูลสำหรับ WordPress
ก่อนที่เราจะสามารถ���ช้ MariaDB ได้อย่างมีประสิทธิภาพเราต้องอนุญาตให้ mysql daemon ใช้ทรัพยากรมากกว่าค่าเริ่มต้น ในการดำเนินการนี้ให้ทำการเปลี่ยนแปลงดังต่อไปนี้/etc/login.conf
โดยเพิ่มรายการนี้ที่ด้านล่าง
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
เปิดใช้งานและเริ่ม MariaDB ขั้นตอนนี้จะตั้งค่ารหัสผ่านรูทและเลือกที่จะทิ้งฐานข้อมูลทดสอบ เป็นความคิดที่ดีที่จะทำตามคำแนะนำในขั้นตอนการติดตั้งที่ปลอดภัย
doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation
สร้างฐานข้อมูล WordPress และผู้ใช้ฐานข้อมูล
mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
WordPress ไม่ได้มีพอร์ต OpenBSD อย่างเป็นทางการมาระยะหนึ่งแล้วเพราะมันใช้งานได้ดีมาก ดาวน์โหลดแยกและย้ายโฟลเดอร์การติดตั้ง WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/example.com
chown -R www:www /var/www/htdocs/example.com
เรามีการคัดลอก/etc/resolve.conf
และการ/etc/hosts
/var/www/etc
นี่คือเพื่อให้ WordPress สามารถเข้าถึงตลาดได้สำเร็จ คุณจะต้องมีสิ่งนี้เพื่อดาวน์โหลดปลั๊กอินและชุดรูปแบบผ่านทางเว็บไซต์ผู้ดูแลระบบ WordPress
doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.
เริ่ม httpd php73_fpm
และ
doas rcctl start httpd php73_fpm
เรียกดู url ที่คุณใช้ในการกำหนดเซิร์ฟเวอร์ของคุณ คุณจะเห็นวิซาร์ดการติดตั้ง WordPress สำหรับตัวเลือกที่เซิร์ฟเวอร์ฐานข้อมูลแทนที่ localhost 127.0.0.1
กับ
เมื่อติดตั้ง WordPress เสร็จแล้วก็ถึงเวลาตั้งค่าลิงก์เพื่อให้พวกเขาดู SEO ที่เป็นมิตรมากขึ้น จากหน้าจอ WordPress Settings -> Permalinks
ผู้ดูแลระบบให้ไปที่ คลิกที่และประเภทCustom Structure
/posts/%postname%
หลังจากทำการเปลี่ยนแปลงนี้ให้คลิกที่Save Changes
ปุ่ม ตอนนี้คุณมีลิงค์ที่ดูดีกว่ามาก ตัวอย่างเช่นลิงก์ถาวรจะมีลักษณะเช่นนี้:https://example.com/posts/example-blog-post