نحوه نصب RabbitMQ روی FreeBSD 14.0 #
مقدمه #
RabbitMQ یک کارگزار پیام متنباز است که به سیستمهای توزیعشده اجازه میدهد از طریق صفبندی پیام ارتباط برقرار کنند. RabbitMQ از پروتکل صفبندی پیام پیشرفته (AMQP) برای تحویل پیامهای قابل اعتماد و غیرهمزمان استفاده میکند. این پروتکل از الگوهای پیامرسانی متنوعی از جمله انتشار/اشتراک، درخواست/پاسخ و ارتباط نقطه به نقطه پشتیبانی میکند. علاوه بر این، RabbitMQ ماندگاری پیام، امنیت و تحمل خطا را تضمین میکند و آن را برای مدیریت حجم کاری با توان عملیاتی بالا در برنامههای مدرن ایدهآل میسازد.
این مقاله نحوه نصب RabbitMQ روی FreeBSD 14.0 و مدیریت صفها با استفاده از کنسول مدیریت وب را توضیح میدهد.
پیشنیازها #
قبل از شروع:
- یک سرور مجازی که روی آن FreeBSD نصب شده باشد.
- یک رکورد دامنه A ایجاد کنید که به آدرس IP سرور اشاره کند.
- با استفاده از SSH به سرور متصل شوید .
- یک کاربر غیر ریشه با امتیازات sudo ایجاد کنید و به کاربر مورد نظر بروید.
نصب RabbitMQ روی FreeBSD 14.0 #
RabbitMQ در مخازن پیشفرض بستههای FreeBSD 14.0 موجود است. همچنین میتوانید یک نسخه خاص را با استفاده از مجموعه پورتهای FreeBSD یا یک نسخه باینری عمومی نصب کنید. مراحل زیر را برای نصب RabbitMQ با استفاده از pkgمدیر بسته پیشفرض FreeBSD روی سرور خود دنبال کنید.
- فهرست اطلاعات بسته سرور را بهروزرسانی کنید.کنسول
$ sudo pkg update - RabbitMQ را نصب کنید.کنسول
$ sudo pkg install -y rabbitmq - سرویس RabbitMQ را طوری فعال کنید که به طور خودکار در هنگام بوت سیستم شروع به کار کند.کنسول
$ sudo sysrc rabbitmq_enable=YES
- سرویس RabbitMQ را شروع کنید.کنسول
$ sudo service rabbitmq start - وضعیت سرویس RabbitMQ را مشاهده کنید تا از اجرای آن اطمینان حاصل کنید.کنسول
$ sudo service rabbitmq statusخروجی:
Status of node ...... Runtime OS PID: 1283 OS: FreeBSD Uptime (seconds): 7 Is under maintenance?: false ..... Listeners Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0 Interface: 0.0.0.0, port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0اگر به دنبال تنظیمات متفاوتی هستید، میتوانید نحوه نصب rabbitmq در اوبونتو را نیز بررسی کنید تا قابلیتهای مدیریت پیام برنامه خود را افزایش دهید!
پیکربندی RabbitMQ #
RabbitMQ به طور پیشفرض از عملیات خط فرمان (CLI) پشتیبانی میکند، اما کنسول مدیریت وب روشی کارآمد برای مدیریت گرهها و صفهای برنامه ارائه میدهد. برای فعال کردن افزونه کنسول مدیریت وب و ایجاد یک حساب کاربری مدیریتی جدید، مراحل زیر را دنبال کنید.
- افزونه را فعال کنید
rabbitmq_management.کنسول$ sudo rabbitmq-plugins enable rabbitmq_management
خروجی:
Enabling plugins on node rabbit@negarnovin: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@negarnovin... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch set 3 plugins. Offline change; changes will take effect at broker restart. - یک کاربر جدید ایجاد کنید
adminو آن راstrong_passwordبا یک رمز عبور قوی به دلخواه خود جایگزین کنید.کنسول$ sudo -u rabbitmq rabbitmqctl add_user admin strong_passwordخروجی:
Adding user "admin" ... Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more. adminبا استفاده از گزینه RabbitMQ به کاربر امتیازات مدیریتی اعطا کنیدset_user_tags.کنسول$ sudo -u rabbitmq rabbitmqctl set_user_tags admin administratorخروجی:
Setting tags for user "admin" to [administrator] ...adminبه کاربر اجازه کامل برای اجرای تمام عملیات RabbitMQ را بدهید .کنسول$ sudo -u rabbitmq rabbitmqctl set_permissions admin ".*" ".*" ".*"
در دستور بالا،
".*"یک الگوی عبارت منظم وجود دارد که عملاً مجوزهای کامل را برای هر نوع عملیات RabbitMQ، مانند پیکربندی، نوشتن و خواندن، اعطا میکند.- سرویس RabbitMQ را برای اعمال تغییرات کاربری جدید، مجدداً راهاندازی کنید.کنسول
$ sudo service rabbitmq را مجدداً راه اندازی کنید
خروجی:
Stopping rabbitmq. Starting rabbitmq.
RabbitMQ ایمن سازی #
RabbitMQ به طور پیشفرض کنسول مدیریت وب را روی پورت مربوطه ارائه میدهد ۱۵۶۷۲. یک پروکسی معکوس برای این پورت RabbitMQ تنظیم کنید و اتصالات به رابط RabbitMQ را با رمزگذاری SSL ایمن کنید. مراحل زیر را برای نصب Nginx به عنوان یک پروکسی معکوس دنبال کنید و فایروال را با استفاده از IPFW پیکربندی کنید تا اتصالات ورودی SSH، HTTP و HTTPS روی سرور مجاز باشند.
- کاربر مهمان پیشفرض RabbitMQ را حذف کنید.کنسول
$ sudo -u rabbitmq rabbitmqctl delete_user guestخروجی:
Deleting user "guest" ... - Nginx را نصب کنید.کنسول
$ sudo pkg install -y nginx - سرویس Nginx را طوری فعال کنید که همزمان با بوت سیستم شروع به کار کند.کنسول
$ sudo sysrc nginx_enable=yes
- یک دایرکتوری جدید
conf.dبرای ذخیره تنظیمات میزبان مجازی Nginx خود ایجاد کنید.کنسول$ sudo mkdir /usr/local/etc/nginx/conf.d viبا استفاده از یک ویرایشگر متن مانند . ، یک پیکربندی میزبان مجازی Nginx جدید در دایرکتوری ایجاد کنید .کنسول$ sudo vi /usr/local/etc/nginx/conf.d/app.example.com.conf- محتویات زیر را به فایل اضافه کنید.
app.example.comدامنه واقعی خود را جایگزین کنید.انجینکسserver { listen ۸۰; listen [::]:۸۰; server_name app.example.com; location / { proxy_pass http://localhost:15672; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } }
فایل را ذخیره کنید و ببندید.
پیکربندی Nginx فوق یک میزبان مجازی جدید برای
app.example.comدامنه ایجاد میکند که به درخواستهای اتصال روی پورت HTTP گوش میدهد۸۰و همه درخواستها را به پورت RabbitMQ ارسال میکند۱۵۶۷۲. - فایل پیکربندی Nginx را با استفاده از یک ویرایشگر متن مانند
vi. باز کنید.کنسول$ sudo vi /usr/local/etc/nginx/nginx.conf - دستورالعمل زیر
includeرا قبل از نماد بسته شدن}در انتهای فایل اضافه کنید.انجینکسinclude conf.d/*;
فایل را ذخیره کنید و ببندید.
دستور فوق به Nginx دستور میدهد تا فایلهای پیکربندی اضافی را در
/usr/local/etc/nginx/conf.dدایرکتوری که شما ایجاد کردهاید، پیدا کرده و بخواند. - پیکربندیهای Nginx را برای یافتن خطاها آزمایش کنید.کنسول
$ sudo nginx -tخروجی:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful - برای اعمال تغییرات، Nginx را مجدداً راهاندازی کنید.کنسول
$ sudo service nginx restartخروجی:
Performing sanity check on nginx configuration: nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Starting nginx. - ابزار کلاینت Certbot Let’s Encrypt و افزونه Nginx را نصب کنید.کنسول
$ sudo pkg install -y security/py-certbot security/py-certbot-nginx - یک گواهی SSL جدید برای دامنه میزبان مجازی خود ایجاد کنید، مانند
app.example.com. آن راapp.example.comبا دامنه واقعی وhello@example.comآدرس ایمیل خود جایگزین کنید.کنسول$ sudo certbot --nginx -d app.example.com -m hello@example.com --agree-tos - Certbot را فعال کنید تا گواهی SSL را قبل از انقضا به طور خودکار تمدید کند.کنسول
$ echo weekly_certbot_enable="YES" | sudo tee -a /etc/periodic.conf
- سرویس فایروال IPFW را طوری فعال کنید که به طور خودکار هنگام بوت سیستم شروع به کار کند.کنسول
$ sudo sysrc firewall_enable="YES"
خروجی:
firewall_enable: NO -> YES - IPFW را روی حالت بیصدا تنظیم کنید تا هنگام بارگذاری قوانین فایروال، پیامها را سرکوب کند.کنسول
$ sudo sysrc firewall_quiet="YES"
خروجی:
firewall_quiet: NO -> YES - برای استفاده از قوانین stateful، نوع فایروال را به تغییر دهید
workstation.کنسول$ sudo sysrc firewall_type="workstation"
خروجی:
firewall_type: UNKNOWN -> workstation - پورتهای SSH، HTTP و HTTPS را از طریق فایروال مجاز کنید.کنسول
$ sudo sysrc firewall_myservices="ssh/tcp http/tcp https/tcp"
خروجی:
firewall_myservices: -> ssh/tcp http/tcp https/tcp - به هر آدرس IP اجازه دسترسی به سرویسهای موجود در
firewall_myservicesمتغیر را بدهید.کنسول$ sudo sysrc firewall_allowservices="any"
- سرویس IPFW را برای فعال کردن قوانین فایروال شروع کنید.کنسول
$ sudo service ipfw start
دسترسی به کنسول RabbitMQ #
برای دسترسی به کنسول مدیریت وب RabbitMQ و مدیریت گرهها و صفها روی سرور خود، مراحل زیر را دنبال کنید.
- به دامنه RabbitMQ خود دسترسی پیدا کنید، مثلاً
rabbitmq.example.comبا استفاده از یک مرورگر وب مانند Chrome.https://your-domain.comتأیید کنید که کنسول مدیریت وب RabbitMQ نمایش داده میشود و اعتبارنامههای کاربر مدیریتی RabbitMQ را که قبلاً تنظیم کردهاید، برای ورود وارد کنید.
- مشاهده و مدیریت وظایف RabbitMQ با استفاده از کنسول مدیریت وب.
نتیجهگیری #
شما RabbitMQ را روی FreeBSD 14.0 نصب کردهاید و احراز هویت امن را برای همه کاربران روی سرور فعال کردهاید. RabbitMQ یک کارگزار پیام است که با سایر برنامهها برای پردازش صفها ادغام میشود. برای اطلاعات بیشتر و گزینههای پیکربندی، لطفاً به مستندات RabbitMQ مراجعه کنید .