نصب WordPress روی VPS با LEMP
وردپرس روی سرور خودتان یعنی کنترل کامل روی منابع، افزونهها و نسخهی PHP، بدون محدودیتهای هاست اشتراکی. در این آموزش وردپرس را روی پشتهی LEMP نصب میکنید: Linux (اوبونتو)، Engine-X (Nginx)، MariaDB و PHP-FPM.
اگر نمیخواهید سرور را خودتان مدیریت کنید، هاستینگ آریانت گزینهی سادهتری برای یک سایت وردپرسی است.
پیشنیازها
- یک سرور ابری یا VPS با Ubuntu 24.04، دستکم ۱ گیگابایت رم، و کاربر sudo (اولین اتصال SSH و امنسازی)
- یک دامنه با رکورد A (و در صورت وجود AAAA) به IP سرور
- پورتهای ۸۰ و ۴۴۳ باز در فایروال ابر و ufw
در دستورها example.com را با دامنهی خودتان عوض کنید.
اوبونتو ۲۴.۰۴ PHP 8.3 و اوبونتو ۲۲.۰۴ PHP 8.1 دارد. روی 22.04 در مسیرها و نام سرویسها 8.3 را با 8.1 عوض کنید (مثلاً php8.1-fpm و /run/php/php8.1-fpm.sock).
۱. نصب Nginx، MariaDB و PHP
sudo apt update
sudo apt install -y nginx mariadb-server \
php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip php-imagick
sudo ufw allow 'Nginx Full'
نسخهی PHP و سرویس آن را بررسی کنید:
php -v
systemctl is-active php8.3-fpm mariadb nginx
۲. امنسازی MariaDB
sudo mariadb-secure-installation
در اوبونتو، root پایگاه داده با socket سیستمعامل وارد میشود و رمز لازم ندارد. برای رمز فعلی فقط Enter بزنید، به Switch to unix_socket authentication و Change the root password پاسخ n بدهید (ورود با socket همین حالا فعال است) و به پرسشهای بعدی (حذف کاربر ناشناس، بستن ورود root از راه دور، حذف پایگاه دادهی test و بارگذاری دوبارهی دسترسیها) Y بدهید.
۳. ساخت پایگاه داده و کاربر
رمز را با یک رمز قوی عوض کنید:
sudo mariadb <<'SQL'
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'CHANGE-ME-strong-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
SQL
۴. دانلود WordPress
cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo cp -a /tmp/wordpress/. /var/www/example.com/
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
مالکیت www-data لازم است تا وردپرس بتواند wp-config.php را بسازد و افزونهها و بهروزرسانیها را بدون FTP نصب کند.
۵. تنظیم Nginx
sudo tee /etc/nginx/sites-available/example.com > /dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html;
client_max_body_size 64M;
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;
}
location ~* \.(css|js|gif|ico|jpe?g|png|svg|webp|woff2?)$ {
expires 30d;
access_log off;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
۶. حجم آپلود PHP
پیشفرض PHP برای آپلود ۲ مگابایت است. آن را با client_max_body_size بالا هماهنگ کنید:
sudo tee /etc/php/8.3/fpm/conf.d/99-wordpress.ini > /dev/null <<'EOF'
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
EOF
sudo systemctl restart php8.3-fpm
۷. گواهی SSL
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com --redirect --agree-tos -m you@example.com
جزئیات و تمدید خودکار در Nginx و گواهی رایگان Let's Encrypt.
۸. نصب از مرورگر
https://example.com را باز کنید، زبان را انتخاب کنید و اطلاعات پایگاه داده را وارد کنید:
| فیلد | مقدار |
|---|---|
| نام پایگاه داده | wordpress |
| نام کاربری | wpuser |
| رمز | رمزی که در مرحلهی ۳ گذاشتید |
| میزبان پایگاه داده | localhost |
| پیشوند جدول | wp_ (یا هر پیشوند دلخواه) |
وردپرس wp-config.php را با کلیدهای امنیتی تصادفی میسازد. سپس عنوان سایت، نام کاربری مدیر (از admin استفاده نکنید)، رمز قوی و ایمیل را وارد کنید.
بررسی نهایی
curl -sI https://example.com | head -n 1 # HTTP/2 200 or HTTP/1.1 200
curl -sI https://example.com/wp-login.php | head -n 1
sudo -u www-data test -w /var/www/example.com/wp-content && echo writable
در پیشخوان وردپرس، «ابزارها ← سلامت سایت» باید بدون خطای بحرانی باشد.
خطاهای رایج
| خطا | راهحل |
|---|---|
502 Bad Gateway | مسیر socket در fastcgi_pass با نسخهی PHP نمیخواند. ls /run/php/ را ببینید و مسیر را اصلاح کنید. |
Error establishing a database connection | نام پایگاه داده، کاربر یا رمز در wp-config.php اشتباه است، یا MariaDB خاموش است: systemctl status mariadb. |
413 Request Entity Too Large | client_max_body_size در Nginx کوچک است. |
The uploaded file exceeds the upload_max_filesize directive | مرحلهی ۶ را انجام دهید و php8.3-fpm را ریاستارت کنید. |
| وردپرس برای نصب افزونه اطلاعات FTP میخواهد | مالکیت فایلها www-data نیست؛ دستور chown مرحلهی ۴ را دوباره اجرا کنید. |
| ایمیلهای وردپرس نمیرسند | از یک افزونهی SMTP با سرویس ایمیل و پورت ۵۸۷ یا ۴۶۵ استفاده کنید. در VPS آریانت پورت ۲۵ بهطور پیشفرض بسته است. |
نگهداری
- پیش از بهروزرسانی هسته، قالب یا افزونههای مهم یک اسنپشات بگیرید.
- از پایگاه داده نسخهی پشتیبان منظم بگیرید:
sudo mariadb-dump wordpress | gzip > wordpress-$(date +%F).sql.gz - برای رسانههای حجیم یک دیسک جدا وصل کنید.
قدم بعدی
- اسنپشات، پشتیبانگیری و بازگردانی
- لود بالانسر ابر آریانت جلوی دو وب سرور
- تنظیم swap، timezone و hostname
سرور خود را بسازید
وردپرس خود را روی سرور خودتان و با منابع اختصاصی اجرا کنید. در پنل آریانت یک سرور ابری («سرور ابری / Cloud Computing ← سرور جدید») یا یک سرور مجازی با Ubuntu 24.04 بسازید و با پشتیبانگیری خودکار از سایت محافظت کنید.