คัดลอกแล้ว
Ubuntu Server + Nginx + PHP 8.3 + MySQL 8.3

ติดตั้ง Ollama AI Chat
แบบทีละขั้นตอน

นำ AI ที่รันแบบ Local บนเซิร์ฟเวอร์มาใช้งานผ่านหน้าเว็บ — พร้อมบันทึกประวัติแชทลง MySQL ด้วย PHP

สร้าง DB อัปโหลด ZIP ตั้งค่า Nginx ใช้งาน
1

สร้างฐานข้อมูล MySQL

MySQL

เข้า MySQL ด้วย root แล้วสร้างฐานข้อมูลพร้อมตารางสำหรับเก็บประวัติแชท

ข้อ 1.1 — เข้าสู่ MySQL:

Bash
mysql -u root -p

ข้อ 1.2 — สร้างฐานข้อมูลและตาราง (คัดลอกวางทั้งก้อนเลย):

SQL
CREATE DATABASE ollama_chat;
USE ollama_chat;

CREATE TABLE conversations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    conversation_id INT NOT NULL,
    role ENUM('user','assistant') NOT NULL,
    content TEXT NOT NULL,
    model VARCHAR(100) DEFAULT 'llama3.1:8b',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
);

EXIT;

อธิบาย: ตาราง conversations เก็บหัวข้อแชทแต่ละสนทนา ตาราง messages เก็บข้อความทุกข้อ (ทั้งผู้ใช้และ AI) เชื่อมกันด้วย foreign key

2

อัปโหลดไฟล์โปรเจกต์

ไฟล์

ไฟล์ทั้งหมดถูกรวบรวมไว้ใน คลิกเพื่อโหลดollama-chat.zip แล้ว — ไม่ต้องสร้างเอง

ข้อ 2.1 — ไฟล์ที่อยู่ใน ZIP:

ollama-chat/ ├── api.php ← Backend รับส่งข้อมูล + เรียก Ollama ├── config.php ← ตั้งค่าฐานข้อมูล └── index.html ← หน้าเว็บหลัก (HTML+CSS+JS)

ข้อ 2.2 — อัปโหลดไฟล์ ZIP ไปยังเซิร์ฟเวอร์:

ทางเลือกในการอัปโหลด: ใช้ SCP, SFTP, หรือ FileZilla — หรือหากมีไฟล์อยู่บนเซิร์ฟเวอร์แล้ว ข้ามข้อนี้ไปได้เลย

ollama-chat.zip

ไฟล์ ZIP อยู่บนเซิร์ฟเวอร์แล้ว — คลิกปุ่มด้านล่างเพื่อคัดลอกคำสั่งแตกไฟล์ไปรันใน Terminal

ข้อ 2.3 — คำสั่ง SCP สำหรับอัปโหลดจากเครื่องท้องถิ่น (รันจากเครื่องคุณ):

Bash (เครื่องท้องถิ่น)
scp ollama-chat.zip user@IP_SERVER:/tmp/

ข้อ 2.4 — แตกไฟล์บนเซิร์ฟเวอร์ (รันบนเซิร์ฟเวอร์):

Bash (เซิร์ฟเวอร์)
sudo mkdir -p /var/www/ollama-chat
sudo unzip /tmp/ollama-chat.zip -d /var/www/ollama-chat/
ls -la /var/www/ollama-chat/

ข้อ 2.5 — แก้ไขรหัสผ่านฐานข้อมูลใน config.php:

Bash
sudo nano /var/www/ollama-chat/config.php

จุดสำคัญ: ให้แก้บรรทัด DB_PASS ให้ตรงกับรหัสผ่าน MySQL ของคุณ — ถ้าไม่แก้ ระบบจะเชื่อมต่อฐานข้อมูลไม่ได้

3

ตั้งค่า Nginx

Nginx

สร้างไฟล์ config สำหรับ Nginx ให้รู้จักโปรเจกต์นี้

ข้อ 3.1 — สร้างไฟล์ config:

Bash
sudo nano /etc/nginx/sites-available/ollama-chat

ข้อ 3.2 — วาง config นี้ลงไป:

Nginx Config
server {
    listen 80;
    server_name _;

    root /var/www/ollama-chat;
    index index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
    }

    location ~ /config\.php$ {
        deny all;
        return 404;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

fastcgi_read_timeout 300 — สำคัญมาก เพราะ AI ตอบช้ากว่าหน้าเว็บปกติ ถ้าค่านี้ต่ำเกินไป Nginx จะตัดการเชื่อมต่อก่อน AI ตอบจบ

ข้อ 3.3 — เปิดใช้งานไซต์และลบ default:

Bash
sudo ln -s /etc/nginx/sites-available/ollama-chat /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default

ข้อ 3.4 — ตรวจสอบ config และรีโหลด Nginx:

Bash
sudo nginx -t
sudo systemctl reload nginx

ถ้า nginx -t แสดง syntax is ok และ test is successful แสดงว่า config ถูกต้องพร้อมใช้งาน

4

ตั้งสิทธิ์ไฟล์

สิทธิ์

ให้ PHP-FPM (ผู้ใช้ www-data) สามารถอ่านเขียนไฟล์ได้ แต่ปิดไม่ให้คนอื่นอ่าน config.php

Bash
sudo chown -R www-data:www-data /var/www/ollama-chat
sudo chmod -R 755 /var/www/ollama-chat
sudo chmod 640 /var/www/ollama-chat/config.php

ความปลอดภัย: config.php มีรหัสผ่านฐานข้อมูล — ตั้ง 640 ให้เฉพาะ www-data และ root อ่านได้ ปิดทาง Nginx ด้วย deny all ใน config ด้านบนแล้ว (ชั้นความปลอดภัยแบบ double)

5

ตรวจสอบและทดสอบ

ทดสอบ

ตรวจสอบทีละบริการว่าทำงานปกติก่อนเปิดเว็บ

  • 5.1
    ตรวจสอบ Ollama ทำงานอยู่
    Bash
    systemctl status ollama
  • 5.2
    ตรวจสอบ PHP-FPM ทำงานอยู่
    Bash
    systemctl status php8.3-fpm
  • 5.3
    ตรวจสอบ Nginx ทำงานอยู่
    Bash
    systemctl status nginx
  • 5.4
    ตรวจสอบ Ollama API ตอบ
    Bash
    curl http://localhost:11434

    ต้องได้รับข้อความ Ollama is running กลับมา

  • 5.5
    เปิดเบราว์เซอร์ทดสอบ
    URL
    http://IP_ของเซิร์ฟเวอร์/

ถ้าหน้าเว็บขึ้นแต่ไม่มี Model ให้เลือก ให้ตรวจสอบว่า Ollama มี Model อยู่จริงด้วย ollama list — ถ้ายังไม่เคยดาวน์โหลด ให้รัน ollama run llama3.1:8b ก่อน

สรุปสถาปัตยกรรมระบบ

เมื่อทุกอย่างทำงาน ข้อมูลจะไหลเป็นลูกโซ่แบบนี้:

เบราว์เซอร์ Nginx :80 PHP-FPM MySQL
Ollama :11434 PHP stream แสดงทีละตัวอักษร

ตารางสรุปบริการที่ต้องทำงาน:

บริการ พอร์ต หน้าที่ ตรวจสอบด้วย
Nginx :80 ให้บริการหน้าเว็บ + proxy PHP systemctl status nginx
PHP 8.3 FPM socket ประมวลผล backend, เรียก Ollama API systemctl status php8.3-fpm
MySQL 8.3 :3306 เก็บประวัติแชท systemctl status mysql
Ollama :11434 รัน AI Model แบบ Local systemctl status ollama

ถ้าอยากให้เครื่องอื่นใน LAN ใช้งานได้: ตรวจสอบว่า firewall เปิดพอร์ต 80 แล้วด้วย sudo ufw allow 80 — จากนั้นเปิด http://IPเซิร์ฟเวอร์/ จากเครื่องอื่นในเน็ตเวิร์คเดียวกันได้เลย