برای نصب وردپرس با LEMP، ابتدا Nginx، MySQL یا MariaDB و PHP-FPM سازگار را نصب کنید؛ سپس دیتابیس بسازید، فایلهای رسمی وردپرس را قرار دهید و Server Block مخصوص وردپرس را تنظیم کنید. این راهنما ادامه دو بخش نصب عمومی LEMP است و روی نیازهای اختصاصی وردپرس تمرکز دارد.
انتخاب نسخه و محیط
وردپرس PHP 8.3 یا بالاتر، MySQL 8.0 یا MariaDB 10.11 یا بالاتر و HTTPS را توصیه میکند. در Ubuntu 22.04 بسته پیشفرض PHP ممکن است این توصیه را پوشش ندهد. اگر سرور تازه میسازید، محیط تحت پشتیبانی با پشته سازگار مانند Ubuntu 24.04 را بررسی کنید؛ برای سرور موجود، ارتقای جداگانه و تست سازگاری لازم است.
این آموزش برای نصب بدون کنترلپنل و یک سایت نمونه است. اگر cPanel یا پنل دیگری دارید، از ابزار نصب و انتخاب PHP همان پنل استفاده کنید. نصب موازی دستی میتواند با تنظیمات آن تداخل پیدا کند.
۱. extensionهای PHP و دیتابیس
sudo apt update
sudo apt install php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip
sudo mysql
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'REPLACE_WITH_UNIQUE_PASSWORD';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
EXIT;
پس از افزودن extension، FPM نسخه دامنه را reload کنید. اگر چند نسخه PHP دارید، نام بستههای نسخه هدف را صریح انتخاب کنید.
۲. دریافت فایلهای رسمی
بسته را فقط از wordpress.org دریافت و در پوشه مستقل /var/www/example.com/public استخراج کنید. هسته باید مستقیماً در public قرار گیرد و نه در پوشه اضافی wordpress. نسخه دانلود و زمان آن را در سوابق استقرار ثبت کنید.
پیش از اجرای نصب وب، wp-config-sample.php را به wp-config.php کپی، اطلاعات دیتابیس و کلیدهای امنیتی یکتا را وارد کنید. حساب دیتابیس وردپرس نباید root باشد. مالکیت و دسترسی فایلها را متناسب با کاربر FPM تنظیم کنید؛ در نمونه تکسایتی، FPM معمولاً www-data است.
۳. Server Block مناسب وردپرس
در فایل دامنه از الگوی زیر استفاده کنید و سوکت را با محیط واقعی تطبیق دهید:
server {
listen 80;
server_name example.com;
root /var/www/example.com/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location = /wp-config.php { deny all; }
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\. { deny all; }
}
قانون منع PHP در uploads باید قبل از location عمومی PHP باشد. این الگو برای نصب تکسایتی است؛ Multisite، زیرپوشه و برنامههای اختصاصی به تنظیم متفاوت نیاز دارند. فایلهای بکاپ، ZIP و SQL را داخل public نگه ندارید؛ این الگو تضمین حفاظت از هر فایل پشتیبان دلخواه نیست.
sudo nginx -t
sudo systemctl reload nginx
در این نمونه، قانون فایلهای نقطهدار مسیر /.well-known/ را هم میبندد. اگر ابزار گواهی از HTTP-01 استفاده میکند، استثنای دقیق challenge را مطابق مستندات همان ابزار و پیش از قاعده منع تنظیم کنید؛ HTTPS را بدون آزمون تمدید تحویل ندهید.
۴. HTTPS و نصب وب
گواهی TLS را قبل از ورود اطلاعات مدیر آماده کنید. نام سایت، کاربر مدیریتی یکتا و ایمیل معتبر را وارد کنید. برای محیط آزمایشی محدودیت دسترسی و noindex در نظر بگیرید؛ در زمان انتشار، تنظیمات محیط آزمایشی باید بازبینی شوند.
۵. آزمون کامل وردپرس
- یک پیشنویس بسازید و پیشنمایش را ببینید.
- تصویر بارگذاری و ساخت اندازههای بندانگشتی را بررسی کنید.
- ساختار پیوند یکتا را ذخیره و یک مسیر مقاله را باز کنید.
- یک URL ناموجود را تست کنید تا 404 واقعی برگردد.
- ورود، خروج، ایمیل و cron را آزمایش کنید.
- بکاپ فایل و دیتابیس را روی مقصد جدا ذخیره و بازیابی را تست کنید.
چرا مقالهها 404 میدهند؟
اگر صفحه اصلی باز است ولی پیوند مقالهها نه، try_files، مسیر نصب و Server Block انتخابشده را ببینید. ذخیره permalink قواعد Nginx را خودکار ویرایش نمیکند. فایل .htaccess نیز در Nginx اجرا نمیشود.
چرا تصویر بزرگ آپلود نمیشود؟
محدودیت Nginx با client_max_body_size، تنظیمات upload_max_filesize و post_max_size در PHP و فضای دیسک را با هم بررسی کنید. افزایش همه مقدارها بدون نیاز مشخص، راهحل مناسبی نیست.
پس از تست، قالبها و افزونههای اضافی را حذف و دسترسی نوشتن را به مسیرهای لازم محدود کنید. برای نگهداری بلندمدت، برنامه وصله، پایش لاگ و بکاپ از خود مرحله نصب مهمتر است.
منابع رسمی
بازبینی منابع: ۱۸ اکتبر ۲۰۲۶.