نصب وردپرس روی اوبونتو با Nginx و MariaDB

برای نصب وردپرس روی اوبونتو به یک پشته وب نیاز دارید: وب‌سرور (Nginx یا Apache)، PHP و دیتابیس MySQL یا MariaDB. مراحل کلی این است: نصب پشته، ساخت دیتابیس و کاربر، دانلود وردپرس از سایت رسمی، ساخت فایل wp-config.php، تنظیم وب‌سرور و در آخر اجرای نصب‌کننده در مرورگر. این راهنما از Nginx، PHP-FPM و MariaDB استفاده می‌کند که ترکیب معروف LEMP است.

دستورها برای Ubuntu 22.04 و 24.04 هستند. اگر پشته آماده دارید، می‌توانید از مرحله دانلود وردپرس شروع کنید. برای انتخاب بین هاست و سرور مجازی برای این سایت، هاست وردپرس را ببینید.

پیش از نصب وردپرس روی اوبونتو

  • دامنه با رکورد A به IP سرور اشاره کند. شرط گرفتن SSL هم همین است.
  • با کاربر دارای sudo وارد شوید و فایروال را فقط برای پورت‌های لازم باز بگذارید.
  • از سرور بکاپ یا اسنپ‌شات داشته باشید، مخصوصاً اگر سایت دیگری هم روی آن اجرا می‌شود.

مرحله اول: نصب Nginx، PHP و MariaDB

sudo apt update
sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-imagick

بسته‌های php-curl، php-gd، php-mbstring، php-xml و php-zip افزونه‌هایی‌اند که وردپرس و بیشتر افزونه‌ها به آن‌ها نیاز دارند. نسخه PHP را ببینید، چون در کانفیگ Nginx لازم می‌شود:

php -v

بعد دیتابیس را امن کنید: sudo mariadb-secure-installation. جزئیات امن‌سازی دیتابیس در مقاله‌های مربوط به MySQL آمده و ایده‌اش این است که کاربر ناشناس و دیتابیس آزمایشی پاک شود و ورود root از راه دور بسته باشد.

مرحله دوم: ساخت دیتابیس و کاربر

برای وردپرس یک دیتابیس و کاربر مخصوص بسازید. نام‌ها و رمز را عوض کنید:

sudo mariadb
CREATE DATABASE wpsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON wpsite.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

مجموعه کاراکتر utf8mb4 فارسی و نمادها را درست ذخیره می‌کند.

مرحله سوم: دانلود برای نصب وردپرس روی اوبونتو

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo rsync -a wordpress/ /var/www/example.com/
sudo chown -R www-data:www-data /var/www/example.com

فایل را فقط از wordpress.org بگیرید. نسخه‌های دستکاری‌شده یا قالب‌ها و افزونه‌های کرک‌شده از رایج‌ترین راه‌های هک سایت‌اند؛ پیامد آن در رفع هک و پاک‌سازی مالور توضیح داده شده است.

مرحله چهارم: فایل wp-config.php

cd /var/www/example.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

این چهار مقدار را با اطلاعات دیتابیس بسازید:

define( 'DB_NAME', 'wpsite' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'STRONG_PASSWORD' );
define( 'DB_HOST', 'localhost' );

کلیدها و Saltهای امنیتی را هم عوض کنید. مقدارهای تازه را از آدرس https://api.wordpress.org/secret-key/1.1/salt/ بگیرید و جای خط‌های نمونه بگذارید. این کار نشست‌های ورود قدیمی را بی‌اعتبار می‌کند و برای سایت جدید لازم است.

مرحله پنجم: Server Block در Nginx

فایل /etc/nginx/sites-available/example.com را با این محتوا بسازید. مسیر سوکت PHP را با نسخه خودتان تطبیق دهید:

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

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

بعد سایت را فعال و Nginx را reload کنید:

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

توضیح بیشتر درباره ساخت Server Block در نصب Nginx روی اوبونتو آمده است.

مرحله ششم: اجرای نصب‌کننده

آدرس دامنه را در مرورگر باز کنید. صفحه نصب وردپرس زبان، عنوان سایت، نام کاربری مدیر و رمز را می‌پرسد. نام کاربری admin را انتخاب نکنید و رمز قوی بگذارید، چون ورود به wp-login.php هدف دائمی حدس رمز است. بعد از نصب، وارد پیشخوان شوید و در بخش تنظیمات، پیوندهای یکتا را روی «نام نوشته» بگذارید.

فعال کردن HTTPS

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

بعد از صدور گواهی، آدرس سایت را در پیشخوان وردپرس، بخش تنظیمات عمومی، با https بنویسید. روش‌های دیگر در نصب SSL رایگان آمده است.

تنظیمات PHP برای وردپرس

مقدار پیش‌فرض آپلود در PHP کم است. در فایل /etc/php/8.3/fpm/php.ini (شماره نسخه را عوض کنید):

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120

بعد sudo systemctl restart php8.3-fpm را بزنید. در Nginx هم مقدار client_max_body_size 64M; را به بلوک server اضافه کنید، وگرنه آپلود فایل بزرگ خطای 413 می‌دهد.

بعد از نصب

  • افزونه‌ها و قالب‌هایی را که لازم ندارید حذف کنید و بقیه را به‌روز نگه دارید.
  • ویرایش فایل از داخل پیشخوان را با define( 'DISALLOW_FILE_EDIT', true ); در wp-config.php ببندید.
  • بکاپ خودکار از فایل‌ها و دیتابیس بگیرید؛ روش بکاپ دیتابیس در بکاپ گرفتن از دیتابیس MySQL آمده است.
  • اگر سایت را از هاست دیگری می‌آورید، مراحل در انتقال سایت وردپرس به هاست جدید هست.

خطاهای رایج

نشانهعلت و راه حل
Error establishing a database connectionاطلاعات wp-config.php اشتباه است یا سرویس دیتابیس خاموش است
صفحه سفید یا خطای 500خطای PHP؛ لاگ خطا و WP_DEBUG_LOG را ببینید
502 Bad Gatewayسوکت PHP-FPM اشتباه است یا سرویس خاموش است؛ خطای 502 Bad Gateway را ببینید
آپلود فایل خطای 413 می‌دهدclient_max_body_size را در Nginx بالا ببرید
لینک‌های یکتا خطای 404 می‌دهندtry_files در Nginx یا rewrite در Apache تنظیم نشده

سوالات متداول

برای وردپرس MySQL بهتر است یا MariaDB؟

هر دو پشتیبانی می‌شوند و با هم سازگارند. انتخاب معمولاً به توزیع و عادت تیم بستگی دارد.

چرا نصب‌کننده خودش wp-config.php را نمی‌سازد؟

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

آیا باید پوشه وردپرس را در ریشه وب‌سرور بگذارم؟

نه لزوماً. می‌توانید آن را در زیرپوشه هم نصب کنید. برای سایت اصلی دامنه معمولاً ریشه سایت درست‌ترین انتخاب است.

چطور بفهمم نسخه PHP کدام باشد؟

آخرین نسخه‌ای که قالب و افزونه‌هایتان با آن سازگارند و هنوز وصله امنیتی می‌گیرد. نسخه توزیع معمولاً انتخاب ایمن‌تری است.

منابع

پاسخی بگذارید

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