# คู่มือการติดตั้ง SAS-LOG บน Mac (เครื่องใหม่)

คู่มือนี้จะช่วยคุณติดตั้งและรันโปรเจกต์ sas-log บน Mac ที่ยังไม่ได้ติดตั้งอะไรเลย

## ⚠️ สิ่งสำคัญ - อ่านก่อนเริ่มติดตั้ง!

### ❌ ไม่ต้องติดตั้ง:
- **XAMPP** - บน Mac ไม่จำเป็นต้องใช้ XAMPP สามารถติดตั้ง PHP, MySQL แยกได้ผ่าน Homebrew
- **phpMyAdmin** - ไม่จำเป็น สามารถใช้ MySQL command line หรือเครื่องมืออื่นๆ ได้

### ✅ สิ่งที่ต้องติดตั้ง:
- **PHP 8.2+** (พร้อม MySQL extension)
- **Composer** (สำหรับจัดการ PHP packages)
- **Node.js + npm** (สำหรับ Frontend development)
- **MySQL 8.0+** (สำหรับฐานข้อมูล)

## 📋 ความต้องการของระบบ

- **PHP 8.2 หรือสูงกว่า** (พร้อม MySQL extension)
- **Composer** (PHP Package Manager)
- **Node.js 18+ และ npm** (สำหรับ Frontend)
- **MySQL 8.0+ หรือ MariaDB** (สำหรับฐานข้อมูล)

**หมายเหตุ:** บน Mac ไม่จำเป็นต้องติดตั้ง XAMPP หรือ phpMyAdmin สามารถติดตั้ง MySQL แยกได้ผ่าน Homebrew

---

## 🚀 ขั้นตอนการติดตั้ง

### ขั้นตอนที่ 1: ติดตั้ง Homebrew (ถ้ายังไม่มี)

Homebrew เป็น package manager สำหรับ Mac ที่จะช่วยให้ติดตั้งซอฟต์แวร์ต่างๆ ได้ง่าย

```bash
# ตรวจสอบว่ามี Homebrew หรือยัง
brew --version

# ถ้ายังไม่มี ให้รันคำสั่งนี้
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

หลังจากติดตั้งเสร็จ ให้เพิ่ม Homebrew ไปยัง PATH (ตามคำแนะนำที่แสดงบนหน้าจอ)

---

### ขั้นตอนที่ 2: ติดตั้ง PHP 8.2

```bash
# ติดตั้ง PHP 8.2
brew install php@8.2

# เพิ่ม PHP ไปยัง PATH (เพิ่มในไฟล์ ~/.zshrc หรือ ~/.bash_profile)
echo 'export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/php@8.2/sbin:$PATH"' >> ~/.zshrc

# โหลดการตั้งค่าใหม่
source ~/.zshrc

# ตรวจสอบเวอร์ชัน PHP
php -v
```

**หมายเหตุ:** ควรแสดง PHP version 8.2.x

---

### ขั้นตอนที่ 3: ติดตั้ง Composer

```bash
# ดาวน์โหลดและติดตั้ง Composer
curl -sS https://getcomposer.org/installer | php

# ย้าย Composer ไปยังตำแหน่งที่เข้าถึงได้ทั่วระบบ
sudo mv composer.phar /usr/local/bin/composer

# หรือถ้าใช้ Homebrew
brew install composer

# ตรวจสอบการติดตั้ง
composer --version
```

---

### ขั้นตอนที่ 4: ติดตั้ง Node.js และ npm

```bash
# ติดตั้ง Node.js (จะติดตั้ง npm มาด้วย)
brew install node

# ตรวจสอบเวอร์ชัน
node -v
npm -v
```

**หมายเหตุ:** ควรใช้ Node.js version 18 หรือสูงกว่า

---

### ขั้นตอนที่ 5: ติดตั้ง MySQL

```bash
# ติดตั้ง MySQL
brew install mysql

# เริ่ม MySQL service
brew services start mysql

# ตั้งค่ารหัสผ่าน root (ถ้ายังไม่ได้ตั้ง)
mysql_secure_installation
```

**หมายเหตุ:** 
- MySQL จะรันเป็น service ในพื้นหลัง
- ถ้า `mysql_secure_installation` ถามรหัสผ่าน root และยังไม่ได้ตั้ง ให้กด Enter (ไม่มีรหัสผ่าน)
- จากนั้นตั้งรหัสผ่านใหม่ตามที่ต้องการ (หรือเว้นว่างไว้ก็ได้)

**ตรวจสอบว่า MySQL ทำงาน:**
```bash
# ตรวจสอบสถานะ
brew services list | grep mysql

# ควรแสดง: mysql started (สีเขียว)
```

**ทดสอบเชื่อมต่อ MySQL:**
```bash
# ถ้ายังไม่มีรหัสผ่าน root
mysql -u root

# ถ้ามีรหัสผ่าน root
mysql -u root -p
# แล้วใส่รหัสผ่าน

# ถ้าเชื่อมต่อได้ จะเห็น MySQL prompt: mysql>
# พิมพ์ EXIT; เพื่อออก
```

**คำสั่งจัดการ MySQL Service:**
```bash
# เริ่ม MySQL
brew services start mysql

# หยุด MySQL
brew services stop mysql

# รีสตาร์ท MySQL
brew services restart mysql

# ตรวจสอบสถานะ
brew services list | grep mysql
```

---

### ขั้นตอนที่ 6: สร้างฐานข้อมูล MySQL

```bash
# วิธีที่ 1: ใช้คำสั่งเดียว (แนะนำ)
mysql -u root -e "CREATE DATABASE IF NOT EXISTS sas_log CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# วิธีที่ 2: เข้า MySQL แล้วสร้างฐานข้อมูล
mysql -u root
# หรือ mysql -u root -p (ถ้ามีรหัสผ่าน)

# ใน MySQL prompt พิมพ์:
CREATE DATABASE sas_log CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;
```

**หมายเหตุ:** 
- ถ้ายังไม่มีรหัสผ่าน root ให้ใช้ `mysql -u root` (ไม่ต้องใส่ -p)
- ถ้ามีรหัสผ่าน ให้ใช้ `mysql -u root -p` แล้วใส่รหัสผ่าน

**ตรวจสอบว่าสร้างฐานข้อมูลสำเร็จ:**
```bash
mysql -u root -e "SHOW DATABASES;" | grep sas_log
```

---

### ขั้นตอนที่ 7: คัดลอกโปรเจกต์

```bash
# คัดลอกโปรเจกต์ไปยังตำแหน่งที่ต้องการ (เช่น Desktop หรือ Documents)
# ตัวอย่าง: คัดลอกไปยัง Desktop
cd ~/Desktop
# หรือใช้ Finder เพื่อคัดลอกโฟลเดอร์ sas-log

# เข้าไปในโฟลเดอร์โปรเจกต์
cd sas-log
```

---

### ขั้นตอนที่ 8: ติดตั้ง Dependencies ของ Laravel

```bash
# ติดตั้ง PHP packages ผ่าน Composer
composer install
```

**หมายเหตุ:** การติดตั้งอาจใช้เวลาสักครู่ ขึ้นอยู่กับความเร็วอินเทอร์เน็ต

---

### ขั้นตอนที่ 9: ติดตั้ง Dependencies ของ Frontend

```bash
# ติดตั้ง Node.js packages
npm install
```

---

### ขั้นตอนที่ 10: สร้างไฟล์ .env

```bash
# สร้างไฟล์ .env จาก template (ถ้ามี .env.example)
# หรือสร้างไฟล์ .env ใหม่

# ถ้ามี .env.example
cp .env.example .env

# หรือสร้างไฟล์ .env ใหม่ด้วยเนื้อหาพื้นฐานสำหรับ MySQL
cat > .env << 'EOF'
APP_NAME="SAS Log"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost:8000

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sas_log
DB_USERNAME=root
DB_PASSWORD=

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database

CACHE_STORE=database
CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

VITE_APP_NAME="${APP_NAME}"
EOF
```

**หมายเหตุ:** 
- `DB_PASSWORD` ควรเป็นรหัสผ่าน root ของ MySQL (ถ้ามี) หรือเว้นว่างไว้ถ้ายังไม่มี
- ถ้าตั้งรหัสผ่าน root แล้ว ให้ใส่รหัสผ่านใน `DB_PASSWORD`

---

### ขั้นตอนที่ 11: สร้าง Application Key

```bash
# สร้าง encryption key สำหรับ Laravel
php artisan key:generate
```

---

### ขั้นตอนที่ 12: รัน Migrations

```bash
# สร้างตารางในฐานข้อมูล
php artisan migrate
```

---

### ขั้นตอนที่ 13: รัน Seeders (ข้อมูลทดสอบ)

```bash
# เพิ่มข้อมูลทดสอบ (ถ้าต้องการ)
php artisan db:seed
```

---

### ขั้นตอนที่ 14: สร้าง Storage Link

```bash
# สร้าง symbolic link สำหรับ storage
php artisan storage:link
```

---

### ขั้นตอนที่ 15: ตั้งค่าสิทธิ์โฟลเดอร์

```bash
# ตั้งค่าสิทธิ์ให้ Laravel สามารถเขียนไฟล์ได้
chmod -R 775 storage bootstrap/cache
```

---

### ขั้นตอนที่ 16: รันโปรเจกต์

เปิด Terminal 2 หน้าต่าง:

**Terminal หน้าต่างที่ 1 - รัน Laravel Server:**
```bash
php artisan serve
```

**Terminal หน้าต่างที่ 2 - รัน Vite (Frontend):**
```bash
npm run dev
```

หรือใช้คำสั่งเดียว (ถ้าติดตั้ง concurrently แล้ว):
```bash
composer run dev
```

---

### ขั้นตอนที่ 17: เข้าถึงโปรเจกต์

เปิดเบราว์เซอร์และไปที่:
```
http://localhost:8000
```

---

## 🛠️ เครื่องมือจัดการ MySQL บน Mac (ทางเลือก)

ถ้าต้องการเครื่องมือ GUI สำหรับจัดการ MySQL แทนการใช้ command line:

### 1. TablePlus (แนะนำ - ฟรีสำหรับใช้งานพื้นฐาน)
```bash
# ติดตั้งผ่าน Homebrew
brew install --cask tableplus

# หรือดาวน์โหลดจาก: https://tableplus.com/
```

### 2. Sequel Pro (ฟรี)
```bash
brew install --cask sequel-pro
```

### 3. MySQL Workbench (ฟรี - จาก Oracle)
```bash
brew install --cask mysql-workbench
```

### 4. DBeaver (ฟรี - รองรับหลายฐานข้อมูล)
```bash
brew install --cask dbeaver-community
```

**การเชื่อมต่อ:**
- **Host:** 127.0.0.1 หรือ localhost
- **Port:** 3306
- **Username:** root
- **Password:** (รหัสผ่านที่ตั้งไว้ หรือเว้นว่าง)
- **Database:** sas_log

---

## 🔄 การเปลี่ยนไปใช้ SQLite (ทางเลือก)

ถ้าต้องการใช้ SQLite แทน MySQL:

### 1. แก้ไขไฟล์ .env

```env
DB_CONNECTION=sqlite
DB_DATABASE="${PWD}/database/database.sqlite"
```

### 2. สร้างไฟล์ฐานข้อมูล SQLite

```bash
touch database/database.sqlite
```

### 3. รัน Migrations

```bash
php artisan migrate:fresh
php artisan db:seed
```

**หมายเหตุ:** SQLite ไม่ต้องติดตั้งแยก มาพร้อมกับ PHP แล้ว

---

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

### ปัญหา: PHP version ไม่ถูกต้อง

```bash
# ตรวจสอบ PHP version
php -v

# ถ้าไม่ใช่ 8.2 ให้เปลี่ยน path
which php
# แก้ไข PATH ใน ~/.zshrc
```

### ปัญหา: Composer ไม่พบ

```bash
# ตรวจสอบว่า Composer อยู่ใน PATH
which composer

# ถ้าไม่มี ให้เพิ่ม path
export PATH="$HOME/.composer/vendor/bin:$PATH"
```

### ปัญหา: Permission denied

```bash
# ตั้งค่าสิทธิ์ใหม่
chmod -R 775 storage bootstrap/cache
chown -R $(whoami) storage bootstrap/cache
```

### ปัญหา: npm install ล้มเหลว

```bash
# ลบ node_modules และติดตั้งใหม่
rm -rf node_modules package-lock.json
npm install
```

### ปัญหา: Database connection error

```bash
# ตรวจสอบว่า MySQL ทำงานอยู่
brew services list | grep mysql

# ถ้าไม่ทำงาน ให้เริ่ม service
brew services start mysql

# ตรวจสอบว่าฐานข้อมูล sas_log มีอยู่
mysql -u root -p -e "SHOW DATABASES;" | grep sas_log

# ถ้าไม่มี ให้สร้างใหม่
mysql -u root -p -e "CREATE DATABASE sas_log CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# ตรวจสอบการเชื่อมต่อใน .env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=sas_log
# DB_USERNAME=root
# DB_PASSWORD= (ใส่รหัสผ่านถ้ามี)
```

### ปัญหา: Storage link ไม่ทำงาน

```bash
# ลบ link เก่าและสร้างใหม่
rm public/storage
php artisan storage:link
```

---

## 📝 ข้อมูลทดสอบ (ถ้ารัน db:seed)

### Admin User:
- **Email:** admin@example.com
- **Password:** password

### User ทั่วไป:
- **Email:** user@example.com
- **Password:** password

---

## ✅ Checklist การติดตั้ง

- [ ] ติดตั้ง Homebrew
- [ ] ติดตั้ง PHP 8.2+
- [ ] ติดตั้ง Composer
- [ ] ติดตั้ง Node.js และ npm
- [ ] ติดตั้ง MySQL
- [ ] เริ่ม MySQL service (`brew services start mysql`)
- [ ] สร้างฐานข้อมูล `sas_log`
- [ ] คัดลอกโปรเจกต์
- [ ] รัน `composer install`
- [ ] รัน `npm install`
- [ ] สร้างไฟล์ `.env` (ตั้งค่า MySQL)
- [ ] รัน `php artisan key:generate`
- [ ] รัน `php artisan migrate`
- [ ] รัน `php artisan db:seed` (ถ้าต้องการ)
- [ ] รัน `php artisan storage:link`
- [ ] ตั้งค่าสิทธิ์โฟลเดอร์
- [ ] รัน `php artisan serve`
- [ ] รัน `npm run dev`
- [ ] เปิดเบราว์เซอร์ที่ http://localhost:8000

---

## 🎉 เสร็จสิ้น!

ถ้าทำตามขั้นตอนทั้งหมดแล้ว คุณควรจะสามารถเข้าถึงโปรเจกต์ได้ที่ `http://localhost:8000`

หากมีปัญหาหรือคำถามเพิ่มเติม กรุณาติดต่อทีมพัฒนา

