learn

نصب وردپرس با Nginx روی اوبونتو؛ تنظیم PHP-FPM و دامنه

راهنمای نصب تک‌سایتی وردپرس روی Nginx و PHP-FPM با مسیرهای هماهنگ و بررسی نتیجه پیش از راه‌اندازی عمومی.

نصب وردپرس با Nginx به اتصال درست وب‌سرور به PHP-FPM نیاز دارد؛ Nginx به‌تنهایی کد PHP را اجرا نمی‌کند. این راهنما برای سرور تازهٔ Ubuntu 24.04 LTS با بسته‌های رسمی و وردپرس تک‌سایتی است، نه جایگزینی تنظیمات سرور فعال یا Multisite.

example.com و مسیرهای نمونه را با محیط خود تطبیق دهید. داشتن Nginx به‌تنهایی سرعت یا ظرفیت مشخصی را تضمین نمی‌کند؛ منابع، PHP، دیتابیس، کش و حجم درخواست‌ها هم مؤثرند.

۱. پیش‌نیاز نصب وردپرس با Nginx

دامنه باید به سرور اشاره کند و دسترسی مجاز sudo داشته باشید. نسخه‌ها را با نیازمندی وردپرس تطبیق دهید. در Ubuntu 24.04 شاخهٔ PHP مخزن پایه 8.3 است؛ apt الزاماً جدیدترین نسخهٔ منتشرشدهٔ PHP در جهان را نصب نمی‌کند.

sudo apt update
sudo apt install nginx mysql-server php-fpm php-cli php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip curl
sudo systemctl status nginx mysql php8.3-fpm --no-pager
ls /run/php/

نام سرویس و سوکت را از نصب واقعی بررسی کنید. مخلوط‌کردن نام php8.2-fpm با سوکت php8.1-fpm علت رایج خطای اتصال است. اگر وب‌سرور دیگری پورت را گرفته، بدون بررسی سایت‌های آن سرویس را متوقف نکنید.

۲. فایل‌ها و دیتابیس

بستهٔ رسمی وردپرس را در پوشهٔ کاری خالی دریافت و فقط در مسیر خالیِ همین نصب تازه استخراج کنید:

curl --fail --location --output wordpress.tar.gz https://wordpress.org/latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo tar -xzf wordpress.tar.gz --strip-components=1 -C /var/www/example.com
ls /var/www/example.com/index.php

در MySQL محلی، با روش ورود مجاز محیط، مثلاً sudo mysql در نصب تازهٔ معمول اوبونتو، دیتابیس و کاربر اختصاصی بسازید. نمونهٔ زیر را فقط پس از جایگزینی رمز با مقدار طولانی و یکتا اجرا کنید:

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'REPLACE_WITH_A_LONG_UNIQUE_PASSWORD';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
EXIT;

جزئیات مجوز در مستند حساب‌های MySQL آمده است. سپس در مسیر نصب، فایل نمونهٔ تنظیمات را به wp-config.php کپی و ثابت‌های موجود را اصلاح کنید:

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'REPLACE_WITH_THE_DATABASE_PASSWORD' );
define( 'DB_HOST', 'localhost' );

کلیدها و saltهای یکتا و سایر مراحل را با راهنمای نصب وردپرس تکمیل کنید. رمز نمونه، رمز واقعی نیست و نباید بدون تغییر استفاده شود.

۳. مالکیت و مجوزها

کاربر وب‌سرور در همهٔ توزیع‌ها nginx نیست. کاربر worker و pool مربوط به PHP-FPM را بررسی کنید؛ بسته‌های معمول اوبونتو از www-data استفاده می‌کنند. فایل‌ها باید برای پردازش لازم خواندنی و فقط پوشه‌های مورد نیاز، مانند uploads، قابل‌نوشتن باشند.

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

۴. پیکربندی Nginx و PHP-FPM

فایل /etc/nginx/sites-available/example.com را بسازید. نمونهٔ زیر برای آزمون اولیهٔ HTTP است؛ سوکت و root را با فایل‌های واقعی تطبیق دهید:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location = /wp-config.php {
        deny all;
    }
    location ^~ /.well-known/acme-challenge/ {
        default_type text/plain;
        try_files $uri =404;
    }
    location ~ /\. {
        deny all;
    }
    location ~* ^/wp-content/uploads/.*\.php$ {
        deny all;
    }
    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

این نمونه فایل PHP ناموجود را به اجراکننده نمی‌فرستد و مسیر اسکریپت را با root هماهنگ می‌کند. استثنای /.well-known/acme-challenge/ برای روش HTTP-01 در نظر گرفته شده است؛ محل نوشتن فایل چالش در ابزار صدور باید با همین ریشه هماهنگ باشد.

قواعد وردپرس روی Nginx در پیکربندی سرور قرار می‌گیرند؛ Nginx فایل .htaccess را نمی‌خواند. سایت را فقط یک‌بار فعال و سپس نحو را بررسی کنید:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo nginx -t

اگر پیوند از قبل وجود دارد، همان تنظیم را بررسی کنید؛ آن را تکراری نسازید. پس از آزمون موفق، sudo systemctl reload nginx را اجرا کنید. راهنمای Nginx تفاوت بارگذاری تنظیم و توقف سرویس را توضیح می‌دهد.

۵. HTTPS، نصب و رفع خطا

پیش از واردکردن اطلاعات مدیر در اینترنت عمومی، گواهی معتبر و پیکربندی HTTPS را برقرار کنید. مسیر گواهی و کلید خصوصی باید واقعی و قابل‌خواندن برای سرویس مجاز باشد. نصب را از دامنهٔ HTTPS کامل و تمدید گواهی را بررسی کنید.

  • خطای 502: وضعیت PHP-FPM، سوکت و مجوز اتصال را بررسی کنید.
  • خطای اتصال دیتابیس: حساب، رمز، نام و میزبان دیتابیس را تطبیق دهید.
  • 404 در نوشته‌ها: root و try_files را بررسی کنید.
  • خطای آپلود: مجوز پوشه و محدودیت‌های PHP و Nginx را با نیاز واقعی هماهنگ کنید؛ مقدار بزرگ دلخواه راه‌حل عمومی نیست.

در پایان ورود، نوشتهٔ دارای پیوند یکتا، رسانه و ایمیل را بیازمایید. فایل‌های تشخیصی عمومی را حذف و برنامهٔ به‌روزرسانی و بازیابی را مشخص کنید.

مطالعهٔ مرتبط

بازبینی فنی: ۱۳ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شده‌اند.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب