WordPress به PHP، پایگاه داده و فایل‌های قابل مدیریت نیاز دارد. امشب دیتابیس با حساب محدود به خودش می‌سازیم و کد و راز را پیش از انتشار از هم جدا می‌کنیم.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: pool مستقل wordpress، MariaDB مطابق نیاز نسخهٔ انتخابی، کلاینت دارای CA؛ آزمایش‌ها روی VM اختصاصی است.

در Debian/Ubuntu، extensionهای همان شاخه را پیش از Clone گرفتن برای مقایسهٔ روش‌ها نصب کن:

sudo apt install "php${PHP_BRANCH}-mysql" "php${PHP_BRANCH}-curl" \
  "php${PHP_BRANCH}-gd" "php${PHP_BRANCH}-mbstring" "php${PHP_BRANCH}-xml" \
  "php${PHP_BRANCH}-zip" "php${PHP_BRANCH}-intl" "php${PHP_BRANCH}-opcache"

در RHEL بسته‌های اصلی شب سی‌وپنجم و گزارش نیازمندی نسخهٔ WordPress مبنا هستند. وجود PHP بدون driver دیتابیس برای نصب WordPress کافی نیست.

پس از نصب extension، FPM را با configtest و restart بازخوانی کن؛ در Clone mod_php همین کار با Apache انجام می‌شود. وجود بسته روی دیسک، بارگذاری آن در کارگرهای جاری را اثبات نمی‌کند.

نصب دیتابیس#

در Debian/Ubuntu sudo apt install mariadb-server و در Alma/Rocky 9 ابتدا dnf module list mariadb را بررسی کن؛ در VM تمیز با stream موجود، sudo dnf module enable mariadb:10.11 و سپس sudo dnf install mariadb-server را اجرا کن. در همهٔ شاخه‌ها:

sudo systemctl enable --now mariadb
mariadb --version
sudo ss -lntp
sudo env MYSQL_HISTFILE=/dev/null mariadb

MariaDB نباید پورت عمومی داشته باشد. در prompt SQL، پیش از اجرا مقدار نمونهٔ رمز را با رمز یکتای خودت جایگزین کن؛ آن را در گزارش نیاور:

CREATE DATABASE apache_wp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'REPLACE_WITH_UNIQUE_PASSWORD';
GRANT ALL PRIVILEGES ON apache_wp.* TO 'wordpress'@'localhost';
SHOW GRANTS FOR 'wordpress'@'localhost';

مجوز فقط همین دیتابیس است؛ root دیتابیس حساب برنامه نیست. مسیر socket و تفاوت localhost با اتصال TCP را در config PHP/MariaDB بررسی کن. تغییر رمز حساب موجود با CREATE USER دوباره انجام نمی‌شود.

کد از منبع اصلی#

mkdir -p ~/apache-lab/downloads
cd ~/apache-lab/downloads
curl -fLO https://wordpress.org/latest.tar.gz
sha256sum latest.tar.gz
tar -tzf latest.tar.gz
sudo tar --no-same-owner -xzf latest.tar.gz \
  -C /var/www/wordpress/public --strip-components=1

این دستور برای پوشهٔ خالی آماده‌شده در شب سی‌وششم است. نسخهٔ دریافت‌شده را ثبت و برای تکرار بعدی همان release را از archive رسمی انتخاب کن. hash محلی فقط اثرانگشت فایل است؛ خودش تأیید مستقل اصالت نیست. checksumهای رسمی را در شب چهل‌ودوم بررسی می‌کنیم.

wp-config-sample.php را به wp-config.php کپی و DB_NAME، DB_USER، DB_PASSWORD و DB_HOST را با مقادیر همین lab تنظیم کن. برای کلیدها و saltها مقادیر تصادفی مستقل بساز؛ عبارت‌های نمونه را نگه ندار. WP_HOME و WP_SITEURL را https://wp.example.test قرار بده. مالک config root:wordpress و حالت آن 640 باشد؛ سایر کد root-owned با پوشهٔ 755 و فایل 644 می‌ماند.

آزمون و بازگشت: با mariadb -u wordpress -p apache_wp اتصال حساب برنامه را آزمایش کن؛ رمز در prompt وارد می‌شود. فایل config نباید برای حساب نامرتبط خواندنی باشد. Snapshot پیش از نصب جدول‌های WordPress، نقطهٔ برگشت هر شاخهٔ PHP است.

منبع: نیازمندی‌های WordPress ، نصب WordPress ، CREATE USER در MariaDB .