Reverse Proxy (Nginx) คือ รูปโทโปโลยีที่ใช้ในการทดลอง
Total Page:16
File Type:pdf, Size:1020Kb
reverse proxy (nginx) คือ reverse proxy จะคล้ายๆ load balancer จะแตกต่างกันที่ตัว reverse proxy กับ web จะอยู่ที่เครื่อง เดียวกัน reverse proxy จะท าหน้าที่เป็นที่พักข้อมูล แล้วไปเรียกใช้จาก back end web server อีกที รูปโทโปโลยีที่ใช้ในการทดลอง วิธีคอนฟิก ขั้นตอนติดตั้งและใช้งาน reverse proxy(nginx) บน odoo 1.open in Terminal เรียกค าสั่ง sudo -i เพื่อเข้าไปยัง root 2. ใช้ค าสั่ง sudo apt-get update เพื่อให้ได้ version ล่าสุด 3.หลังจาก up date เสร็จเราจะต้องไปติดตั้ง packet บางตัวที่จ าเป็น ดังค าสั่งต่อไปนี้ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties- common 4.เสร็จแล้วให้ “download curl” โดยใช้ค าสั่ง curl - fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – 5. ค าสั่งถัดไป sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 6. ท าการ update อีกครั้งเพื่อได้ versionใหม่เข้ามา sudo apt-get update 7.เสร็จแล้วให้ท าการติดตั้ง packet ของ docker sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose 8. หลังจากติดตั้ง docker เสร็จแล้ว เราก็ไปสร้าง docker ขึ้นมาเอาไว้ใน opt sudo mkdir -p /opt/docker จากนั้นเข้าไปที่ docker directory cd /opt/docker 9.จากนั้นสร้าง docker-compose.yml โดยสามารถคัดลอก code ได้จากด้านล่าง version: "2" services: postgres: image: postgres:12.2 container_name: postgres restart: always ports: - "5432:5432" environment: - POSTGRES_DB=postgres - POSTGRES_USER=odoo - POSTGRES_PASSWORD=0d00pwd - PGDATA=/var/lib/postgresql/data/pgdata volumes: - /myproject/postgresql/data:/var/lib/postgresql/data odoo: image: odoo:13.0 container_name: odoo restart: always ports: - "8069:8069" environment: - HOST=postgres - PORT=5432 - USER=odoo - PASSWORD=0d00pwd volumes: - /myproject/odoo/addons:/mnt/extra-addons - /myproject/odoo/config:/etc/odoo - /myproject/odoo/log:/var/log/odoo - /myproject/odoo/data:/var/lib/odoo depends_on: - postgres nginx: image: nginx container_name: nginx restart: always ports: - "80:80" environment: - NGINX_HOST=127.0.0.1 - NGINX_PORT=80 volumes: - /myproject/nginx/config:/etc/nginx/conf.d - /myproject/nginx/log:/var/log/nginx 10.จากนั้นใช้ค าสั่ง sudo docker-compose up -d เพื่อเรียกให้ docker hub มาติดตั้งในเครื่องนี้โดยตรง 11. สร้าง odoo.conf ใน path /myproject/odoo/config/odoo.conf โดยสามารถคัดลอก code ได้จาก ด้านล่าง [options] addons_path = /mnt/extra-addons admin_passwd = admin auto_reload = False csv_internal_sep = , data_dir = /var/lib/odoo/.local/share/Odoo ;db_host = False db_maxconn = 64 db_name = False db_password = 0d00pwd db_port = 5432 db_template = template1 db_user = odoo dbfilter = .* debug_mode = False demo = {} email_from = False geoip_database = /usr/share/GeoIP/GeoLiteCity.dat import_partial = jasperpid = openerp-jasper.pid jasperport = 8090 jasperunlink = True limit_memory_hard = 2684354560 limit_memory_soft = 2147483648 limit_request = 8192 limit_time_cpu = 60 limit_time_real = 120 list_db = True log_db = False log_db_level = warning log_handler = :INFO log_level = info logfile = /var/log/odoo/odoo-server.log logrotate = False longpolling_port = 8072 max_cron_threads = 2 osv_memory_age_limit = 1.0 osv_memory_count_limit = False ;pg_path = None pidfile = False proxy_mode = False reportgz = False secure_cert_file = server.cert secure_pkey_file = server.pkey server_wide_modules = None smtp_password = False smtp_port = 25 smtp_server = localhost smtp_ssl = False smtp_user = False syslog = False test_commit = False test_enable = False test_file = False test_report_directory = False thai_font_path = timezone = False translate_modules = ['all'] unaccent = False without_demo = False workers = 5 xmlrpc = True xmlrpc_interface = xmlrpc_port = 8069 xmlrpcs = True xmlrpcs_interface = xmlrpcs_port = 8071 12.จากนั้นใช้ค าสั่งสร้าง directory ของ addons ที่ /myproject/odoo/addons ตัวอย่างคือ enterprise-13.0 กับ slu mkdir /myproject/odoo/addons/enterprise-13.0 mkdir /myproject/odoo/addons/slu 13. เพิ่ม /enterprise-13.0, /mnt/extra-addons/slu ใน nano /myproject/odoo/config/odoo.conf 14. เปลี่ยน Uid และ Gid เป็น odoo (เพื่อให้ user odoo มี permission ในการเข้าถึงไฟล์) sudo docker exec -it -u 0 odoo chown -R odoo /mnt/extra-addons /etc/odoo /var/log/odoo /var/lib/odoo sudo docker exec -it -u 0 odoo chgrp -R odoo /mnt/extra-addons /etc/odoo /var/log/odoo /var/lib/odoo 15. สร้างไฟล์โดยใช้ค าสั่ง nano /myproject/nginx/config/nginx-odoo.conf โดยสามารถคัดลอก code ได้ จากด้านล่าง upstream backend-odoo { server 127.0.0.1:8069; } server { # ---------------- Lets not use SSL at the moment -------------------- #listen 443 default; # ssl settings #ssl on; #ssl_certificate /etc/nginx/ssl/cert.pem; #ssl_certificate_key /etc/nginx/ssl/key.pem; #keepalive_timeout 60; # proxy header and settings #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_redirect off; # -------------------------------------------------------------------- location / { proxy_pass http://backend-odoo; proxy_read_timeout 300000; } location ~* /web/static/ { # cache static data proxy_cache_valid 200 60m; proxy_buffering on; expires 864000; proxy_pass http://backend-odoo; } client_max_body_size 100M; # 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; # force timeouts if the backend dies proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # enable data compression gzip on; gzip_min_length 1100; gzip_buffers 4 32k; gzip_types text/plain text/xml text/css text/less application/x-javascript application/xml application/json application/javascript; gzip_vary on; จากนั้นเปลี่ยน server 127.0.0.1:8069 ใน upstream เป็น ip address:<port> 16. Restart odoo, postgres, nginx โดยใช้ค าสั่ง sudo docker restart odoo postgres nginx 17. จากนั้นทดลองเข้า ip address ผ่าน browser ดู .