رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
نصب وردپرس با Docker Compose (راهنمای جامع)

نصب وردپرس با Docker Compose (راهنمای جامع)

در این آموزش، نحوه راه‌اندازی وردپرس با Docker Compose به‌صورت چندکانتینری و استاندارد آموزش داده شده است. این ساختار شامل MySQL، WordPress، Nginx و SSL رایگان Let’s Encrypt با تمدید خودکار است. با این روش، وردپرس سریع‌تر، امن‌تر و بدون نیاز به نصب دستی LAMP/LEMP راه‌اندازی می‌شود.

معرفی

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

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

در این آموزش، یک نصب چندکانتینری وردپرس شامل موارد زیر پیاده‌سازی می‌شود:

  • پایگاه داده MySQL

  • وردپرس (PHP-FPM)

  • وب‌سرور Nginx

  • دریافت و مدیریت SSL رایگان با Let’s Encrypt

در پایان نیز تمدید خودکار گواهی SSL با cron تنظیم خواهد شد.


نکات کلیدی

  • Docker Compose فرآیند نصب وردپرس را بدون نیاز به نصب دستی LAMP/LEMP ساده می‌کند.

  • چهار سرویس اصلی مورد استفاده قرار می‌گیرند: MySQL، WordPress، Nginx و Certbot.

  • اطلاعات حساس دیتابیس در فایل .env نگهداری می‌شود و در Git و Docker Image ذخیره نمی‌شود.

  • گواهی SSL رایگان با Certbot و Let’s Encrypt دریافت و مدیریت می‌شود.

  • داده‌ها با Docker Volume ذخیره می‌شوند و با حذف کانتینرها از بین نمی‌روند.

  • فقط پورت‌های 80 و 443 در دسترس عموم قرار می‌گیرند و امنیت شبکه افزایش می‌یابد.

  • تمدید خودکار SSL بدون داون‌تایم انجام می‌شود.


پیش‌نیازها

برای اجرای این آموزش نیاز دارید به:

  • سرور Ubuntu (ترجیحاً نسخه‌های جدیدتر از 20.04)

  • یک کاربر غیر root با دسترسی sudo

  • Docker نصب‌شده

  • Docker Compose نصب‌شده

  • یک دامنه ثبت‌شده با دو رکورد DNS:

    • your_domain

    • www.your_domain
      که هر دو به IP سرور اشاره کنند


مرحله ۱: پیکربندی وب‌سرور Nginx

ابتدا یک دایرکتوری پروژه ایجاد می‌کنیم:

 
mkdir wordpress && cd wordpress mkdir nginx-conf

سپس فایل تنظیمات Nginx را می‌سازیم و پیکربندی اولیه شامل:

  • پاسخ به درخواست‌های HTTP

  • پردازش PHP با FastCGI

  • پشتیبانی از Certbot

  • کش فایل‌های استاتیک

این تنظیمات باعث می‌شود وردپرس به‌درستی از طریق Nginx اجرا شود و آماده دریافت SSL باشد.


مرحله ۲: تعریف متغیرهای محیطی

برای امنیت بیشتر، اطلاعات حساس دیتابیس در فایل .env ذخیره می‌شوند:

 
MYSQL_ROOT_PASSWORD=your_root_password MYSQL_USER=your_db_user MYSQL_PASSWORD=your_db_password

این فایل در .gitignore و .dockerignore قرار می‌گیرد تا به‌هیچ‌وجه منتشر نشود.


مرحله ۳: تعریف سرویس‌ها در Docker Compose

در فایل docker-compose.yml چهار سرویس تعریف می‌شود:

  • db: پایگاه داده MySQL

  • wordpress: وردپرس با PHP-FPM

  • webserver: Nginx

  • certbot: دریافت SSL

تمام سرویس‌ها روی یک شبکه Bridge اختصاصی قرار می‌گیرند و داده‌ها با Volume ذخیره می‌شوند.


مرحله ۴: دریافت گواهی SSL

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

 
docker-compose up -d

در مرحله اول از گواهی تست (staging) استفاده می‌شود تا از صحت تنظیمات اطمینان حاصل شود. پس از موفقیت، تنظیمات Certbot اصلاح شده و گواهی واقعی دریافت می‌شود.


مرحله ۵: فعال‌سازی SSL در Nginx

در این مرحله:

  • ریدایرکت HTTP به HTTPS فعال می‌شود

  • مسیر گواهی SSL مشخص می‌شود

  • هدرهای امنیتی اضافه می‌شوند

  • HTTP/2 فعال می‌شود

پس از آن، وب‌سرور مجدداً اجرا می‌شود و سایت روی HTTPS در دسترس قرار می‌گیرد.


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

با مراجعه به دامنه:

 
https://your_domain

مراحل نصب گرافیکی وردپرس انجام می‌شود:

  • انتخاب زبان

  • تعیین نام سایت

  • ساخت کاربر مدیر

  • ورود به داشبورد مدیریت


مرحله ۷: تمدید خودکار SSL

یک اسکریپت برای تمدید گواهی SSL ساخته می‌شود که:

  • Certbot را اجرا می‌کند

  • تنظیمات Nginx را بدون قطعی ری‌لود می‌کند

  • کانتینرهای بلااستفاده را پاک‌سازی می‌کند

این اسکریپت با cron به‌صورت روزانه اجرا می‌شود تا گواهی SSL همیشه معتبر بماند.


سوالات متداول (FAQ)

آیا با توقف کانتینرها اطلاعات سایت حذف می‌شود؟
خیر. تمام داده‌ها در Docker Volume ذخیره شده‌اند و مستقل از کانتینرها هستند.

چرا Docker Compose برای وردپرس مناسب است؟
چون نصب سریع، استاندارد، قابل انتقال و بدون دردسر دارد و مدیریت چند سرویس را ساده می‌کند.

اطلاعات حساس چگونه محافظت می‌شوند؟
تمام رمزها در فایل .env قرار دارند و وارد مخزن کد یا ایمیج‌ها نمی‌شوند.