ไม่มีหมวดหมู่

การ Run React บนระบบงานจริง (Production) แบบรองรับ SSL หรือ https ด้วย nginx

เมื่อเราเขียนโปรแกรมด้วย react เสร็จ การทดสอบส่วนใหญ่ เราก็จะเรียกให้ทำงานด้วยคำสั่ง

npm start

เพื่อทดสอบการใช้งาน และเมื่อจะใช้งาน ห้ามนำวิธีการนี้ไปใช้งานจริง!!! เพราะ เหตุผลเรื่องความปลอดภัย เนื่องจากการใช้งานแบบนี้ คนที่เรียกใช้งานจะมองเห็น code หรือไฟล์ทั้งหมดที่เขียนขึ้นมา นั่นก็คือถ้าคุณมี key หรือ รหัสผ่าน หรือรหัสที่เชื่อมต่อกับฐานข้อมูล หรือ source code มันก็จะเห็นทั้งหมด นั่นคือหายนะ สำหรับ เรื่องความปลอดภัย

ตัวอย่างการเรียกทดสอบการใช้งาน เมื่อดูจาก browser ก็จะเห็นตามรูป จะเห็นว่า มันมองเห็น source code ทั้งหมดที่เราทำขึ้นมา

สิ่งที่เราต้องทำเวลาที่จะใช้งานจริงก็คือ ทำการ build เพื่อทำ production ด้วยคำสั่ง

npm run build

พอจะ run ก็ใช้คำสั่ง serve โดยติดตั้งโปรแกรมก่อน ด้วยคำสั่ง

npm install -g serve

จากนั้นก็สั่งให้ app ทำงานด้วยคำสั่ง

serve -s build

เมื่อโปรแกรม react ทำงาน ก็จะทำงานที่ port 3000

เราอาจจะระบุ port ที่ใช้งานได้ตามที่ต้องการ เช่น 80 หรือ port เดียวกับ web ทั่วไป กรณีที่ run port ต่ำกว่า 1024 จะต้องใช้สิทธิ root หรือ admin ระบบเท่านั้นถึงจะทำได้

serve -s build -l 80
ถ้าจะให้โปรแกรมทำงานแบบ background ก็ใช้คำสั่ง
serve -s build -l 80 &

อ่านเพิ่มเติมได้จากนี่ https://handsonreact.com/docs/build-deploy

ถ้าต้องการ run ด้วย pm2 ก็ทำการติดตั้ง pm2 ก่อนแล้วเรียกใช้ด้วยคำสั่ง

pm2 --name myapp serve build 80 --spa

การติดตั้ง pm2 ทำได้ด้วยคำสั่ง

npm install pm2@latest -g

รายละเอียดศึกษาเพิ่มได้ที่ https://pm2.keymetrics.io/docs/usage/quick-start/

ต่อไปถ้าเราจะให้การเชื่อมต่อไปที่ app server แบบ https หรือ ผ่าน ssl จะทำได้อย่างไร ในที่นี้เราสามารถใช้ nginx หรือ web server มาทำ ssl proxy ได้ โดยการติดตั้ง nginx ก่อน

sudo apt update
sudo apt install nginx

จากนั้นเราจะแก้ไข file default ใน /etc/nginx/sites-available/default (ควรสำเนาไฟล์ไว้ก่อนด้วย) จากนั้นให้แก้เป็นแบบนี้

upstream my_nodejs_upstream {
server 127.0.0.1:3000;
keepalive 64;
}

server {
listen 443 ssl;

server_name www.my-website.com;
ssl_certificate_key /etc/ssl/main.key;
ssl_certificate /etc/ssl/main.crt;

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

proxy_pass http://my_nodejs_upstream/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}

บรรทัด server_name www.my-website.com; ให้เปลี่ยนเป็น ชื่อ server ของเราแทน ส่วนตรง ssl ก็ใส่ไปตามนั้นก่อน เดี๋ยวเราจะใช้ let’s encrypt มาทำการสร้าง private key, public key สำหรับ ssl ดูการทำได้จากนี่ https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04

เริ่มจากติดตั้งคำสั่ง

sudo apt install certbot python3-certbot-nginx

ตรวจสอบ config file ว่ามีปัญหาอะไรหรือไม่

sudo nginx -t

ถ้ามี error อาจจะเอาบรรทัดนี้ออกไปก่อน

ssl_certificate_key /etc/ssl/main.key;
ssl_certificate /etc/ssl/main.crt;

เร่ิมทำการขอ certificate

sudo certbot --nginx -d example.com -d www.example.com

ตรง example.com หรือ www.example.com ก็เปลี่ยนเป็นชื่อเครื่องเราแทน ถ้ามีชื่อเดียวก็ระบุอันเดียวพอ เช่น -d kaebmoo.wordpress.com

จากนั้นก็ทำไปทีละขั้น ตามที่โปรแกรมถามจนกว่าจะเสร็จ

พอเสร็จแล้วก็ทำการ restart nginx server

sudo systemctl reload nginx

จากนั้นพอเรียกใช้งานไปที่ https://www.example.com มันก็จะไปเรียกใช้งาน react app ของเราทาง http://127.0.0.1:3000

โดย nginx config ก็คือบรรทัด proxy_pass http://my_nodejs_upstream/; คือการระบุให้ nginx เป็น proxy ที่ไปเรียก my_nodejs_upstream โดย my_nodejs_upstream

upstream my_nodejs_upstream {
server 127.0.0.1:3000;
keepalive 64;
}

ก็จะกำหนดให้ไปเรียกใช้งาน 127.0.0.1:3000 ซึ่งก็จะมี react program ของเรา ทำงานอยู่ จากที่เราสั่ง serve -s build -l 80 นั่นเอง

ประมาณนี้ client <—> nginx proxy https port 443 <—> react app port 3000

ไม่มีหมวดหมู่

ปลอมแปลงตำแหน่งของคุณใน Google Chrome Desktop

ปลอมแปลงตำแหน่งของคุณในเดสก์ท็อป Google Chrome

  1. ไป web google maps เลื่อนไปตำแหน่งที่ต้องการ click ขวา เลือกตำแหน่ง Lat และ Long จะปรากฏในช่องด้านบน
  2. เปิด Google Chrome Desktop บนอุปกรณ์ของคุณ
  3. กด Ctrl + Shift + I เพื่อเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
  4. เลือกไอคอนเมนูจุดสามจุดที่ด้านล่างซ้ายของบานหน้าต่างด้านขวา
  5. เลือกเซนเซอร์และตำแหน่งที่กำหนดเองภายใต้ตำแหน่งทางภูมิศาสตร์
  6. เพิ่มพิกัด Lat และ Long ที่คุณคัดลอกไว้ก่อนหน้าในช่องใต้ตำแหน่งทางภูมิศาสตร์
  7. โหลดหน้าเว็บใหม่

ดัดแปลงมาจากนี่ https://th.geekmarkt.com/how-fake-your-location-google-chrome

มั่ว, ไม่ธรรมดา

แก้ไขปัญหา wordpress

  1. ไม่สามารถเปลี่ยน permalink ไปเป็นแบบอื่นได้ เช่น เปลี่ยนแล้วเข้าถึง page หรือ post ไม่ได้
  2. ขึ้น Invalid JSON Response Error เวลาที่ ปรับปรุง เพิ่ม page หรือ post ไม่สามารถที่จะ publish ได้

แนวทางมีเยอะถ้าหาด้วย search ต่าง ๆ เช่น https://onesmartsheep.com/post/4-ways-to-fix-wordpress-permalinks-not-working-visual-guide#:~:text=The%20fastest%20way%20to%20resolve,the%20setting%20fixes%20the%20issues. ซึ่งมันก็เขียนลอกลอกวิธีกันมา ก็ต้องไปลองดู

แต่ที่ทำแล้วแก้ไขได้อันหนึ่งคือ การแก้ไขค่าใน Apache Web configuration ไฟล์นี้ /etc/apache2/apache2.conf

<Directory /var/www/html/portal>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

/var/www/html/portal คือตำแหน่งที่ติดตั้ง wordpress

จากนั้นก็ restart Apache Web แล้วลองดู (น่าจะใช้ได้)

ไม่มีหมวดหมู่

การติดตั้ง sftp บน Windows

จากนี่ https://winscp.net/eng/docs/guide_windows_openssh_server

ไปที่ Settings > Apps > Optional features and click on View features.

พิมพ์ค้นหา “OpenSSH server” feature, จากนั้นก็เลือกเพื่อติดตั้ง, click Next, click Install.

เปิด PowerShell ในแบบ Administrator แล้วสั่ง

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\Windows\System32\OpenSSH\sshd.exe"

เปิดให้ OpenSSH SSH Server ทำงานด้วยการไปที่ Control Panel > System and Security > Administrative Tools and open Services. Locate OpenSSH SSH Server service. ทำการ start service หรือกด Action > Start

สั่งเปิด ถ้าต้องการให้มันทำงานอัตโนมัติก็เปลี่ยนที่ Action > Properties (หรือกด double-click ที่ service). พอขึ้น Properties dialog, ก็เปลี่ยน Startup type เป็น Automatic กดยืนยัน.

แค่นี้ก็จะได้ SFTP Server มาใช้งานละ การใช้งานก็ใช้ WinSCP Client ในการเชื่อมต่อ โดย User name ก็ใช้ User name และ Password เดียวกับ User ของ Windows

ไม่มีหมวดหมู่

การติดตั้ง Ubuntu บน Windows

ติดตั้งผ่าน Microsoft Store ได้เลย แต่ส่วนใหญ่ติดตั้งเสร็จก็จะ run ไม่ได้

เริ่มจาก นี่ https://learn.microsoft.com/en-us/windows/wsl/troubleshooting

ที่ต้องเปิดเพิ่มจะมีอีก 1 ตัวคือ Virtual Machine Platform

https://github.com/microsoft/WSL/issues/5014

มันยังไม่จบแค่นั้น ไปหา wsl_update_x64.msi มาติดตั้งเพิ่มอีก

https://github.com/MicrosoftDocs/WSL/issues/977

หลังจากนี่ ก็น่าจะใช้ได้ละ ถ้าไม่ได้ก็หาต่อไป

การแก้ไข เวลาขึ้น error system has not been booted with system as init system หรือ เมื่อใช้คำสั่ง systemctl ไม่ได้

docker – (using WSL ubuntu app) system has not been booted with system as init system (PID 1). Can’t operate – Stack Overflow