# 🔧 ขั้นตอนตั้งค่า Apache สำหรับ Go Lead Application

## ✅ สิ่งที่ต้องทำ

### ขั้นตอนที่ 1: เปิด Proxy Modules ใน Apache

1. เปิดไฟล์: `C:\xampp\apache\conf\httpd.conf`
2. ค้นหาและ **ลบ # หน้า** บรรทัดเหล่านี้ (ถ้ามี # อยู่):

```apache
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module modules/mod_headers.so
```

3. บันทึกไฟล์

---

### ขั้นตอนที่ 2: แก้ไข VirtualHost Configuration

1. เปิดไฟล์: `C:\xampp\apache\conf\extra\httpd-vhosts.conf`

2. **แก้ไข** VirtualHost สำหรับ `advice.ezmember.org` ให้เป็นแบบนี้:

```apache
# HTTP (Port 80) - Redirect to HTTPS
<VirtualHost *:80>
    ServerAdmin my24net@hotmail.com
    DocumentRoot "c:/xampp/htdocs/advice"
    ServerName advice.ezmember.org
    Redirect permanent / https://advice.ezmember.org/
    ErrorLog "logs/advice.ezmember.org-error.log"
    CustomLog "logs/advice.ezmember.org-access.log" common
</VirtualHost>

# HTTPS (Port 443) - Main Site + Go Lead Proxy
<VirtualHost *:443>
    ServerAdmin my24net@hotmail.com
    DocumentRoot "c:/xampp/htdocs/advice"
    ServerName advice.ezmember.org
    
    # SSL Configuration
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    # ⚠️ ปรับ path ของ SSL Certificate ให้ตรงกับของคุณ
    
    # Enable Proxy
    ProxyPreserveHost On
    ProxyRequests Off
    
    # Proxy สำหรับ Go Lead Application
    ProxyPass /_go.lead/ http://localhost:9087/_go.lead/
    ProxyPassReverse /_go.lead/ http://localhost:9087/_go.lead/
    
    ProxyTimeout 300
    
    <Location /_go.lead/>
        ProxyPass http://localhost:9087/_go.lead/
        ProxyPassReverse http://localhost:9087/_go.lead/
    </Location>
    
    # Static Files
    <Directory "c:/xampp/htdocs/advice">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    
    # Logs
    ErrorLog "logs/advice.ezmember.org-ssl-error.log"
    CustomLog "logs/advice.ezmember.org-ssl-access.log" common
</VirtualHost>
```

3. บันทึกไฟล์

---

### ขั้นตอนที่ 3: ตรวจสอบ SSL Certificate

ตรวจสอบว่า SSL Certificate ของคุณอยู่ที่ไหน:

- ถ้าใช้ **Let's Encrypt**: ดูที่ `C:\xampp\apache\conf\ssl.crt\`
- ถ้าใช้ **Self-signed**: อาจเป็น `conf/ssl.crt/server.crt`

**แก้ไข path ในไฟล์ VirtualHost** ให้ตรงกับที่เก็บ SSL Certificate จริง:

```apache
SSLCertificateFile "conf/ssl.crt/advice.ezmember.org.crt"
SSLCertificateKeyFile "conf/ssl.key/advice.ezmember.org.key"
```

---

### ขั้นตอนที่ 4: ทดสอบ Configuration

เปิด Command Prompt แล้วรัน:

```cmd
cd C:\xampp\apache\bin
httpd -t
```

ถ้าขึ้น **"Syntax OK"** = config ถูกต้อง ✅
ถ้ามี error = แก้ไขตาม error message ที่แสดง

---

### ขั้นตอนที่ 5: Restart Apache

1. เปิด **XAMPP Control Panel**
2. คลิก **Stop** Apache
3. รอ 2-3 วินาที
4. คลิก **Start** Apache

---

### ขั้นตอนที่ 6: รัน Go Lead Application

เปิด Command Prompt:

```cmd
cd C:\xampp\htdocs\advice\_go.lead
start-server.bat
```

หรือ **Double-click** `start-server.bat`

ดูว่าขึ้นข้อความ:
```
✅ Server running at http://localhost:9087/_go.lead/
```

---

### ขั้นตอนที่ 7: ทดสอบ

เปิดเบราว์เซอร์:

1. **ทดสอบ Local**: http://localhost:9087/_go.lead/
2. **ทดสอบ Proxy**: https://advice.ezmember.org/_go.lead/

---

## 🔍 การตรวจสอบ

### เช็คว่า Go App รันอยู่หรือไม่:
```cmd
netstat -ano | findstr 9087
```

ถ้าเห็นบรรทัดขึ้นมา = กำลังรันอยู่ ✅

### เช็คว่า Apache Proxy ทำงานหรือไม่:
```cmd
curl http://localhost:9087/_go.lead/
```

ถ้าได้ HTML กลับมา = Go App ทำงาน ✅

---

## ⚠️ Troubleshooting

### ปัญหา: 404 Not Found
**สาเหตุ**: Application ไม่รัน หรือ Path ไม่ตรงกัน

**แก้ไข**:
1. ตรวจสอบว่า Application รันอยู่ที่ port 9087
2. ตรวจสอบ ProxyPass path ว่าตรงกัน

### ปัญหา: 502 Bad Gateway
**สาเหตุ**: Application รันไม่ได้ หรือ Crash

**แก้ไข**:
1. เช็ค logs ของ Go App
2. ลองรัน `leadapp.exe` ใน Command Prompt เพื่อดู error

### ปัญหา: Apache ไม่ Start
**สาเหตุ**: Config ผิด หรือ Modules ไม่ load

**แก้ไข**:
1. รัน `httpd -t` เพื่อเช็ค syntax
2. ดู error ใน `C:\xampp\apache\logs\error.log`

### ปัญหา: SSL Certificate Error
**สาเหตุ**: Path ของ Certificate ไม่ถูกต้อง

**แก้ไข**:
1. ตรวจสอบว่าไฟล์ .crt และ .key อยู่จริง
2. แก้ path ใน VirtualHost

---

## 📝 สรุป

หลังจากทำตามขั้นตอนนี้แล้ว คุณจะเข้าใช้งานได้ที่:

🌐 **https://advice.ezmember.org/_go.lead/**

---

## 🆘 ยังมีปัญหา?

ตรวจสอบ Logs:
- Apache Error: `C:\xampp\apache\logs\error.log`
- Apache Access: `C:\xampp\apache\logs\advice.ezmember.org-ssl-access.log`
- Go App: ดูใน Command Prompt ที่รัน `start-server.bat`

---

*สร้างเมื่อ: 14 Feb 2026*
