📄 محتوای کامل
مقدمه
RabbitMQ یک کارگزار پیام متنباز است که به سیستمهای توزیعشده اجازه میدهد از طریق صفبندی پیام ارتباط برقرار کنند. RabbitMQ از پروتکل صفبندی پیام پیشرفته (AMQP) برای تحویل پیامهای قابل اعتماد و غیرهمزمان استفاده میکند. این پروتکل از الگوهای پیامرسانی متنوعی از جمله انتشار/اشتراک، درخواست/پاسخ و ارتباط نقطه به نقطه پشتیبانی میکند. علاوه بر این، RabbitMQ ماندگاری پیام، امنیت و تحمل خطا را تضمین میکند و آن را برای مدیریت حجم کاری با توان عملیاتی بالا در برنامههای مدرن ایدهآل میسازد.
این مقاله نحوه نصب RabbitMQ روی FreeBSD ۱۴.۰ و مدیریت صفها با استفاده از کنسول مدیریت وب را توضیح میدهد.
پیشنیازها
قبل از شروع:
- یک سرور مجازی که روی آن FreeBSD نصب شده باشد.
- یک رکورد دامنه A ایجاد کنید که به آدرس IP سرور اشاره کند.
- با استفاده از SSH به سرور متصل شوید .
- یک کاربر غیر ریشه با امتیازات sudo ایجاد کنید و به کاربر مورد نظر بروید.
نصب RabbitMQ روی FreeBSD ۱۴.۰
RabbitMQ در مخازن پیشفرض بستههای FreeBSD ۱۴.۰ موجود است. همچنین میتوانید یک نسخه خاص را با استفاده از مجموعه پورتهای 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 به طور پیشفرض کنسول مدیریت وب را روی پورت مربوطه ارائه میدهد 15672. یک پروکسی معکوس برای این پورت 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 80; listen [::]:80; 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 گوش میدهد80و همه درخواستها را به پورت RabbitMQ ارسال میکند15672. - فایل پیکربندی 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با دامنه واقعی و[email protected]آدرس ایمیل خود جایگزین کنید. کنسولکپی$ sudo certbot --nginx -d app.example.com -m [email protected] --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 ۱۴.۰ نصب کردهاید و احراز هویت امن را برای همه کاربران روی سرور فعال کردهاید. RabbitMQ یک کارگزار پیام است که با سایر برنامهها برای پردازش صفها ادغام میشود. برای اطلاعات بیشتر و گزینههای پیکربندی، لطفاً به مستندات RabbitMQ مراجعه کنید .