آپاچی سوپرتس به عنوان یکی از قدرتمندترین و محبوبترین ابزارهای هوش تجاری (BI) متنباز موجود در امروز ظهور کرده است. این ابزار به دلیل رابط کاربری مدرن، گزینههای بصری گسترده و سازگاری با طیف وسیعی از پایگاههای داده SQL، انتخابی ایدهآل برای مهندسان و تحلیلگران داده است که به دنبال دموکراتیک کردن دسترسی به دادهها در سازمانهای خود هستند. با این حال، راهاندازی سوپرتس در یک محیط تولید میتواند به دلیل معماری پیچیده آن که شامل اجزای متعددی مانند برنامه Flask، کارگران Celery و یک پایگاه داده متادیتا است، ترسناک باشد.
در این راهنما، ما شما را در فرآیند استقرار آپاچی سوپرتس با استفاده از Docker Compose راهنمایی میکنیم. این روش برای توسعهدهندگان متوسط تا پیشرفته توصیه میشود زیرا محیطی تکرارپذیر، ایزوله و مقیاسپذیر را بدون شلوغ کردن سیستم میزبان شما فراهم میکند. در پایان این پست، شما یک نمونه کاملاً کاربردی از سوپرتس خواهید داشت که به صورت محلی یا روی یک سرور از راه دور در حال اجراست.
پیشنیازها و راهاندازی محیط
قبل از ورود به فرآیند استقرار، اطمینان حاصل کنید که محیط توسعه شما شرایط زیر را دارد:
- Docker و Docker Compose: اطمینان حاصل کنید که هر دو نصب و در حال اجرا هستند. میتوانید این موضوع را با اجرای
docker --versionوdocker-compose --versionبررسی کنید. - PostgreSQL: سوپرتس به یک پایگاه داده رابطهای برای متادیتای خود نیاز دارد. اگرچه Docker Compose میتواند یک کانتینر Postgres را راهاندازی کند، اما در محیط تولید، باید از یک سرویس مدیریت شده یا یک نمونه پایگاه داده مستقل استفاده کنید.
- Redis: این ابزار برای کش کردن و به عنوان بکاند نتیجه برای وظایف Celery استفاده میشود.
- برنامه Flask: هسته برنامه سوپرتس.
برای هدف این آموزش، ما از یک پیکربندی Docker Compose یکپارچه استفاده خواهیم کرد که شامل تمام خدمات ضروری است. این گزینه برای محیطهای توسعه و پیشتولید (Staging) عالی است.
ایجاد پیکربندی Docker Compose
یک دایرکتوری جدید برای پروژه خود ایجاد کنید و یک فایل docker-compose.yml را راهاندازی کنید. این فایل خدمات، شبکهها و حجمهای مورد نیاز برای عملکرد صحیح سوپرتس را تعریف میکند.
version: '3.8'
services:
redis:
image: redis:latest
ports:
- "6379:6379"
networks:
- superset_network
postgres:
image: postgres:13
environment:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset_pass
POSTGRES_DB: superset
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- superset_network
superset:
image: apache/superset:latest
restart: always
ports:
- "8088:8088"
command: ["/app/docker/docker-entrypoint.sh"]
environment:
SUPERSET_SECRET_KEY: 'super-secret-key-for-production'
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USER: superset
DATABASE_PASSWORD: superset_pass
DATABASE_DB: superset
volumes:
- superset_data:/app/superset_home
depends_on:
- redis
- postgres
networks:
- superset_network
volumes:
postgres_data:
superset_data:
networks:
superset_network:
driver: bridge
راهاندازی اولیه و ایجاد کاربر
پس از آماده بودن فایل docker-compose.yml، خدمات را با دستور زیر شروع کنید:
docker-compose up -d
پس از بالا آمدن و اجرای کانتینرها، باید پایگاه داده را راهاندازی اولیه کنید و یک کاربر مدیر ایجاد نمایید. دستورات زیر را در ترمینال خود اجرا کنید:
# راهاندازی اولیه اسکیمای پایگاه داده
docker-compose exec superset superset db upgrade
# ایجاد یک کاربر مدیر
docker-compose exec superset superset fab create-admin \
--username admin \
--firstname Admin \
--lastname User \
--email admin@example.com \
--password admin
دستور superset fab create-admin برای ایمنسازی استقرار اولیه شما حیاتی است. دستور superset db upgrade اطمینان حاصل میکند که اسکیمای پایگاه داده با نسخه سوپرتسی که اجرا میکنید بهروز است.
ملاحظات محیط تولید
در حالی که تنظیمات فوق برای توسعه عالی است، استقرارهای محیط تولید به سختافزارسازی (Hardening) اضافی نیاز دارند:
- امنیت: هرگز از کلیدهای پیشفرض استفاده نکنید. یک کلید قوی و تصادفی برای
SUPERSET_SECRET_KEYتولید کنید. - پروکسی معکوس: Nginx یا Traefik را در جلوی سوپرتس قرار دهید تا پایاندهی SSL و تعادل بار را مدیریت کند.
- جداسازی پایگاه داده: کانتینرهای Postgres و Redis را به سرویسهای خارجی و مدیریت شده منتقل کنید تا در دسترس بودن بالا و پایداری دادهها را تضمین کنید.
- مقیاسپذیری: از مقیاسپذیری افقی پاد (Kubernetes) یا Docker Swarm برای مقیاسپذیری مستقل خدمات
supersetوcelery-workerبر اساس بار کاری استفاده کنید.
نتیجهگیری
استقرار آپاچی سوپرتس از طریق Docker Comse فرآیندی روان است که به توسعهدهندگان اجازه میدهد به سرعت شروع به کار کنند. با بهرهگیری از کانتینرسازی، شما سازگاری را در محیطهای توسعه، پیشتولید و تولید تضمین میکنید. با افزایش نیازهای دادهای خود، به یاد داشته باشید که معماری خود را باگزدایی کنید تا شامل نمونههای پایگاه داده جداگانه، استراتژیهای کشینگ قوی و پروکسیهای معکوس امن شود. با استقرار سوپرتس، تیم شما آماده است تا پتانسیل کامل دادههای خود را از طریق بصریسازیهای شهودی و قدرتمند آزاد کند.