آموزش نصب وردپرس روی اوبونتو 26.04 با LAMP Stack

مقدمه

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

این آموزش دقیقاً همین روش رو پوشش می‌ده: نصب و پیکربندی وردپرس با استفاده از LAMP Stack، یعنی ترکیب Linux (سیستم‌عامل)، Apache (وب‌سرور)، MySQL (پایگاه‌داده) و PHP (زبان برنامه‌نویسی سمت سرور). این مسیر چند قدم بیشتر از یه نصب آماده داره، اما در ازاش کنترل کامل روی محیط وردپرستون به دست میارید.

برای انجام این آموزش به یه سرور مجازی (VPS) نیاز دارید. می‌تونید از هر ارائه‌دهنده‌ی سروری که در دسترستونه استفاده کنید، مثلاً یه سرور مجازی ابری پارمین کلود.

این راهنما برای اوبونتو ۲۶.۰۴ LTS (کد نام Resolute Raccoon) نوشته شده که در حال حاضر آخرین نسخه‌ی LTS اوبونتوئه. اگه هنوز روی نسخه‌ی ۲۰.۰۴ یا ۲۲.۰۴ هستید، بدونید که این نسخه‌ها یا پشتیبانی استانداردشون تموم شده یا به‌زودی تموم می‌شه؛ برای سرورهای تازه بهتره از ۲۶.۰۴ (یا حداقل ۲۴.۰۴ که هنوز تحت پشتیبانیه) استفاده کنید.

پیش‌نیازها

قبل از شروع باید این موارد آماده باشن:

  • یه سرور اوبونتو ۲۶.۰۴ با یه کاربر sudo غیر از root.
  • LAMP Stack نصب‌شده روی سرور (Apache، MySQL یا معادل سازگارش، و PHP).
  • گواهی SSL/TLS برای سایت: اگه دامنه دارید بهترین گزینه Let’s Encrypt‌ه (رایگان و معتبر). اگه دامنه ندارید و فقط برای تست یا استفاده‌ی شخصیه، یه گواهی self-signed هم کفایت می‌کنه؛ رمزنگاریش مثل بقیه‌ست، فقط تاییدیه‌ی دامنه نداره.

با آماده بودن این موارد، به‌عنوان کاربر sudo وارد سرور بشید و بریم سراغ مرحله‌ی اول.

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

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

روی نصب استاندارد MySQL در اوبونتو، کاربر root پایگاه‌داده به‌صورت پیش‌فرض با روش auth_socket کار می‌کنه؛ یعنی احراز هویتش از طریق خود سیستم‌عامل انجام می‌شه و کافیه با sudo وارد بشید، بدون نیاز به پسورد جدا:

sudo mysql

اگه ترجیح می‌دید root یه پسورد اختصاصی هم داشته باشه (مثلاً برای اتصال از ابزارهای دیگه)، بعد از ورود این دستور رو بزنید (به‌جای new_password یه پسورد قوی بذارید):

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password';

نکته: نسخه‌های قدیمی‌تر MySQL معمولاً از پلاگین mysql_native_password استفاده می‌کردن. این پلاگین از MySQL 8.4 به بعد دیگه به‌صورت پیش‌فرض فعال نیست و در MySQL 9 کاملاً حذف شده، پس در این آموزش سراغ caching_sha2_password رفتیم که هم پیش‌فرضه و هم امن‌تره.

حالا دیتابیس اختصاصی وردپرس رو می‌سازیم (اسمش هرچی دوست دارید می‌تونه باشه؛ اینجا از wordpress استفاده می‌کنیم). از utf8mb4 هم استفاده می‌کنیم که پشتیبانی کامل یونیکد MySQLه و برای کاراکترهای فارسی و ایموجی گزینه‌ی درستیه:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

هر دستور MySQL باید با ; تموم بشه؛ اگه به خطایی خوردید اول همین رو چک کنید.

حالا یه یوزر جدا برای مدیریت این دیتابیس می‌سازیم (به‌جای wordpressuser هر اسمی می‌خواید بذارید، و به‌جای password یه پسورد قوی):

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

از localhost به‌جای % (یعنی هر هاست) استفاده کردیم، چون دیتابیس و اپلیکیشن روی یه سرور هستن و نیازی نیست از بیرون به دیتابیس وصل بشیم؛ این کار امنیت رو بالاتر می‌بره.

به این یوزر روی دیتابیس wordpress دسترسی کامل می‌دیم:

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';

تغییرات رو اعمال می‌کنیم:

FLUSH PRIVILEGES;

و از MySQL خارج می‌شیم:

EXIT;

مرحله ۲: نصب اکستنشن‌های اضافی PHP

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

با دستور زیر رایج‌ترین اکستنشن‌های موردنیاز وردپرس رو نصب می‌کنیم:

sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-imagick

هر پلاگین وردپرس ممکنه پکیج‌های خاص خودش رو بخواد؛ مستندات پلاگین رو چک کنید و در صورت نیاز با apt نصبش کنید.

بعد از نصب اکستنشن‌ها، آپاچی باید ری‌استارت بشه تا این تغییرات لود بشن. چون تو مرحله‌ی بعد هم تنظیمات آپاچی رو تغییر می‌دیم، می‌تونید صبر کنید و یک‌جا ری‌استارت کنید، یا همین الان انجامش بدید:

sudo systemctl restart apache2

مرحله ۳: تنظیم آپاچی برای فعال‌سازی .htaccess و Rewrite

فعال‌سازی override با .htaccess

به‌صورت پیش‌فرض استفاده از فایل‌های .htaccess در آپاچی غیرفعاله. وردپرس و خیلی از پلاگین‌هاش برای تنظیمات سطح دایرکتوری به این فایل‌ها نیاز دارن.

فایل تنظیمات سایتتون رو با یه ادیتور مثل nano باز کنید (مسیر و اسم فایل رو مطابق تنظیمات خودتون عوض کنید؛ اینجا wordpress.conf رو مثال زدیم):

sudo nano /etc/apache2/sites-available/wordpress.conf

داخل بلاک VirtualHost، این بخش رو اضافه کنید (مسیر document root رو مطابق سرور خودتون بذارید؛ اینجا /var/www/wordpress مثاله):

<Directory /var/www/wordpress/>
    AllowOverride All
</Directory>

فایل رو ذخیره و ببندید (در nano: اول Ctrl+X، بعد Y و در آخر Enter).

فعال‌سازی ماژول Rewrite

برای استفاده از پرمالینک‌های خوانا در وردپرس (مثلاً example.com/2026/post-name/ به‌جای آدرس‌های شلوغ با پارامتر)، باید ماژول mod_rewrite رو فعال کنیم:

sudo a2enmod rewrite

تست و اعمال تغییرات

قبل از اعمال نهایی، تنظیمات رو از نظر خطای نحوی چک کنید:

sudo apache2ctl configtest

ممکنه خروجی‌ای شبیه این ببینید:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

خط اول فقط یه هشدار درباره‌ی نبود ServerName تو تنظیمات کلیه و مشکلی برای عملکرد سایت ایجاد نمی‌کنه (اگه بخواید ساکتش کنید، یه خط ServerName با دامنه یا آی‌پی سرور به فایل /etc/apache2/apache2.conf اضافه کنید). مهم اینه که در خروجی Syntax OK رو ببینید.

حالا آپاچی رو ری‌استارت کنید تا همه‌ی تغییرات اعمال بشه:

sudo systemctl restart apache2

مرحله ۴: دانلود وردپرس

وقتشه خود وردپرس رو دانلود کنیم. برای امنیت بیشتر همیشه آخرین نسخه رو از سایت رسمی wordpress.org بگیرید.

به یه دایرکتوری قابل‌نوشتن مثل /tmp برید و فایل فشرده رو دانلود کنید:

cd /tmp
curl -O https://wordpress.org/latest.tar.gz

فایل رو باز کنید تا ساختار دایرکتوری وردپرس ساخته بشه:

tar xzvf latest.tar.gz

قبل از انتقال فایل‌ها، یه .htaccess خالی می‌سازیم که وردپرس بعداً ازش استفاده کنه:

touch /tmp/wordpress/.htaccess

فایل نمونه‌ی تنظیمات رو هم کپی می‌کنیم به اسمی که وردپرس واقعاً می‌خونتش:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

دایرکتوری upgrade رو هم از قبل می‌سازیم تا وردپرس موقع آپدیت خودکار به مشکل دسترسی نخوره:

mkdir /tmp/wordpress/wp-content/upgrade

حالا کل محتوای این دایرکتوری (شامل فایل‌های مخفی مثل همون .htaccess) رو به document root سایت منتقل می‌کنیم. نقطه‌ی انتهای مسیر مبدأ یعنی «همه‌چیز داخل این دایرکتوری»:

sudo cp -a /tmp/wordpress/. /var/www/wordpress

مسیر /var/www/wordpress رو با دایرکتوری واقعی سروری که تنظیم کردید جایگزین کنید.

مرحله ۵: تنظیم دایرکتوری وردپرس

تنظیم مالکیت و دسترسی فایل‌ها

باید مالکیت فایل‌ها رو به کاربر و گروه www-data بدیم؛ این همون کاربریه که آپاچی باهاش اجرا می‌شه و باید بتونه فایل‌های وردپرس رو برای سرو کردن سایت و انجام آپدیت‌های خودکار بخونه و بنویسه:

sudo chown -R www-data:www-data /var/www/wordpress

بعد با دو دستور find، دسترسی مناسب رو روی دایرکتوری‌ها و فایل‌ها تنظیم می‌کنیم:

sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

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

تنظیم فایل wp-config.php

اولین کار تو این فایل، گذاشتن کلیدهای امنیتی (secret keys) هست. وردپرس یه ابزار آنلاین برای تولید این مقادیر داره تا لازم نباشه خودتون یه چیز پیچیده بسازید. این کلیدها فقط داخلی استفاده می‌شن، پس مشکلی نداره پیچیده و کاملاً تصادفی باشن:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

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

مقادیری که گرفتید رو کپی کنید، بعد فایل تنظیمات وردپرس رو باز کنید:

sudo nano /var/www/wordpress/wp-config.php

بخشی که این شکلیه رو پیدا کنید:

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

و کل این بخش رو با خروجی‌ای که از دستور curl گرفتید جایگزین کنید.

بعد باید تنظیمات اتصال به دیتابیس رو هم وارد کنیم؛ اسم دیتابیس، یوزرنیم و پسوردی که تو مرحله‌ی ۱ ساختیم:

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wordpressuser' );
define( 'DB_PASSWORD', 'password' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

یه تنظیم دیگه هم لازمه: چون از قبل به آپاچی اجازه‌ی نوشتن روی فایل‌های وردپرس رو دادیم، می‌تونیم متد فایل‌سیستم رو صراحتاً روی direct بذاریم. اگه این رو تنظیم نکنیم، وردپرس موقع بعضی عملیات‌ها (مثل نصب پلاگین) از شما اطلاعات FTP می‌خواد که اصلاً نیازی بهش نداریم:

define('FS_METHOD', 'direct');

این خط رو می‌تونید زیر تنظیمات دیتابیس یا هرجای دیگه‌ی فایل اضافه کنید. فایل رو ذخیره و ببندید.

مرحله ۶: تکمیل نصب از طریق مرورگر

با تنظیمات سمت سرور تموم‌شده، بقیه‌ی نصب رو از طریق مرورگر انجام می‌دیم.

آدرس دامنه یا آی‌پی سرورتون رو تو مرورگر باز کنید:

https://server_domain_or_IP

اول زبان موردنظرتون رو انتخاب می‌کنید (فارسی هم بین گزینه‌هاست). بعد به صفحه‌ی اصلی تنظیمات می‌رسید و باید این موارد رو مشخص کنید:

  • اسم سایت
  • یوزرنیم ادمین — بهتره از چیزی غیر از admin استفاده کنید، برای امنیت بیشتر
  • پسورد — یه پسورد قوی به‌صورت خودکار پیشنهاد می‌شه؛ همون رو نگه دارید یا یه پسورد قوی دیگه انتخاب کنید و حتماً جایی امن ذخیره‌اش کنید
  • ایمیل و مشخص کردن اینکه آیا می‌خواید موتورهای جستجو فعلاً از ایندکس کردن سایت منصرف بشن یا نه

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

جمع‌بندی

تبریک می‌گم، وردپرس نصب شد و آماده‌ی استفاده‌ست! چند قدم پیشنهادی برای بعد:

  • تنظیم پرمالینک‌ها از مسیر Settings > Permalinks
  • انتخاب قالب جدید از Appearance > Themes
  • نصب پلاگین‌های موردنیاز از Plugins > Add New
  • اگه قراره با تیم یا نویسنده‌های دیگه کار کنید، اضافه‌کردن کاربر جدید از Users > Add New

نکته‌ی تکمیلی برای کاربران پارمین کلود

اگه علاوه بر این نصب مستقیم، پروژه‌های دیگه‌ای هم دارید که از Docker یا پکیج‌منیجرهایی مثل npm، pip یا Composer استفاده می‌کنن، پارمین کلود میرورهای داخلی برای این‌ها هم ارائه می‌ده (نصب داکر، رجیستری‌های ایمیج، و مخزن‌های npm/PyPI/Composer) که می‌تونه سرعت دسترسی رو روی سرورهای پارمین کلود بهتر کنه. چون این آموزش مشخص از Docker یا این پکیج‌منیجرها استفاده نمی‌کنه، جزئیاتشون رو اینجا نیاوردیم؛ اگه بخواید یه نسخه‌ی جایگزین از همین راهنما با استقرار وردپرس روی Docker (به‌جای LAMP مستقیم) و با استفاده از این میرورها آماده کنم، خبر بدید.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

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

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