شعار همیشگی: حفظ مشتریان فعلی ، دعوت از مشتریان قبلی ، جذب مشتریان آتی.
نصبMosquitto MQTT بر روی Ubuntu ۱۸.۰۴ (راه اندازی سریع)

با شما هستیم با نصبMosquitto MQTT بر روی Ubuntu ۱۸.۰۴ (راه اندازی سریع) در خدمت شما خواهیم بود تا انتهای این مطلب ما را همراهی کنید. و یا با محیط آن آشنا گردید به مطالعه این مطللب بپردازید.
بکاپ منظم روزانه هفتگی ماهانه در یک سرور مجزا از مزیت نگارنوین نسبت به سایرین می باشد.
شرکت نگارنوین با همت بهترین کارشناس های قوی به شما کاربران و مشتریهای عزیز خدمت رسانی میکند تا هرچه آسان تر و بهتر به درخواست های خود برسید.
Mosquitto MQTT چیست؟
MQTT یک پروتکل پیام رسانی ماشین به ماشین بوده که برای ارائه ی ارتباطات بین دستگاه ها از طریق اینترنت مورد استفاده قرار می گیرد. Mosquitto یک سرویس محبوب از MQTT بوده که از پشتیبانی ارتباطی بسیار مناسبی برخوردار بوده و نصب و پیکربندی آن هم بسیار ساده است.
در این راه اندازی سریع ما نصب Mosquitto را آموزش داده و از گواهینامه SSL رایگان Let’s Encrypt جهت افزایش امنیت ترافیک MQTT استفاده می کنیم.
پیش نیازها:
پیش از شروع مراحل نصب، باید موارد زیر را رعایت کنید:
- یک سرور Ubunto ۱۸.۰۴ با یک کاربر غیر روت با دسترسی Sudo و فایروال اولیه.
- یک نام دامنه که به سرور شما اشاره کند.
- پورت ۸۰ باید در سرور شما بدون استفاده باشد. چنان چه Mosquitto را بر روی وب سروری نصب می کنید که این پورت را اشغال می کند، باید از روش های دیگری برای نصب استفاده کنید.
مرحله اول: نصب نرم افزار
در ابتدا مخزن نرم افزار را نصب می کنیم تا بتوانیم آخرین نسخه از Certbot (کلاینت Let’s Encrypt) را داشته باشیم:
sudo add-apt-repository ppa:certbot/certbot
دکمه Enter را برای تایید فشار دهید، سپس پکیج های نرم افزار را برای Mosquitto و Certbot نصب کنید:
sudo apt install certbot mosquitto mosquitto-clients
مرحله دوم: دانلود گواهینامه SSL
پورت ۸۰ را در فایروال خود باز کنید:
sudo ufw allow 80
سپس Certbot را راه اندازی کنید. اطمینان حاصل کنید که نام دامنه سرورتان را در این مرحله باید جایگزین کنید:
sudo certbot certonly –standalone –preferred-challenges http -d
mqtt.example.com
اکنون شما می توانید یک آدرس ایمیل را وارد کنید. پس از انجام این کار، پیغامی را مشاهده خواهید کرد که به شما می گوید که فرایند به درستی انجام شده و گواهینامه های شما ذخیره شده اند.
در مرحله بعدی Mosquitto را پیکربندی می کنیم تا بتوانیم از این گواهینامه ها استفاده کنیم.
مرحله سوم: پیکربندی Mosquitto
در ابتدا یک فایل پسورد می سازیم که Mosquitto بتواند از آن جهت تائید ارتباطات استفاده کند. برای این کار از دستور mosquitto_passwd استفاده کنید. توجه داشته باشید که باید نام کاربری خود را جایگزین کنید:
sudo mosquitto_passwd -c /etc/mosquitto/passwd your-username
پسورد خود را ۲ مرتبه وارد کنید. اکنون یک فایل پیکربندی جدید برای Mosquitto باز کنید:
sudo nano /etc/mosquitto/conf.d/default.conf
فایل باز شده خالی است. محتویات زیر را در آن کپی کنید:
/etc/mosquitto/conf.d/default.conf
allow_anonymous false
password_file /etc/mosquitto/passwd
listener 1883 localhost
listener 8883
certfile /etc/letsencrypt/live/mqtt.example.com/cert.pem
cafile /etc/letsencrypt/live/mqtt.example.com/chain.pem
keyfile /etc/letsencrypt/live/mqtt.example.com/privkey.pem
listener 8083
protocol websockets
certfile /etc/letsencrypt/live/mqtt.example.com/cert.pem
cafile /etc/letsencrypt/live/mqtt.example.com/chain.pem
keyfile /etc/letsencrypt/live/mqtt.example.com/privkey.pem
مطمئن شوید که نام دامنه ای که در مرحله دوم استفاده کرده اید را با mqtt.example.com جایگزین کنید. سپس فایل را save کرده و از آن خارج شوید.
این فایل موارد زیر را انجام می دهد:
- ورودی های ناشناس را غیر فعال می کند.
- از فایل پسورد برای فعال کردن هویت پسورد استفاده می کند.
- یک سرویس دهنده ی نا امن در پورت ۱۸۸۳ را فقط برای localhost راه اندازی می کند.
- یک سرویس دهنده ی امن را در پورت ۸۸۸۳ راه اندازی می کند.
- یک سرویس دهنده ی امن مبتنی بر وب سایت را در پورت ۸۰۸۳ راه اندازی می کند.
اکنون Mosquitto را ریستارت کنید تا تغییرات در پیکربندی لحاظ شوند:
sudo systemctl restart mosquitto
مجدداً امتحان کنید تا مطمئن شوید که سرویس راه ندازی می شود:
sudo systemctl status mosquitto
Output
mosquitto.service – LSB: mosquitto MQTT v3.1 message broker
(Loaded: loaded (/etc/init.d/mosquitto; generated
Active: active (running) since Mon 2018-07-16 15:03:42 UTC; 2min 39s ago
(Docs: man:systemd-sysv-generator(8
(Process: 6683 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS
(Process: 6699 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS
(Tasks: 1 (limit: 1152
CGroup: /system.slice/mosquitto.service
└─۶۷۰۵ /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
وضعیت باید به صورت active (running) باشد. اگر این گونه نیست، فایل پیکربندی را مجدداً چک کرده و ریستارت کنید. برخی از اطلاعات ممکن است در فایل Mosquitto موجود باشند:
sudo tail /var/log/mosquitto/mosquitto.log
چنان چه همه موارد صحیح هستند، از ufw استفاده کنید تا دو پورت جدید به فایروال متصل شوند:
sudo ufw allow 8883
sudo ufw allow 8083
اکنون Mosquitto به صورت کامل نصب شده و ما می توانیم Certbot را پیکربندی کنیم.
مرحله چهارم: پیکربندی مجدد Certbot
Certbot به صورت اتوماتیک گواهی های SSL ما را قبل از منقضی شدن تمدید خواهد کرد؛ اما باید به آن فرمان بدهیم که سرویس Mosquitto را نیز ریستارت کند.
فایل پیکربندی مجدد Certbot را برای نام دامنه ی خود باز کنید:
sudo nano /etc/letsencrypt/renewal/mqtt.example.com.conf
در خط آخر فرمان renew_hook را اضافه کنید:
etc/letsencrypt/renewal/mqtt.example.com.conf/
renew_hook = systemctl restart mosquitto
فایل را ذخیره کرده و آن را ببندید، سپس Certbot را راه اندازی کنید تا مطمئن شوید سینتکس به درستی عمل می کند:
sudo certbot renew –dry-run
اگر خطایی مشاهده نکردید، عملیات به درستی انجام شده است.
مرحله پنجم: بررسی Mosquitto
ما برخی از دستورات کلاینت Mosquitto را نصب کردیم. اکنون به روش زیر می توانیم بررسی های لازم را انجام دهیم:
“mosquitto_sub -h localhost -t test -u “your-user” -P “your-password
و با mosquitto_pub می توانیم آن را انتشار دهیم:
“mosquitto_pub -h localhost -t test -m “hello world” -u “your-user” -P “your-password
برای اشتراک گذاری با سرویس دهنده ی ایمن در پورت ۸۸۸۳، به صورت زیر عمل کنید:
“mosquitto_sub -h mqtt.example.com -t test -p 8883 –capath /etc/ssl/certs/ -u “your-username” -P “your-password
و این گونه به سرویس دهنده ی ایمن انتشار دهید:
“mosquitto_pub -h mqtt.example.com -t test -m “hello world” -p 8883 –capath /etc/ssl/certs/ -u “your-username” -P “your-password
توجه داشته باشید که ما از نام هاست کامل به جای localhost استفاده می کنیم. از آن جایی که گواهی SSL ما برای mqtt.example.com صادر شده است، اگر بخواهیم ارتباطی امن را برای localhost داشته باشیم با خطایی مواجه خواهیم شد که به ما می گوید نام هاست شما با نام هاست گواهینامه مطابقت ندارد.
