installation.md

8.58 KB
01/10/2025 12:35
MD
installation.md
# การติดตั้ง Kotchasan Framework

## ข้อกำหนดระบบ

### ข้อกำหนดขั้นต่ำ

- **PHP**: 8.0 หรือสูงกว่า
- **Composer**: 2.0 หรือสูงกว่า
- **Web Server**: Apache 2.4+ หรือ Nginx 1.18+
- **Database**: MySQL 5.7+ หรือ MariaDB 10.3+
- **Memory**: 512MB RAM (แนะนำ 1GB+)
- **Storage**: 100MB พื้นที่ว่าง

### ข้อกำหนดที่แนะนำ

- **PHP**: 8.1 หรือ 8.2
- **Memory**: 2GB RAM
- **Storage**: 1GB พื้นที่ว่าง
- **SSL Certificate**: สำหรับ Production

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

### 1. ติดตั้งผ่าน Composer (แนะนำ)

```bash
# สร้างโปรเจ็คใหม่
composer create-project kotchasan/framework my-project

# เข้าไปในโฟลเดอร์โปรเจ็ค
cd my-project
```

### 2. ติดตั้งผ่าน Git Clone

```bash
# Clone repository
git clone https://github.com/kotchasan/framework.git my-project
cd my-project

# ติดตั้ง dependencies
composer install
```

### 3. ติดตั้งผ่าน Download

```bash
# ดาวน์โหลดไฟล์ ZIP
wget https://github.com/kotchasan/framework/archive/main.zip
unzip main.zip
mv framework-main my-project
cd my-project

# ติดตั้ง dependencies
composer install
```

## การตั้งค่า Environment

### 1. คัดลอกไฟล์ Environment

```bash
cp .env.example .env
```

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

```env
# Application
APP_NAME="Kotchasan Framework"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=kotchasan
DB_USERNAME=root
DB_PASSWORD=

# Cache
CACHE_DRIVER=file
SESSION_DRIVER=file

# Mail
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=587
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
```

### 3. สร้าง Application Key

```bash
php artisan key:generate
```

## การตั้งค่าฐานข้อมูล

### 1. สร้างฐานข้อมูล

```sql
-- MySQL
CREATE DATABASE kotchasan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- หรือใช้ MariaDB
CREATE DATABASE kotchasan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

### 2. รัน Migration

```bash
# รัน migration ทั้งหมด
php artisan migrate

# หรือรันทีละไฟล์
php artisan migrate --step
```

### 3. Seed ข้อมูลเริ่มต้น

```bash
# Seed ข้อมูลเริ่มต้น
php artisan db:seed

# หรือ seed เฉพาะ seeder ที่ต้องการ
php artisan db:seed --class=UserSeeder
```

## การตั้งค่า Web Server

### Apache Configuration

สร้างไฟล์ `.htaccess` ในโฟลเดอร์ `public`:

```apache
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Handle Angular and other client-side routes
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# Security headers
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options DENY
    Header always set X-XSS-Protection "1; mode=block"
</IfModule>
```

### Nginx Configuration

```nginx
server {
    listen 80;
    server_name your-domain.com;
    root /path/to/kotchasan/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
```

## การตั้งค่า SSL (HTTPS)

### 1. ใช้ Let's Encrypt (แนะนำ)

```bash
# ติดตั้ง Certbot
sudo apt install certbot python3-certbot-nginx

# สร้าง SSL Certificate
sudo certbot --nginx -d your-domain.com
```

### 2. ใช้ Self-Signed Certificate

```bash
# สร้าง private key
openssl genrsa -out server.key 2048

# สร้าง certificate
openssl req -new -x509 -key server.key -out server.crt -days 365
```

## การตั้งค่า Cache

### 1. File Cache (Default)

```env
CACHE_DRIVER=file
```

### 2. Redis Cache

```env
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
```

### 3. Memcached

```env
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11211
```

## การตั้งค่า Queue

### 1. Database Queue

```env
QUEUE_CONNECTION=database
```

```bash
# สร้างตาราง queue
php artisan queue:table
php artisan migrate
```

### 2. Redis Queue

```env
QUEUE_CONNECTION=redis
```

## การตั้งค่า Mail

### 1. SMTP Configuration

```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
```

### 2. Mailgun

```env
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=your-domain.mailgun.org
MAILGUN_SECRET=your-mailgun-secret
```

## การตั้งค่า Logging

### 1. File Logging

```env
LOG_CHANNEL=stack
LOG_LEVEL=debug
```

### 2. Syslog

```env
LOG_CHANNEL=syslog
```

### 3. Custom Log Channel

```php
// config/logging.php
'channels' => [
    'custom' => [
        'driver' => 'single',
        'path' => storage_path('logs/custom.log'),
        'level' => 'debug',
    ],
],
```

## การทดสอบการติดตั้ง

### 1. ตรวจสอบ PHP Version

```bash
php -v
# ควรแสดง PHP 8.0 หรือสูงกว่า
```

### 2. ตรวจสอบ Composer

```bash
composer --version
# ควรแสดง Composer 2.0 หรือสูงกว่า
```

### 3. ตรวจสอบ Extension ที่จำเป็น

```bash
php -m | grep -E "(pdo|mbstring|openssl|curl|json|zip)"
```

### 4. ทดสอบ Application

```bash
# เริ่ม development server
php artisan serve

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

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

### ปัญหาที่พบบ่อย

#### 1. Permission Issues

```bash
# ตั้งค่า permission
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
```

#### 2. Composer Memory Limit

```bash
# เพิ่ม memory limit
php -d memory_limit=2G /usr/local/bin/composer install
```

#### 3. Database Connection Error

```bash
# ตรวจสอบการเชื่อมต่อฐานข้อมูล
php artisan tinker
>>> DB::connection()->getPdo();
```

#### 4. Cache Issues

```bash
# ล้าง cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
```

## การอัปเดต

### 1. อัปเดต Dependencies

```bash
composer update
```

### 2. อัปเดต Database Schema

```bash
php artisan migrate
```

### 3. อัปเดต Cache

```bash
php artisan optimize
```

## การสำรองข้อมูล

### 1. สำรองฐานข้อมูล

```bash
# MySQL
mysqldump -u root -p kotchasan > backup.sql

# MariaDB
mysqldump -u root -p kotchasan > backup.sql
```

### 2. สำรองไฟล์

```bash
# สำรองไฟล์สำคัญ
tar -czf backup.tar.gz storage/ .env config/
```

## การติดตั้งบน Production

### 1. ตั้งค่า Environment

```env
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
```

### 2. Optimize Application

```bash
php artisan optimize
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

### 3. ตั้งค่า Process Manager

```bash
# ติดตั้ง Supervisor
sudo apt install supervisor

# สร้างไฟล์ configuration
sudo nano /etc/supervisor/conf.d/kotchasan.conf
```

```ini
[program:kotchasan]
command=php /path/to/kotchasan/artisan queue:work
directory=/path/to/kotchasan
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/path/to/kotchasan/storage/logs/worker.log
```

---

**หมายเหตุ**: เอกสารนี้ครอบคลุมการติดตั้งพื้นฐาน สำหรับข้อมูลเพิ่มเติมโปรดดูที่ [Getting Started Guide](getting-started.md)