شعار همیشگی: حفظ مشتریان فعلی ، دعوت از مشتریان قبلی ، جذب مشتریان آتی.
نصبMosquitto MQTT بر روی Ubuntu 18.04 (راهاندازی سریع)
با شما هستیم با نصبMosquitto MQTT بر روی Ubuntu 18.04 (راهاندازی سریع) در خدمت شما خواهیم بود تا انتهای این مطلب ما را همراهی کنید. و یا با محیط آن آشنا گردید به مطالعه این مطللب بپردازید.
بکاپ منظم روزانه هفتگی ماهانه در یک سرور مجزا از مزیت نگارنوین نسبت به سایرین می باشد.
شرکت نگارنوین با همت بهترین کارشناس های قوی به شما کاربران و مشتریهای عزیز خدمت رسانی میکند تا هرچه آسان تر و بهتر به درخواست های خود برسید.
Mosquitto MQTT چیست؟
MQTT یک پروتکل پیامرسانی ماشین به ماشین بوده که برای ارائهی ارتباطات بین دستگاهها از طریق اینترنت مورد استفاده قرار میگیرد. Mosquitto یک سرویس محبوب از MQTT بوده که از پشتیبانی ارتباطی بسیار مناسبی برخوردار بوده و نصب و پیکربندی آن هم بسیار ساده است.
در این راهاندازی سریع ما نصب Mosquitto را آموزش داده و از گواهینامه SSL رایگان Let’s Encrypt جهت افزایش امنیت ترافیک MQTT استفاده میکنیم.
پیشنیازها:
پیش از شروع مراحل نصب، باید موارد زیر را رعایت کنید:
- یک سرور Ubunto 18.04 با یک کاربر غیر روت با دسترسی 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 داشته باشیم با خطایی مواجه خواهیم شد که به ما میگوید نام هاست شما با نام هاست گواهینامه مطابقت ندارد.