Monday, May 19, 2025

ทำให้ subdomain ที่ใช้ ssl จาก certbot สามารถใช้ socket io ได้ ใน nginx

 หลังจากที่สร้าง subdomain  และทำ ssl โดยใช้ certbot แล้วจะได้ script หน้าตาประมาณนี้

server {

    server_name socketio.dent.infovaley.com;

    location / {

        proxy_set_header X-Forwarded-Proto https;

        proxy_pass http://localhost:8822;

    }


    listen [::]:443 ssl; # managed by Certbot

    listen 443 ssl; # managed by Certbot

    ssl_certificate /etc/letsencrypt/live/socketio.dent.infovaley.com/fullchain.pem; # managed by Certbot

    ssl_certificate_key /etc/letsencrypt/live/socketio.dent.infovaley.com/privkey.pem; # managed by Certbot

    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}



server {

    if ($host = socketio.dent.infovaley.com) {

        return 301 https://$host$request_uri;

    } # managed by Certbot



    listen 80;

    listen [::]:80;

    server_name socketio.dent.infovaley.com;

    return 404; # managed by Certbot


}


ให้ทำการแก้ไข location เป็น 


location / {

        # Pass headers required for WebSocket support

        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;


        # Pass the request to the Socket.io server on localhost:8822 (change 8822 to your port)

        proxy_pass http://localhost:8822;


        # Ensure the WebSocket connection uses HTTP 1.1 and does not timeout prematurely

        proxy_http_version 1.1;

        proxy_read_timeout 86400s;

        proxy_send_timeout 86400s;

    }

Wednesday, December 27, 2023

วิธีสำหรับบังคับให้ docker build ตัว image ใหม่

 

วิธีสำหรับบังคับให้ docker build ตัว image ใหม่

docker-compose -f docker-compose.production.yml build --no-cache

Sunday, September 17, 2023

การรัน Reactjs project โดยใช้ PM2

ทำการ build project โดยใช้คำสั่ง

yarn run build

รัน project โดยใช้คำสั่ง pm2

pm2 serve build/ 8002 --name "app-name" --spa

ในที่นี้เราระบุ port เป็น 8002 และตั้งชื่อ process เป็น app-name (--spa หมายถึง single page application)

Monday, May 29, 2023

วิธีลบ docker image

 list ดู image ทั้งหมด

    docker image ls

ลบ docker image ด้วย ID

    docker image rm <<image id>>

Tuesday, May 9, 2023

การสร้าง flask project

 1. ทำการติดตั้ง virtualenv โดยใช้ pip

    pip install virtualenv

2. สร้าง virtual environment 

    python2 -m virtualenv <<dir_name>>

3. cd เข้าไปใน <<dir_name>> แล้วทำการ active virtual environment

    source bin/activate

4. ทำการติดตั้ง flask ใน virtual environment

    pip install flask

5. สร้างไฟล์ app.py ใน <<dir_name>> 

    # import flask module

    from flask import Flask


    # instance of flask application

    app = Flask(__name__)


    # home route that returns below text

    # when root url is accessed

    @app.route("/")

    def hello_world():

        return "<p>Hello, World!</p>"


    if __name__ == '__main__':

        app.run(debug=True, port=8001)


5. ทดสอบโดย run คำสั่ง

    python app.py

Thursday, February 9, 2023

การรัน flask project โดยใช้ PM2

1. ทำการ cd เข้าไปใน flask project

2. ทำการ activate environment โดยใช้คำสั่ง 
   source bin/activate

3. ทดสอบสร้างไฟล์ app.py ตามด้านล่าง
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8080, debug=True, threaded=True)

4. รัน falsk project โดยใช้คำสั่ง
   pm2 start app.py --interpreter python2

Sunday, November 20, 2022

การตรวจสอบว่าตอนนี้เรารัน docker-compose.yml ไฟล์ไหนอยู่

 เราสามารถตรวจสอบได้จาก container id ที่กำลัง active อยู่ โดยรันคำสั่งต่อไปนี้

docker inspect <container_id> | grep compose