การติดตั้งโปรเจกต์ Webman บน Baota Panel

0. ความต้องการของสภาพแวดล้อม

  • PHP >= 8.1

1. สร้างโปรเจกต์

cd /www/wwwroot
composer create-project workerman/webman:~2.0

2. ตั้งค่าเว็บไซต์

หมายเหตุ:
Baota จะคอยดูแลการทำงานของโปรเซสโดยอัตโนมัติ คำสั่งเริ่มต้นคือ php /www/wwwroot/webman/start.php start โดยไม่ต้องใช้พารามิเตอร์ -d มิฉะนั้นจะไม่สามารถเริ่มต้นได้

3. กำหนดค่าเว็บไซต์

4. ตั้งค่าไดเรกทอรีการทำงาน

หมายเหตุ:
เพื่อความปลอดภัยของระบบ ไดเรกทอรีการทำงานจะต้องตั้งค่าเป็น /public การตั้งค่าที่ไม่ถูกต้องอาจทำให้ไฟล์ที่สำคัญถูกเข้าถึงจากภายนอก

5. ตั้งค่า URL แบบเสมือน

  # ส่งต่อคำขอไปยัง webman
  location ^~ / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          proxy_pass http://127.0.0.1:8787;
      }
  }

  # ห้ามเข้าถึงไฟล์ที่ลงท้ายด้วย .php
  location ~ \.php$ {
      return 404;
  }

  # อนุญาตเข้าถึงไดเรกทอรี .well-known
  location ~ ^/\.well-known/ {
    allow all;
  }

  # ห้ามเข้าถึงไฟล์หรือไดเรกทอรีที่ขึ้นต้นด้วย .
  location ~ /\. {
      return 404;
  }

6. ตั้งสิทธิ์การเขียนให้กับ runtime

chmod -R 777 /www/wwwroot/webman/runtime

หมายเหตุ
ปกติไม่จำเป็นต้องมีขั้นตอนนี้ อาจจะเป็นข้อบกพร่องของ Baota ซึ่งผู้ใช้ที่ตั้งบริการเป็น www เริ่มทำงาน แต่ในความเป็นจริงคือผู้ใช้ daemon ที่เริ่มทำงาน ส่งผลให้ไม่สามารถเขียนในไดเรกทอรี runtime ได้

7. รีสตาร์ทบริการ

8. เข้าถึงเว็บไซต์

เข้าถึงเว็บไซต์ที่ http://example.com จะเห็นหน้าแรกของ webman

การแก้ไขปัญหา

  • เว็บไซต์ไม่สามารถเข้าถึงได้ แสดงข้อความ 502 Bad Gateway
    ตรวจสอบว่า webman ได้เริ่มทำงานหรือไม่

  • webman ไม่สามารถเริ่มทำงานได้
    ตามภาพ ตรวจสอบว่ามีบันทึกข้อผิดพลาดหรือไม่