WIUNIX ACADEMY
آموزش نصب وردپرس با Nginx و کش FastCGI در اوبونتو و دبیان
صفحهٔ 2 از 8؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من4 مقدار قابلتغییر
بازکردن pool اختصاصی PHP
در این آزمایش، وجود pool پیشفرض تداخلی ندارد؛ سایت از سوکت آن استفاده نمیکند. pool سایت دیگری را غیرفعال نکنید. متن پنل بعدی را در nano با Ctrl+O، Enter و Ctrl+X ذخیره کنید.
ترمینال Bash سرور وردپرس، حساب مدیر دارای sudo.
sudo nano /etc/php/8.5/fpm/pool.d/wordpress.conf
بررسی موفق است؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.
قدم بعدی
اجرای PHP با هویت اختصاصی
مسیر فایل باید متعلق به نسخهٔ انتخابشده باشد. نام سوکت ثابت است، اما مسیر و سرویس نسخهدار با سیستمعامل تغییر میکند. پنج worker و ۱۲۸ مگابایت نقطهٔ شروع آزمایش کوچکاند، نه تضمین ظرفیت تولید.
محتوای فایل؛ در فایل مشخصشده ذخیره شود، نه در پوسته.
[wordpress]
user = wp-php
group = wp-php
listen = /run/php/wordpress.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /var/www/wordpress
security.limit_extensions = .php
php_admin_value[upload_max_filesize] = 16M
php_admin_value[post_max_size] = 16M
php_admin_value[memory_limit] = 128M
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
pool با wp-php اجرا میشود و سوکت ۰۶۶۰ در اختیار www-data است.
قدم بعدی
اعتبارسنجی PHP پیش از restart
restart برای مدتی کوتاه همهٔ poolهای این نسخه را قطع میکند. پیش از آن، آزمون تنظیمات باید موفق شود.
ترمینال Bash سرور وردپرس، حساب مدیر دارای sudo.
(
set -euo pipefail
sudo php-fpm8.5 -t
sudo systemctl restart php8.5-fpm
systemctl is-active php8.5-fpm
sudo stat -c '%U:%G %a %n' /run/php/wordpress.sock
)
آزمون موفق است، سرویس فعال و سوکت www-data:www-data با مجوز ۶۶۰ است.
تولید مقادیر تصادفی احراز هویت
این فرمان خصوصی اجرا شود؛ خروجی در تصویر، گزارش یا Git قرار نگیرد. برای هر یک از هشت جایگاه بعدی، یک مقدار متفاوت بردارید.
ترمینال Bash سرور وردپرس، حساب مدیر دارای sudo.
for n in $(seq 1 8); do openssl rand -hex 48; done
بررسی موفق است؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.
ساخت فایل محافظتشدهٔ تنظیمات
این مرحله فقط برای نصب تازه است؛ guard فایل موجود را نمیپذیرد. روی سایت فعال تکرار نکنید. پنل بعدی محتوای فایل است و فرمان پوسته نیست.
ترمینال Bash سرور وردپرس، حساب مدیر دارای sudo.
(
set -euo pipefail
sudo test ! -e /var/www/wordpress/wp-config.php
sudo install -o root -g wp-php -m 0640 /dev/null /var/www/wordpress/wp-config.php
sudo nano /var/www/wordpress/wp-config.php
)
بررسی موفق است؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.
قدم بعدی
تنظیم اتصال وردپرس به دیتابیس
همهٔ جایگاهها و دو مقدار دامنه را عوض کنید. پیشوند جدول کنترل امنیتی نیست. TLS در همین Nginx پایان مییابد؛ به هدر دلخواه کاربر برای تشخیص HTTPS اعتماد نکنید. ویرایشگر کد پیشخوان خاموش است. کدهای متعلق به root به بهروزرسانی منظم مدیریتی نیاز دارند؛ برای رفع پیام بهروزرسانی، کل درخت را قابلنوشتن نکنید.
محتوای فایل؛ در فایل مشخصشده ذخیره شود، نه در پوسته.
<?php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wp_site' );
define( 'DB_PASSWORD', 'REPLACE_WITH_THE_DATABASE_PASSWORD' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );
// Replace every placeholder with a DIFFERENT local random value.
define( 'AUTH_KEY', 'REPLACE_1' );
define( 'SECURE_AUTH_KEY', 'REPLACE_2' );
define( 'LOGGED_IN_KEY', 'REPLACE_3' );
define( 'NONCE_KEY', 'REPLACE_4' );
define( 'AUTH_SALT', 'REPLACE_5' );
define( 'SECURE_AUTH_SALT', 'REPLACE_6' );
define( 'LOGGED_IN_SALT', 'REPLACE_7' );
define( 'NONCE_SALT', 'REPLACE_8' );
$table_prefix = 'wp_';
define( 'WP_HOME', 'https://blog.example.com' );
define( 'WP_SITEURL', 'https://blog.example.com' );
define( 'FORCE_SSL_ADMIN', true );
define( 'DISALLOW_FILE_EDIT', true );
define( 'WP_DEBUG', false );
if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); }
require_once ABSPATH . 'wp-settings.php';
بررسی موفق است؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.