معرفی
وردپرس یک سیستم مدیریت محتوای متنباز و رایگان است که با 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
ابتدا یک دایرکتوری پروژه ایجاد میکنیم:
سپس فایل تنظیمات Nginx را میسازیم و پیکربندی اولیه شامل:
-
پاسخ به درخواستهای HTTP
-
پردازش PHP با FastCGI
-
پشتیبانی از Certbot
-
کش فایلهای استاتیک
این تنظیمات باعث میشود وردپرس بهدرستی از طریق Nginx اجرا شود و آماده دریافت SSL باشد.
مرحله ۲: تعریف متغیرهای محیطی
برای امنیت بیشتر، اطلاعات حساس دیتابیس در فایل .env ذخیره میشوند:
این فایل در .gitignore و .dockerignore قرار میگیرد تا بههیچوجه منتشر نشود.
مرحله ۳: تعریف سرویسها در Docker Compose
در فایل docker-compose.yml چهار سرویس تعریف میشود:
-
db: پایگاه داده MySQL
-
wordpress: وردپرس با PHP-FPM
-
webserver: Nginx
-
certbot: دریافت SSL
تمام سرویسها روی یک شبکه Bridge اختصاصی قرار میگیرند و دادهها با Volume ذخیره میشوند.
مرحله ۴: دریافت گواهی SSL
ابتدا کانتینرها اجرا میشوند:
در مرحله اول از گواهی تست (staging) استفاده میشود تا از صحت تنظیمات اطمینان حاصل شود. پس از موفقیت، تنظیمات Certbot اصلاح شده و گواهی واقعی دریافت میشود.
مرحله ۵: فعالسازی SSL در Nginx
در این مرحله:
-
ریدایرکت HTTP به HTTPS فعال میشود
-
مسیر گواهی SSL مشخص میشود
-
هدرهای امنیتی اضافه میشوند
-
HTTP/2 فعال میشود
پس از آن، وبسرور مجدداً اجرا میشود و سایت روی HTTPS در دسترس قرار میگیرد.
مرحله ۶: تکمیل نصب وردپرس
با مراجعه به دامنه:
مراحل نصب گرافیکی وردپرس انجام میشود:
-
انتخاب زبان
-
تعیین نام سایت
-
ساخت کاربر مدیر
-
ورود به داشبورد مدیریت
مرحله ۷: تمدید خودکار SSL
یک اسکریپت برای تمدید گواهی SSL ساخته میشود که:
-
Certbot را اجرا میکند
-
تنظیمات Nginx را بدون قطعی ریلود میکند
-
کانتینرهای بلااستفاده را پاکسازی میکند
این اسکریپت با cron بهصورت روزانه اجرا میشود تا گواهی SSL همیشه معتبر بماند.
سوالات متداول (FAQ)
آیا با توقف کانتینرها اطلاعات سایت حذف میشود؟
خیر. تمام دادهها در Docker Volume ذخیره شدهاند و مستقل از کانتینرها هستند.
چرا Docker Compose برای وردپرس مناسب است؟
چون نصب سریع، استاندارد، قابل انتقال و بدون دردسر دارد و مدیریت چند سرویس را ساده میکند.
اطلاعات حساس چگونه محافظت میشوند؟
تمام رمزها در فایل .env قرار دارند و وارد مخزن کد یا ایمیجها نمیشوند.

