معمولا در سرورهای لینوکسی، از Nginx برای مدیریت سرویس های ادو استفاده می شود. در این مقاله به صورت قدم به قدم نصب و کانفیگ آن را توضیح می دهم.
1- نصب Nginx:
sudo apt update sudo apt install nginx
2- ایجاد فایل کانفیگ Nginx
این فایل را در مسیر زیر و با اسم اختیاری مثلا odoo.conf درست می کنیم. من از WinSCP برای مدیریت فایل ها در سرور استفاده می کنم که راه حل جایگزین استفاده از دستورات bash لینوکس هست که البته حرفه ای تر هم هست😉
/etc/nginx/sites-available/odoo.conf
3- ساخت symbolic link
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
4- نمونه فایل کانفیگ nginx
upstream odooerp {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
server_name odooerp;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name odooerp.local;
ssl on;
ssl_certificate /etc/nginx/serverk.crt;
ssl_certificate_key /etc/nginx/serverk.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'HIGH:!aNULL:!MD5';
#access_log /var/log/nginx/access.log;
#error_log /var/log/nginx/error.log;
client_max_body_size 100M;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
# Redirect websocket requests to odoo gevent port
location / {
proxy_pass http://odooerp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 720s;
proxy_redirect off;
}
location /longpolling {
proxy_pass http://127.0.0.1:8072; # Gevent port for WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Additional location for WebRTC signaling (if needed)
location /webrtc {
proxy_pass http://127.0.0.1:8072; # Adjust if needed
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Enable WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /websocket {
proxy_pass http://127.0.0.1:8072; # Odoo WebSocket service
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 720s;
}
}
یک سری توضیحات در مورد کدهای بالا:
* تنظیمات مربوط به ssl بیشتر حجم کد رو گرفته . اگرچه اختیاری هست اما در محیط واقعی بدون ssl به مشکلات زیادی می خوره
* در کانفیک ادو هم باید Option های مربوط به reverse proxy رو اضافه کنیم
* خط های مربوط به لاگ رو کامنت کردم که می تونید برای خطایابی اونها رو فعال کنید (خط 29 و 30)
*بلاک های longpolling و پایین تر از آن مربوط به تنظیمات websocket برای استفاده Realtime بودن در ماژول های گفتگو است که اون هم نیاز هست در کانفیگ ادو اصلاحاتی انجام شود.
5- تست کانفیگ Nginx
sudo nginx -t
اگر کانفیگ nginx مشکلی نداشته باشه ، پیغام مناسب نشون می ده و در صورت داشتن اشکال ، راهنمایی برای رفع آن می کنه
6- اجرای nginx
و در نهایت اجرا nginx . البته با ریست کردن سرور هم ، nginx آماده کار می شود
sudo systemctl reload nginx
در مورد کانفیگ ادو هم در این پست توضیحاتی آورده شده که می توانید مطالعه کنید. امیدوارم مطالب گفته شده مورد استفاده شما قرار گرفته شده باشه.