Skip to Content

تنظیمات nginx اودو + وبسوکت

https://modoo.ir/web/image/product.template/23/image_1920?unique=7f9f073

2,000,000 ﷼ 2000000.0 IRR 2,000,000 ﷼

Not Available For Sale

  • نسخه

این ترکیب وجود ندارد

شرایط و ضوابط
 تست شده
دانلود پس از خرید

ما از انجینکس یا nginx به عنوان یک پروکسی معکوس HTTP استفاده می کنیم. اتصالات HTTP و HTTPS ورودی توسط nginx مدیریت می شود که پردازش درخواست ها را به سرور Odoo واگذار می کند. سرور Odoo به گونه‌ای پیکربندی شده است که برای درخواست‌های معمولی (http_port) فقط به رابط حلقه محلی (127.0.0.1) در پورت 8069 و برای درخواست‌های طولانی نظرسنجی (longpolling_port) در پورت 8072 گوش دهد. ممکن است لازم باشد شماره پورت ها را با پیکربندی خود تطبیق دهید.

به طور معمول شما می توانید سرور odoo خود را با هر پورت باز داخل سرور خود اجرا کنید، فقط باید آن را در Odoo Config خود مشخص کنید (به طور پیش فرض 8069 است). در این مورد، ما در مورد http صحبت می کنیم


نگرانی ما اضافه کردن حرف "s" (مخفف امنیت) در انتهای http (HTTPS) است که برای استفاده از پورت 443 نیاز دارید.

چرا از Nginx استفاده می کنیم؟


ما در اینجا از Nginx به دلایل زیادی استفاده می کنیم:


  • Nginx و سایر وب سرورها برای پیاده سازی لایه ssl، ایمن سازی ارتباطات، مدیریت ترافیک داده ها و بهینه سازی عملکرد می آیند. مثل پلیس راهنمایی و رانندگیه
  • یک وب سرور منبع باز است (نسخه پولی به نام Nginx plus وجود دارد)
  • Nginx در معیارهای سنجش عملکرد وب سرور امتیاز خوبی دارد
  • بسیاری از افراد در جامعه Odoo از آن استفاده می کنند.
  • این مقاله من است، من می توانم ابزار را انتخاب کنم :D

Nginx را در سرور اوبونتو نصب و راه اندازی کنید:


نصب Nginx در سرور اوبونتو بسیار آسان است، فقط باید این دستورات را اجرا کنید:


sudo apt update
sudo apt install nginx


پس از اتمام نصب، می توانید با استفاده از این دستور وضعیت آن را بررسی کنید:

sudo systemctl status nginx

می توانید نصب خود را با باز کردن http://your_ip_address یا localhost در مرورگر خود بررسی کنید


برای اطلاعات بیشتر می توانید به این آموزش خوب مراجعه کنید. می توانید نصب خود را با باز کردن http://your_ip_address یا localhost در مرورگر خود بررسی کنید.


با دستورات زیر، فایل اجرایی را ایجاد کنید:

sudo mv ~/odoo /etc/nginx/sites-available/$WEBSITE_NAME
  sudo ln -s /etc/nginx/sites-available/$WEBSITE_NAME /etc/nginx/sites-enabled/$WEBSITE_NAME
  sudo rm /etc/nginx/sites-enabled/default
  sudo service nginx reload

دقت کنید که:

$WEBSITE_NAME  = نام دامنه شما


و این دستورات را عینا در فایل your_WEBSITE_NAME کپی کنید: ($WEBSITE_NAME = نام دامنه)

server {
  listen 80;

  # set proper server name after domain set
  server_name $WEBSITE_NAME;

  # Add Headers for odoo proxy mode
  proxy_set_header X-Forwarded-Host \$host;
  proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto \$scheme;
  proxy_set_header X-Real-IP \$remote_addr;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  proxy_set_header X-Client-IP \$remote_addr;
  proxy_set_header HTTP_X_FORWARDED_HOST \$remote_addr;

  #   odoo    log files
  access_log  /var/log/nginx/odoo-access.log;
  error_log       /var/log/nginx/odoo-error.log;

  #   increase    proxy   buffer  size
  proxy_buffers   16  64k;
  proxy_buffer_size   128k;

  proxy_read_timeout 900s;
  proxy_connect_timeout 900s;
  proxy_send_timeout 900s;

  #   force   timeouts    if  the backend dies
  proxy_next_upstream error   timeout invalid_header  http_500    http_502
  http_503;

  types {
    text/less less;
    text/scss scss;
  }

  #   enable  data    compression
  gzip    on;
  gzip_min_length 1100;
  gzip_buffers    4   32k;
  gzip_types  text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
  gzip_vary   on;
  client_header_buffer_size 4k;
  large_client_header_buffers 4 64k;
  client_max_body_size 0;

  location / {
    proxy_pass    http://127.0.0.1:8069;
    # by default, do not forward anything
    proxy_redirect off;
  }

  location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 2d;
    proxy_pass http://127.0.0.1:8069;
    add_header Cache-Control "public, no-transform";
  }

  # cache some static data in memory for 60mins.
  location ~ /[a-zA-Z0-9_-]*/static/ {
    proxy_cache_valid 200 302 60m;
    proxy_cache_valid 404      1m;
    proxy_buffering    on;
    expires 864000;
    proxy_pass    http://127.0.0.1:8069;
  }
}

دقت کنید که در این تنظیمات، حالت چت، تماس صوتی و ویدیویی وجود ندارد. یعنی حالت چت داخلی اودو و نیز چت انلاین به درستی و بهنگام (real-time) نمی باشد. برای حل این مساله بایستی محصول بالا را خریداری کنید.

البته ممکن است به صورت موقت و بدون ssl به مشکل نخورید، ولی بعدا مشکل ایجاد خواهد شد.

نصب ssl - https

برای نصب ssl در nginx و در سرور اوبونتو، کدهای زیر را وارد کنید و پکیج های مهم را نصب کنید:

sudo apt-get update -y
sudo apt install snapd -y
sudo snap install --classic certbot
sudo apt install certbot

  sudo apt-get install python3-certbot-nginx -y

سپس این دستور را بزنید. دقت کنید که ایمیل و نام دامنه را از شما خواهد پرسید و در این دستور، درست وارد کنید:

sudo certbot certonly --agree-tos --email test@example.com --webroot -w /var/lib/letsencrypt/ -d your_domain.com -d www.your_domain.com

Nginx را ریستارت کنید

sudo systemctl restart nginx
تنظیمات مورد نیاز در کانفیگ اودو

پس از تنظیمات nginx (یا حتی قبل از آن)، نیاز است که دستوراتی به فایل کانفیگ اودو اضافه کنید. پس به فایل Odoo.config  بروید و این موارد را اضافه کنید:

proxy_mode = True
limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 8

دقت کنید که ورکرر میتواند کمتر باشد و حداقل آن را 2 میتوانید قرار دهید. این بر سرعت سرور شما موثر است. برای جزئیات بیشتر، مستندات اودو را ببینید.