آموزش نصب وردپرس (WordPress) روی CentOS 7
پیش از شروع بخوانید: اگر دنبال «نصب وردپرس روی CentOS 7» بودید و به این صفحه رسیدید، باید بدانید که آن مسیر امروز دیگر قابل اجرا نیست. CentOS 7 در ۳۰ ژوئن ۲۰۲۴ به پایان عمر پشتیبانی رسید، مخازن بستههای آن به بایگانی منتقل شدند و روی یک نصب استاندارد، همان اولین دستور نصب هم با خطا متوقف میشود. خط تولید CentOS Linux به کلی کنار گذاشته شده است.
بنابراین این آموزش بازنویسی شده و روی AlmaLinux 9 تمرکز دارد؛ توزیع رایگان و سازگار با Red Hat که امروز مقصد طبیعی مهاجرت کاربران CentOS است. همهی دستورها با dnf نوشته شدهاند. همین مراحل روی Rocky Linux 9 هم بدون تغییر جواب میدهد و اگر روی Ubuntu LTS کار میکنید، منطق یکسان است ولی نام بستهها فرق دارد.
وردپرس چیست؟
وردپرس (WordPress) یک سیستم مدیریت محتوای متنباز است که با زبان PHP نوشته شده و دادههای خود را در پایگاه دادهی MySQL یا MariaDB نگه میدارد. این پروژه در سال ۲۰۰۳ به عنوان یک ابزار سادهی وبلاگنویسی آغاز شد و به تدریج به پرکاربردترین سیستم مدیریت محتوای جهان تبدیل شد. اکوسیستم گستردهای از افزونهها و قالبها پیرامون آن شکل گرفته است که تقریباً هر نیازی، از فروشگاه اینترنتی تا سایت خبری، را پوشش میدهد.

پیشنیازهای نصب وردپرس
پیش از شروع مراحل، این موارد باید آماده باشد:
- یک سرور با AlmaLinux 9 و دسترسی SSH با کاربر
rootیا کاربری با اجازهیsudo. - بستهی LAMP یعنی Apache، MariaDB و PHP روی سرور نصب و فعال باشد. اگر هنوز این کار را نکردهاید، آموزش بهروز نصب LAMP را دنبال کنید که آن هم برای AlmaLinux 9 بازنویسی شده است.
- یک دامنه که رکورد A آن به آیپی سرور اشاره کند. بدون این کار نمیتوانید گواهی SSL بگیرید.
اگر ترجیح میدهید اصلاً درگیر خط فرمان نشوید، هاست وردپرس ایران همین محیط را آماده تحویل میدهد و نصب در آن با چند کلیک انجام میشود. اما اگر میخواهید کنترل کامل روی سرور داشته باشید، ادامهی مقاله دقیقاً برای شماست.
افزونههای PHP مورد نیاز وردپرس
پیش از هر چیز مطمئن شوید افزونههای لازم نصباند. در نسل جدید سیستم عامل، بستهی قدیمی php-mysql دیگر وجود ندارد و جای آن را php-mysqlnd گرفته است. این یکی از رایجترین دلایل شکست آموزشهای قدیمی است:
sudo dnf install php-mysqlnd php-gd php-mbstring php-xml php-intl php-zip -y
پس از نصب، با دستور زیر میتوانید فهرست افزونههای فعال را ببینید و مطمئن شوید چیزی جا نمانده است:
php -m
نکتهی حیاتی دیگر: در AlmaLinux 8 و ۹ ماژول mod_php حذف شده و PHP به صورت سرویس جداگانهی php-fpm اجرا میشود. پس از نصب افزونهها، سرویسها را بازخوانی کنید:
sudo systemctl restart php-fpm
sudo systemctl restart httpd
مرحلهی اول: دانلود وردپرس
ابتدا به یک مسیر موقت بروید و آخرین نسخهی وردپرس را دریافت کنید:
cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
اگر ابزار curl را ندارید یا به wget عادت دارید، این هم کار میکند:
sudo dnf install wget -y
wget https://wordpress.org/latest.tar.gz
توجه کنید که نشانی دانلود را با https نوشتهایم، نه http. دانلود هستهی سایت روی یک اتصال رمزنگارینشده کار درستی نیست.

حالا بسته را از حالت فشرده خارج کنید:
tar -xzvf latest.tar.gz
پس از این کار، پوشهای به نام wordpress در مسیر جاری ساخته میشود که همهی فایلهای هسته در آن قرار دارد.
مرحلهی دوم: ساخت پایگاه داده و کاربر
وردپرس برای ذخیرهی مطالب، تنظیمات و کاربران به یک پایگاه داده نیاز دارد. وارد کنسول MariaDB شوید. توجه کنید که در نسخههای امروزی، کاربر root پایگاه داده با روش unix_socket احراز هویت میشود، بنابراین کافی است با sudo وارد شوید و رمزی از شما پرسیده نمیشود:
sudo mariadb
حالا سه کار انجام میدهیم: ساخت پایگاه داده، ساخت کاربر با رمز، و اعطای دسترسی به همان پایگاه داده.
پایگاه داده را بسازید
CREATE DATABASE wordpress1 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
افزودن utf8mb4 اختیاری به نظر میرسد اما نیست. این مجموعهکاراکتر است که باعث میشود متن فارسی و ایموجی بدون تبدیل شدن به علامت سؤال ذخیره شوند. آموزشهای قدیمی این بخش را نداشتند و نتیجهاش سایتهایی بود که محتوای فارسیشان خراب میشد.

کاربر بسازید و رمز بگذارید
اینجا مهمترین تفاوت با آموزشهای قدیمی است. در گذشته کاربر را بدون رمز میساختند و بعد با تابع PASSWORD() یا با GRANT ... IDENTIFIED BY رمز را تنظیم میکردند. هر دو روش امروز منسوخاند؛ تابع PASSWORD() در MySQL 8 به کلی حذف شده و ترکیب اعطای دسترسی با تعیین رمز هم دیگر پذیرفته نمیشود. روش درست، ساخت کاربر همراه با رمز در یک دستور است:
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
به جای مقدار نمونه، یک رمز عبور واقعاً قوی بگذارید. رمزهایی از جنس نمونههای آموزشی که در اینترنت تکرار میشوند، اولین چیزی هستند که رباتها امتحان میکنند.
دسترسیها را اعطا کنید
حالا به این کاربر فقط روی همان پایگاه داده دسترسی میدهیم. دقت کنید نام پایگاه داده باید دقیقاً همانی باشد که ساختید. یکی از خطاهای رایج در آموزشهای قدیمی این بود که پایگاه داده را wordpress1 میساختند اما دسترسی را روی wordpress میدادند و کاربر عملاً به هیچجا دسترسی نداشت:
GRANT ALL PRIVILEGES ON wordpress1.* TO 'wpuser'@'localhost';
سپس جدول دسترسیها را بازخوانی و از کنسول خارج شوید:
FLUSH PRIVILEGES;
EXIT;
یادآوری: تقریباً همهی دستورهای SQL باید با نقطهویرگول تمام شوند، وگرنه کنسول منتظر ادامهی دستور میماند.
مرحلهی سوم: پیکربندی وردپرس
ابتدا فایل پیکربندی نمونه را کپی کنید تا فایل اصلی ساخته شود:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
سپس آن را با ویرایشگر باز کنید:
nano /tmp/wordpress/wp-config.php

سه مقدار زیر را با اطلاعاتی که در مرحلهی قبل ساختید جایگزین کنید. مقدار DB_HOST را در نصب روی همان سرور، روی localhost بگذارید:
define( 'DB_NAME', 'wordpress1' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'YOUR_STRONG_PASSWORD' );
define( 'DB_HOST', 'localhost' );

کلیدهای امنیتی را حتماً عوض کنید
این مرحله در آموزش قدیمی نبود و نباید از آن گذشت. در همان فایل، بخشی وجود دارد با عنوان کلیدها و نمکهای احراز هویت که مقادیر پیشفرضش عبارتهای نمونهاند. این کلیدها هستند که کوکیهای ورود کاربران را رمزنگاری میکنند. مقادیر تصادفی و یکتا را از نشانی زیر بگیرید و کل آن بلوک را با خروجی آن جایگزین کنید:
https://api.wordpress.org/secret-key/1.1/salt/
برای ذخیره و خروج در nano کلیدهای Ctrl+X سپس Y و در نهایت Enter را بزنید.
مرحلهی چهارم: انتقال فایلها و تنظیم مالکیت
حالا محتویات پوشهی وردپرس را به ریشهی سایت منتقل کنید. توجه کنید که با /. در انتهای مسیر مبدأ، فایلهای مخفی هم کپی میشوند:
sudo cp -a /tmp/wordpress/. /var/www/html/
تا اینجا آموزشهای قدیمی تمام میشدند و دقیقاً از همینجا بود که کاربران به خطا میخوردند. وردپرس برای نصب افزونه، آپلود تصویر و بهروزرسانی خودکار باید بتواند در فایلهای خودش بنویسد. پس مالکیت را به کاربر وب سرور بدهید:
sudo chown -R apache:apache /var/www/html
و دسترسیهای استاندارد را تنظیم کنید؛ پوشهها 755 و فایلها 644:
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
SELinux را درست تنظیم کنید
روی AlmaLinux 9 سازوکار SELinux به صورت پیشفرض در حالت اجباری فعال است. اگر برچسبها را اصلاح نکنید، وردپرس نمیتواند فایل آپلود کند یا افزونه نصب کند و پیامهای گمراهکنندهای دربارهی نداشتن دسترسی نوشتن میدهد. ابتدا برچسبهای استاندارد را بازگردانید:
sudo restorecon -Rv /var/www/html
سپس به پوشههایی که وردپرس باید در آنها بنویسد، اجازهی نوشتن بدهید:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content(/.*)?"
sudo restorecon -Rv /var/www/html/wp-content
وسوسهی خاموش کردن کامل SELinux را کنار بگذارید؛ آن کار مشکل را پنهان میکند و یک لایهی دفاعی واقعی را از بین میبرد. اگر سرور شما ترافیک حساسی دارد یا نمیخواهید درگیر این جزئیات شوید، این نوع پیکربندی روی سرور ابری آلمان یا سرویسهای مدیریتشده توسط تیم پشتیبانی انجام میشود.

در پایان، سرویسها را بازخوانی کنید. دقت کنید که دستور قدیمی service httpd restart جای خود را به systemctl داده است:
sudo systemctl restart php-fpm httpd
مرحلهی پنجم: تکمیل نصب در مرورگر
حالا در مرورگر نشانی دامنه یا آیپی سرور را باز کنید. وردپرس به صورت خودکار شما را به صفحهی نصب میبرد. اگر چنین نشد، مستقیم به این مسیر بروید:
http://YOUR_DOMAIN/wp-admin/install.php
در فرم نصب، عنوان سایت، نام کاربری مدیر، رمز عبور و ایمیل را وارد کنید. برای نام کاربری مدیر هرگز از admin استفاده نکنید؛ این نام هدف اول همهی حملات حدس رمز است.

گام آخر که نباید از آن گذشت: فعال کردن HTTPS
سایتی که روی http بالا آمده، فرم ورود مدیرش را به صورت متن ساده روی شبکه میفرستد. پیش از هر کار دیگری گواهی رایگان Let's Encrypt را نصب کنید:
sudo dnf install certbot python3-certbot-apache -y
sudo certbot --apache
پس از فعال شدن گواهی، در پیشخوان وردپرس به تنظیمات همگانی بروید و هر دو نشانی سایت را به https تغییر دهید. اگر به گواهی با سطح اعتبارسنجی بالاتر برای فروشگاه یا سایت سازمانی نیاز دارید، انواع گواهی SSL در دسترس است.
راههای سادهتر و مراحل بعدی
آنچه در این مقاله انجام دادیم، نصب دستی روی یک سرور خام بود که بیشترین کنترل را به شما میدهد. اگر روی هاست دارای کنترلپنل کار میکنید، همین کار با نصب وردپرس با Easy Installer در چند کلیک انجام میشود. و اگر میخواهید سایت موجودی را به این سرور بیاورید، انتقال سایت وردپرسی با WP-CLI یا SSH مسیر درست را نشان میدهد.
پس از نصب، برای مدیریت راحتتر پایگاه داده میتوانید phpMyAdmin را نصب و ایمن کنید. همچنین اگر میخواهید بدانید سایت تازهتان از نظر فنی چه وضعیتی دارد، ابزار بررسی سلامت سایت گزارش سریعی به شما میدهد.
نسخهی انگلیسی و قدیمی این آموزش که مبنای اولیهی این مطلب بود در این صفحه در دسترس است؛ توجه داشته باشید که آن نسخه هنوز بر پایهی CentOS نوشته شده و دستورهایش بهروز نیست.
روی کمک ما حساب کنید
در هر مرحله از نصب وردپرس با هر مشکلی برخورد کردید، هر تلاش ناموفقی داشتید یا هر جا نیاز به کمک داشتید، آنلاین سرور پشتیبان شماست و میتوانید از اینجا کمک بگیرید.
ارسال نظر