اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

انتقال سایت وردپرس از محیط لوکال (XAMPP) به هاست اصلی

انتقال سایت وردپرس از محیط لوکال (XAMPP) به هاست اصلی

مقدمه 

 

در دنیای میزبانی وب، انتخاب یک هاست لینوکس مناسب می‌تواند پایهٔ محکمی برای انتقال سایت وردپرس از محیط لوکال (XAMPP) به سرور زنده باشد. این نوع هاست به‌دلیل سازگاری بالا با ابزارهای خط فرمان و امکان نصب مستقیم وب‌سرور LiteSpeed، سرعت بارگذاری صفحات را به‌طور چشمگیری بهبود می‌بخشد. در کنار این، استفاده از پنل‌های مدیریتی مانند سی پنل یا دایرکت ادمین به شما اجازه می‌دهد تا بدون نیاز به دانش عمیق سرور، تنظیمات دامنه، دیتابیس و ایمیل را به‌صورت گرافیکی انجام دهید. 

 

گام‌های اولیه 

 

ابتدا از XAMPP یک نسخهٔ کامل از فایل‌های وردپرس (پوشهٔ `wp‑content`، `wp‑admin` و `wp‑includes`) و یک نسخهٔ پشتیبان از دیتابیس MySQL استخراج می‌کنید. سپس در هاست لینوکس خود، یک دیتابیس جدید ایجاد می‌کنید—چه از طریق سی پنل و چه از طریق دایرکت ادمین—و فایل‌های پشتیبان را با FTP یا SFTP به پوشهٔ ریشهٔ وب‌سایت (معمولاً `public_html`) آپلود می‌نمایید. پس از ایمپورت دیتابیس، فایل `wp‑config.php` را با مقادیر جدید دیتابیس، کلیدهای امنیتی و مسیرهای مناسب به‌روزرسانی می‌کنید. 

 

نهایی‌سازی و تست 

 

در مرحلهٔ بعد، آدرس سایت (`siteurl` و `home`) را در جدول `wp_options` به دامنهٔ واقعی تغییر می‌دهید و Permalinks را از طریق داشبورد وردپرس بازنویسی می‌کنید تا قوانین بازنویسی LiteSpeed یا mod_rewrite فعال شوند. سپس با مرورگر، صفحهٔ اصلی، صفحات داخلی، فرم‌های تماس و عملیات ورود/ثبت‌نام را تست می‌کنید؛ در صورت بروز خطاهای ۴۰۴ یا mixed‑content، از ابزارهای جستجو‑جایگزینی (WP‑CLI یا افزونهٔ Better Search Replace) برای اصلاح مسیرهای قدیمی استفاده می‌کنید. در نهایت، کش‌های افزونه‌ها و LiteSpeed را پاک‌سازی و یک پشتیبان‌گیری خودکار (از طریق سی پنل یا دایرکت ادمین) تنظیم می‌کنید تا سایت وردپرس شما به‌صورت کامل و ایمن بر روی هاست لینوکس با وب‌سرور LiteSpeed در دسترس باشد.

 

۱. آماده‌سازی در محیط محلی (لوکال)

 

۱.۱. بررسی نسخه PHP و MySQL

– XAMPP معمولاً PHP 8.x و MySQL 5.7/8.0 دارد. 

– نسخهٔ PHP و MySQL سرور هدف را بررسی کنید (از طریق cPanel → Software → PHP Selector یا MySQL Version). 

– اگر اختلاف مهمی وجود دارد (مثلاً سرور هدف PHP 7.4)، افزونه‌ها یا کدهای سفارشی که به نسخهٔ جدید وابسته‌اند را پیش‌نویس کنید یا تست کنید.

 

۱.۲. پشتیبان‌گیری از فایل‌ها

1. به مسیر نصب وردپرس در XAMPP بروید (مثلاً `C:\xampp\htdocs\my‑site`).

2. تمام محتویات پوشه را (شامل مخفی‌ها) به یک پوشهٔ موقت مثل `C:\backup\my‑site-files` کپی کنید.

3. نکته: اگر از Git یا SVN برای مدیریت کد استفاده می‌کنید، می‌توانید فقط پوشهٔ `wp‑content` (که شامل تم‌ها، افزونه‌ها و آپلودهاست) را نسخه‌بندی کنید؛ بقیه فایل‌های هسته‌ای را می‌توانید بعداً از مخزن وردپرس دریافت کنید.

 

۱.۳. استخراج دیتابیس

1. مرورگر → `http://localhost/phpmyadmin`.

2. دیتابیس مربوط به سایت (مثلاً `my_site_db`) را انتخاب کنید.

3. Export → Custom

   – Format: SQL 

   – Structure: `Add DROP TABLE / VIEW / PROCEDURE / FUNCTION` را فعال کنید تا در سرور هدف جداول قبلی حذف شوند. 

   – Data: `Extended inserts` را فعال کنید (سرعت ایمپورت بهتر). 

   – Compression: `gzipped` (اختیاری) – اگر فایل بزرگ است. 

4. روی Go کلیک کنید؛ فایل `my_site_db.sql.gz` یا `my_site_db.sql` دانلود می‌شود.

 

 

۲. آماده‌سازی سرور هدف (هاست)

 

۲.۱. ایجاد دیتابیس و کاربر MySQL

1. وارد cPanel (یا پنل مشابه) شوید.

2. MySQL® Databases →

   – Create New Database: نام دیتابیس (مثلاً `mywebsite_db`). 

   – Create New User: نام کاربری (مثلاً `mywebsite_user`) و رمز عبور قوی. 

   – Add User To Database: کاربر را به دیتابیس اضافه کنید و All Privileges بدهید. 

3. نکته امنیتی: اگر امکان دارد، دسترسی کاربر را به Only SELECT, INSERT, UPDATE, DELETE محدود کنید؛ اما برای نصب/به‌روزرسانی افزونه‌ها معمولاً `ALL PRIVILEGES` لازم است.

 

۲.۲. تنظیمات DNS (اگر دامنه جدید است)

– در پنل ثبت‌کننده دامنه، Nameserverهای هاست را تنظیم کنید. 

– پس از انتشار (حداکثر ۲۴ ساعت) می‌توانید به دامنه دسترسی داشته باشید. 

– برای تست موقت می‌توانید فایل `hosts` سیستم خود را ویرایش کنید تا دامنه به IP سرور اشاره کند.

 

۲.۳. آپلود فایل‌های وردپرس

1. FTP/SFTP (FileZilla، WinSCP یا Cyberduck) را باز کنید.

2. به پوشهٔ ریشهٔ وب‌سایت (`public_html` یا `www`) متصل شوید.

3. تمام محتویات پوشهٔ موقت (`C:\backup\my‑site-files`) را به این مسیر آپلود کنید.

   – پیشنهاد: ابتدا پوشهٔ `wp‑content` را آپلود کنید؛ سپس بقیه فایل‌ها (حدود ۲‑۳ MB) را اضافه کنید. این کار زمان استقرار را کاهش می‌دهد. 

4. پس از اتمام، مطمئن شوید که فایل‌های مخفی مانند `.htaccess` نیز منتقل شده‌اند (در برخی کلاینت‌ها باید گزینه “Show hidden files” فعال شود).

۲.۴. ایمپورت دیتابیس

1. در cPanel → phpMyAdmin → دیتابیس جدید (`mywebsite_db`).

2. Import → فایل `my_site_db.sql.gz` یا `my_site_db.sql` را انتخاب کنید.

3. اگر فایل فشرده است، phpMyAdmin به‌صورت خودکار آن را استخراج می‌کند.

4. تنظیمات پیشرفته: اگر حجم فایل بیش از ۲۰۰ MB باشد، از BigDump یا خط فرمان MySQL (`mysql -u user -p dbname < file.sql`) استفاده کنید.

 

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

 

۳.۱. ویرایش مقادیر اصلی

php

/ The name of the database for WordPress */

define('DB_NAME', 'mywebsite_db');




/ MySQL database username */

define('DB_USER', 'mywebsite_user');




/ MySQL database password */

define('DB_PASSWORD', 'your_strong_password');




/ MySQL hostname */

define('DB_HOST', 'localhost');   // اکثر هاست‌ها localhost است

 

 

۳.۲. کلیدهای امنیتی (Salts)

– به آدرس <https://api.wordpress.org/secret-key/1.1/salt/> بروید. 

– خروجی را کپی کنید و جایگزین خطوط `AUTH_KEY`, `SECURE_AUTH_KEY`, … در `wp-config.php` کنید.

 

۳.۳. تنظیمات پیشرفته (اختیاری)

– اگر سرور هدف از caching یا Redis استفاده می‌کند، می‌توانید خطوط زیر را اضافه کنید:

 

php

define('WP_CACHE', true);               // فعال‌سازی کش داخلی

define('WP_REDIS_HOST', '127.0.0.1');    // اگر Redis فعال است

 

 

– برای SSL می‌توانید `FORCE_SSL_ADMIN` را فعال کنید:

 

php

define('FORCE_SSL_ADMIN', true);

 

 

۴. به‌روزرسانی URL سایت (آدرس دامنه)

 

۴.۱. روش مستقیم در phpMyAdmin

1. جدول `wp_options` را باز کنید.

2. ردیف‌های `siteurl` (option_id = 1) و `home` (option_id = 2) را پیدا کنید.

3. مقدار آن‌ها را از `http://localhost/my-site` به `https://www.example.com` تغییر دهید.

 

۴.۲. استفاده از WP‑CLI (اگر دسترسی SSH دارید)

bash

wp option update home 'https://www.example.com' --allow-root

wp option update siteurl 'https://www.example.com' --allow-root

 

 

۴.۳. جستجو و جایگزینی در تمام جداول (برای مسیرهای داخلی)

– نصب افزونه Better Search Replace یا استفاده از WP‑CLI:

 

bash

wp search-replace 'http://localhost/my-site' 'https://www.example.com' --all-tables --skip-columns=guid --dry-run

# پس از اطمینان از نتایج، dry-run را حذف کنید

wp search-replace 'http://localhost/my-site' 'https://www.example.com' --all-tables --skip-columns=guid

 

 

> نکته: ستون `guid` معمولاً نیازی به تغییر ندارد؛ تغییر آن می‌تواند باعث مشکلات در فیدهای RSS شود.

 

 

۵. تنظیمات Permalinks و .htaccess

 

1. به داشبورد وردپرس (`https://www.example.com/wp-admin`) وارد شوید.

2. Settings → Permalinks → ساختار دلخواه (مثلاً `Post name`) را انتخاب کنید.

3. بدون تغییر، روی Save Changes کلیک کنید؛ این کار فایل `.htaccess` را بازنویسی می‌کند.

 

محتویات معمولی `.htaccess` برای وردپرس

apache

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

 

 

اگر سرور شما NGINX است، تنظیمات معادل را در فایل `nginx.conf` یا `site.conf` اضافه کنید:

 

nginx

location / {

    try_files $uri $uri/ /index.php?$args;

}

 

 

تست عملکرد و رفع مشکلات پس از انتقال

 

  1. بررسی صفحهٔ اصلی

 

بارگذاری صفحهٔ اصلی را در مرورگر باز کنید. اگر استایل‌ها یا اسکریپت‌ها به‌درستی لود نمی‌شوند، مسیرهای فایل‌های CSS/JS را در منبع صفحه (view‑source) بررسی کنید. معمولاً مشکل به‌دلیل مسیرهای قدیمی (`http://localhost/…`) یا عدم دسترسی به پوشهٔ `wp‑content` است. در این صورت، از افزونهٔ Better Search Replace یا WP‑CLI برای جایگزینی مسیرهای قدیمی با دامنهٔ جدید استفاده کنید.

 

  1. مرور صفحات داخلی

 

به‌صورت تصادفی چندین پست، برچسب و صفحهٔ داخلی را باز کنید. اگر با خطای ۴۰۴ مواجه شدید، احتمالاً لینک‌های داخلی در دیتابیس به‌روزرسانی نشده‌اند. برای رفع این مشکل، یک جستجو و جایگزینی سراسری در تمام جداول انجام دهید:

 

bash

wp search-replace 'http://localhost/your-site' 'https://www.example.com' --all-tables --skip-columns=guid

 

 

این دستور تمام ارجاعات به مسیر لوکال را به دامنهٔ جدید تبدیل می‌کند، به‌جز ستون `guid` که معمولاً نیازی به تغییر ندارد.

 

  1. تست فرم‌ها

 

اگر از فرم تماس، فرم‌های ثبت‌نام یا افزونهٔ فروشگاهی (WooCommerce) استفاده می‌کنید، یک یا دو بار فرم را ارسال کنید. بررسی کنید:

– ایمیل‌های ارسالی به صندوق پست می‌رسند. اگر نه، تنظیمات SMTP یا `wp_mail()` را بررسی کنید؛ ممکن است نیاز به افزونهٔ SMTP (مانند WP Mail SMTP) داشته باشید.

– داده‌های فرم در دیتابیس ذخیره می‌شوند؛ جدول مربوطه (مثلاً `wp_cf7dbplugin_st`) را در phpMyAdmin چک کنید.

 

  1. ورود/ثبت‌نام کاربر

 

با حساب کاربری موجود وارد پیشخوان شوید. اگر پسورد اشتباه گزارش می‌شود، ممکن است دیتابیس به‌درستی ایمپورت نشده باشد یا جدول `wp_users` خراب باشد. در این حالت:

– یک کاربر جدید از طریق phpMyAdmin اضافه کنید (در جدول `wp_users` یک ردیف جدید با فیلدهای `user_login`, `user_pass` (به‌صورت MD5 یا bcrypt)، `user_email` و `user_registered` ایجاد کنید). سپس از این حساب برای ورود استفاده کنید و پس از ورود، رمز عبور را از پیشخوان تغییر دهید.

 

  1. کش و افزونه‌های کش

 

اگر از افزونه‌های کش (WP Super Cache، W3 Total Cache، LiteSpeed Cache) استفاده می‌کنید، کش را پاک کنید:

– در داشبورد وردپرس به تنظیمات افزونه بروید و گزینهٔ Clear Cache یا Purge All را بزنید.

– در صورت استفاده از کش سرور (Varnish یا Redis) ممکن است نیاز به ریستارت سرویس داشته باشید؛ این کار معمولاً از طریق پنل هاست یا SSH انجام می‌شود (`service varnish restart` یا `redis-cli flushall`).

 

  1. SSL و mixed‑content

 

پس از نصب گواهی SSL، مرورگر ممکن است هشدار «mixed content» بدهد؛ یعنی برخی منابع (تصاویر، اسکریپت‌ها یا استایل‌ها) هنوز از `http://` بارگذاری می‌شوند. برای رفع:

– در Settings → General مطمئن شوید که `WordPress Address (URL)` و `Site Address (URL)` هر دو با `https://` شروع می‌شوند.

– افزونهٔ Really Simple SSL را فعال کنید؛ این افزونه به‌صورت خودکار تمام درخواست‌های `http` را به `https` ریدایرکت می‌کند.

– اگر هنوز مواردی باقی مانده‌اند، در مرورگر با ابزارهای توسعه (DevTools → Console) به خطاهای mixed‑content نگاه کنید و مسیرهای مشکل‌دار را به‌صورت دستی اصلاح کنید.

 

  1. بررسی لاگ‌های خطا

 

اگر صفحه‌ای به‌صورت سفید (White Screen of Death) یا خطای ۵۰۰ نمایش می‌دهد:

– در `wp-config.php` خطوط زیر را اضافه کنید تا خطاها در فایل `debug.log` ذخیره شوند:

 

php

define('WP_DEBUG', true);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);

 

 

– سپس به مسیر `wp-content/debug.log` بروید و پیام‌های خطا را بررسی کنید. معمولاً خطاهای «Call to undefined function» یا «Class not found» به افزونه یا تم ناسازگار مربوط می‌شود؛ در این صورت افزونه یا تم را موقتاً غیرفعال کنید (می‌توانید با تغییر نام پوشهٔ `plugins` به `plugins_off` در `wp-content` این کار را انجام دهید).

 

  1. تنظیمات Permalinks

 

پس از انتقال، به Settings → Permalinks بروید و بدون تغییر، روی Save Changes کلیک کنید. این کار فایل `.htaccess` (یا تنظیمات rewrite در NGINX) را بازنویسی می‌کند و لینک‌های ثابت (permalinks) را فعال می‌سازد. اگر همچنان خطای ۴۰۴ برای پست‌ها مشاهده می‌کنید، مطمئن شوید که ماژول `mod_rewrite` در سرور Apache فعال است؛ در cPanel می‌توانید این گزینه را در Select PHP Version → Options بررسی کنید.

 

  1. تست سرعت و عملکرد

 

از ابزارهای آنلاین مثل GTmetrix, Google PageSpeed Insights یا WebPageTest یک تست سرعت انجام دهید. اگر زمان بارگذاری زیاد است:

– بررسی کنید آیا کش سرور فعال است.

– تصاویر بزرگ را با افزونهٔ فشرده‌سازی (Smush, ShortPixel) بهینه کنید.

– اسکریپت‌ها و استایل‌های غیرضروری را حذف یا به‌صورت defer/load‑async تنظیم کنید.

 

  1. نهایی‌سازی

 

پس از اطمینان از عملکرد صحیح تمام بخش‌ها:

– کش مرورگر را پاک کنید (Ctrl + F5) و صفحه را دوباره بارگذاری کنید تا مطمئن شوید تغییرات به‌درستی اعمال شده‌اند.

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

– اگر همه چیز درست است، می‌توانید سایت را به‌صورت رسمی به کاربران معرفی کنید.

4/5 - (2470 امتیاز)

ارسال دیدگاه

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


6 × 7

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.