ویرگول
ورودثبت نام
فرهاد
فرهاد
خواندن ۱ دقیقه·۲ سال پیش

چگونه تنظیمات nginx را اتوماتیک reload کنیم؟

nginx
nginx

همانطور که می‌دانید تنظیمات nginx در etc/nginx/nginx.conf/ قرار دارد و اگر تغییری در آن فایل انجام شود باید nginx را با دستور nginx -s reload از این تغییرات آگاه سازیم درغیر اینصورت تغییرات اعمال نخواهد شد.

حال میخواهیم کاری کنیم که این کامند به‌صورت خودکار با تغییر یافتن فایل تنظیمات اجرا شود.

پس باید از تغییرات فایل nginx.conf آگاه شویم، این کار با استفاده از inotify امکان‌پذیر است. این inotify (inode notify) یک زیرسیستم هسته لینوکس است که توسط John McCutchan ایجاد شده است تا تغییرات سیستم فایل را نظارت کند و آن را به برنامه ها گزارش دهد. (monitoring filesystem events)

برای استفاده از inotify ابتدا tools آنرا نصب می کنیم:

sudo apt update sudo apt install inotify-tools

بعد از تکمیل نصب، یک فایل در مسیر دلخواه و با نام nginx_reloader.sh ایجاد کنید و داخل آن اینها را قرار دهید:

#!/bin/bash while true do inotifywait --exclude .swp -e create -e modify -e delete -e move /etc/nginx/nginx.conf nginx -t if [ $? -eq 0 ] then echo &quotDetected Nginx Configuration Change&quot echo &quotExecuting: nginx -s reload&quot nginx -s reload fi done

این اسکریپت در یک حلقه نامتناهی با استفاده از inotify تغییرات فایل nginx.conf را رصد می کند و در صورتی که تغییرات را دید ابتدا با کامند nginx -t سینتکس فایل را چک می کند تا خطایی نداشته باشد. اگر اوکی بود، با چاپ پیغام، کامند reload را اجرا می کند.

الان به این فایل باید مجوز اجرا را بدهیم:

chmod +x nginx_reloader.sh

حال کافیست این فایل را اجرا کنیم:

sudo ./nginx_reloader.sh

الان کافیست فایل تنظیمات nginx تغییر کند، خودش reload خواهد شد.

nginxlinuxinotifyلینوکسوب سرور
علاقه‌مند به مهندسی نرم افزار، هوش مصنوعی و موسیقی
شاید از این پست‌ها خوشتان بیاید