How to Install Magento 2.4.6 on Ubuntu 22.04

Magento
Install Diagram

สวัสดีครับ วันนี้ จะมาพูดถึงการ Install Magento 2 (Adobe Commerce) นะครับ
เป็น eCommerce Software ตัวนึง ที่น่าใช้มากๆ มาพร้อมกับ feature ที่ครบครัน ..

รายละเอียดเพิ่มเติม https://business.adobe.com/products/magento/magento-commerce.html

รายละเอียดของ System ประมาณนี้ครับ

- OS: Ubuntu 22.04
- Magento: 2.4.6-p2 (Open Source)
- Apache: 2.4.x
- PHP: 8.1.2
- Composer: 2.2.6
- MySQL: 8.0.34
- Elasticsearch: 7.17.13

มาเริ่มกันเลย ..

Step 1: Update Operating System

# apt update && apt upgrade -y

Step 2: Install Apache Web Server

# apt install apache2

Step 3: Install PHP and PHP extensions

# apt install php php-common libapache2-mod-php php-cli php-fpm php-mysql php-json php-opcache php-gmp php-curl php-intl php-mbstring php-xmlrpc php-gd php-xml php-zip php-soap php-bcmath php-apcu

Modify php.ini file (/etc/php/8.1/cli/php.ini)

memory_limit = 1GB
upload_max_filesize = 256M
zlib.output_compression = On
max_execution_time = 600
max_input_time = 900
date.timezone = Asia/Bangkok

Step 4: Install the MySQL server

# apt install mysql-server
# mysql_secure_installation

Step 5: Create a Magento Database

# mysql -u root -p
mysql> CREATE DATABASE magento;
mysql> CREATE USER 'magento'@'localhost' IDENTIFIED BY 'Str0ngPa$$w0rd';
mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Step 6. Install Elasticsearch

# curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

# apt update && apt install elasticsearch

# systemctl start elasticsearch
# systemctl enable elasticsearch

Verify Elasticsearch

curl -X GET "localhost:9200"

{
"name" : "magento-01",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "-Or5raP6T5uEG3bUG1JYHw",
"version" : {
"number" : "7.17.13",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "2b211dbb8bfdecaf7f5b44d356bdfe54b1050c13",
"build_date" : "2023-08-31T17:33:19.958690787Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

Step 7: Install Composer

# apt install composer

Step 8: Install Magento

Goto Magento Marketplace https://marketplace.magento.com/

Get Access Keys
My profile > Marketplace > My products > Access Keys

# composer global config http-basic.repo.magento.com Your-Public-Key Your-Private-Key

# composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.6-p2 /var/www/magento
# cd /var/www/magento

# bin/magento setup:install \
--base-url=http://your-domain.com \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=Str0ngPa$$w0rd \
--admin-firstname=Admin \
--admin-lastname=User \
--admin-email=admin@your-domain.com \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=Asia/Bangkok \
--use-rewrites=1

# chown -R www-data: /var/www/magento

Step 9: Setup Cron jobs

# sudo -u www-data bin/magento cron:install

Step 10: Configure Apache for Magento

Create /etc/apache2/sites-available/magento.conf

<VirtualHost *:80>
ServerAdmin admin@your_domain.com
DocumentRoot /var/www/magento/pub
ServerName your_domain.com
ServerAlias www.your_domain.com

<Directory /var/www/magento>
AllowOverride All
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# a2ensite magento.conf
# a2enmod rewrite

# systemctl restart apache2

Step 11: Access your Magento installation

Store Front: http://your_domain.com
Admin Dashboard: http://your_domain.com/admin_xxxxxx

Step 12: Diasable 2FA

# bin/magento mod:dis Magento_AdminAdobeImsTwoFactorAuth Magento_TwoFactorAuth
# bin/magento setup:di:compile

Options: Tuning Magento

https://experienceleague.adobe.com/docs/commerce-operations/performance-best-practices/software.html

ESP Weather Station

ESP Weather Station


คลิปสอนทำ Weather Station แบบง่ายๆ ราคาไม่ถึง 300 บาท

สวัสดีปีใหม่ 2021 ครับ เพื่อนๆ พี่ๆ น้องๆ ทุกท่าน ขอให้ปีนี้เป็นปีที่ดีนะครับ 🙂
ปีที่ผ่านมา ผมเองก็ไม่ได้มา update blog ส่วนตัวเลยครับ +___+

วันนี้มีโอกาสดี ได้หยุดยาว กลับมาอยู่บ้านที่จันทบุรี ก็เลยถือโอกาส เขียนเล่าวิธีการ
ทำ Weather Station แบบง่ายๆ และราคาถูกมาก ไม่เกิน 300 บาท ที่ใครๆ ก็ทำเองได้ ..

ตัวอย่าง ที่ผมทำเล่น ไว้ที่สวนที่จันทบุรี จะประมาณนี้ครับ
https://tonofarm.herokuapp.com/

Weather Station Dashboard

ในส่วนของ Dashboard ที่ใช้แสดงผล จะใช้ของฟรี บน Cloud ของ Heroku นะครับ (ฟรีแต่ต้องเอามาประกอบร่างกันเอง + Coding นิดหน่อย)
ถ้าใครยังไม่เคยใช้งาน Heroku ลองเข้าไปอ่านบนความที่ผมเคยเขียนไว้ ได้ครับ ..
https://ton.packetlove.com/blog/iot/line-bot-node-js-mqtt-esp32-iot-2.html

Stack ในส่วนของ Dashboard ที่ผมเลือกใช้ จะเป็น PHP+MySQL ที่ทุกคนสามารถเรียนรู้ได้ง่าย และรวดเร็ว และส่วนของ graph Time series จะเป็น Highcharts ที่ใช้งานได้ง่ายมาก ..

ส่วนของ Hardware จะใช้เป็น ESP8266 (NodeMCU v3) + BME280 Sensor (Temperature, Humidity, Pressure) แค่นี้ ก็ใช้งานได้ละครับ ..
แต่ถ้าใครอยากได้ Options เสริม ทำให้ สามารถนำ Weather Station ของเราไปตั้งที่ไหนก็ได้ ก็ต้องเพิ่ม ในส่วนของ Battery ซึ่งในที่นี้ ผมเลือกใช้เป็น 18650 1 ก้อนครับ + Solar Panel + TP4056 1A Micro USB Battery Charger แค่นี้ก็เหลือๆ อยู่ได้สบายๆ เป็นปีๆ ครับ เพราะว่า ใช้เทคนิค ที่เรียกว่า Deep Sleep Mode ทำให้ Weather Station ของเรา ประหยัดพลังงานได้มาก ..

สรุป Stack ที่เราจะใช้ และ อุปกรณ์ ที่เราจะต้องใช้กันมีประมาณนี้ครับ สามารถดัดแปลงแก้ไข ได้ตามความเหมาะสม ..

มาเริ่มกันเลยดีกว่าครับ .. 🙂

0.ความรู้ที่ต้องมี ในบทความนี้

– การใช้งาน Arduino IDE เบื้องต้น
– การเขียน HTML, PHP เบื้องต้น
– การใช้งาน DB MySQL (MariaDB) เบื้องต้น
– การใช้งาน Git เบื้องต้น
– ตัวอย่าง code https://github.com/pornpasok/esp-weather-station

1.เตรียมอุปกรณ์

Hardware
– ESP8266 หรือ ESP32 ก็ได้ครับ ในที่นี้ผมใช้ NodeMCU v3 ราคา 54 บาท
– BME280 (Temperature, Humidity, Pressure) ราคา 80 บาท

Options
– Battery 18650 1 ก้อน ราคา 50 บาท
– Solar Panel 6V ราคา 30 บาท
– TP4056 1A Micro USB Battery Charger ราคา 8 บาท
– กล่องกันน้ำ IP66 ราคา 90 บาท

2.สมัครใช้บริการ Heroku สำหรับใช้งาน PHP+MySQL

– ทำตามที่ผมเคยเขียนไว้ในบทความก่อน ได้เลยครับ
https://ton.packetlove.com/blog/iot/line-bot-node-js-mqtt-esp32-iot-2.html
– เลือก Add-ons JawsDB Maria (ฟรีนะครับ)

JawsDB Maria

3.จากนั้นเราจะได้ หน้าตา Dashboard สำหรับ DB ของเรา ซึ่งจะมีค่าต่างๆ ที่จำเป็นดังนี้

Host: xxxx.cbetxkdyhwsb.us-east-1.rds.amazonaws.com
Username: xxxjmq9y0lbpccfl
Password: xxxqfwd3ch9ynzom
Port: 3306
Database: xxxt7s4yvc54h02i

DB Information

4.ทำการ Clone Soure Code ที่ผมทำไว้ให้เป็นตัวอย่างลงมา

– git clone https://github.com/pornpasok/esp-weather-station
– จะมี files ต่างๆ ประมาณนี้

tree
.
├── NodeMCUv3_BME280_deepsleep.ino (สำหรับ Upload ลง ESP8266 ของเรา)
├── README.md
├── SensorData.sql (สำหรับ import DB Structure ลง DB ที่ Heroku)
├── esp-database.php (สำหรับ config การ connect DB ที่ Heroku ค่านี้ได้จากข้อ 3.)
├── esp-post-data.php (สำหรับ รับค่าจาก อุปกรณ์ IoT ของเรา ในที่นี้คือ ESP8266)
├── esp-style.css (สำหรับ ตกแต่งหน้าตา Dashboard)
├── images
│   ├── dashboard01.png
│   ├── dashboard02.png
│   ├── dashboard03.png
│   └── esp-weather-station.jpg
└── index.php (หน้าแสดงผล ของ Dashboard)

5.Import DB Structure ลง DB ที่เราได้จาก Heroku

– ในที่นี้ ใช้ได้หลายวิธี แล้วแต่ถนัด แต่ส่วนตัวผมใช้ extensions “MySQL Client for vscode
– จากนั้น ให้นำค่า Host, Username, Password, Port ที่ได้จาก ข้อ 3. มา config เพื่อใช้งาน
– จากนั้นคลิกขวา ที่ DB เลือก Import Sql แล้วเลือก file “SensorData.sql” ที่เราทำการ clone มาจาก ข้อ 4. แค่นี้ เราก็จะได้ โครงสร้างของ tables ใน DB ของเราแล้ว ..

vscode Import Sql

6.แก้ไข config file “esp-database.php” และ “esp-post-data.php”

– นำค่า Host, Username, Password, Database ที่ได้จาก ข้อ 3. มาแก้ไข ใน file “esp-database.php

$servername = "HOSTNAME";
$dbname = "DBNAME";
$username = "USERNAME";
$password = "PASSWORD";

– แก้ไข file “esp-post-data.php” ใสส่วนของ

$api_key_value = "********";

ค่า api_key_value เรากำหนดเองได้เลย และจะต้องเอาไปใช้ ในส่วนของ อุปกรณ์ IoT (ESP8266) ของเรา

7.ทำการ push App (Dashboard) ของเรา ขึ้น Heroku

– ทำตามนี้ได้เลยครับ https://devcenter.heroku.com/articles/getting-started-with-php

เท่านี้ เราก็จะได้ App (Dashboad) ในฝั่งของ Heroku Cloud กันแล้วครับ .. 🙂
มาต่อกันที่ฝั่งของ อุปกรณ์ IoT (ESP8266) ของเรากันดีกว่าครับ ..

8.การต่อวงจร BME280 wiring to ESP8266/ESP32

The ESP8266 I2C pins are:
– GPIO 5 (D1): SCL (SCK)
– GPIO 4 (D2): SDA (SDI)

BME280 wiring to ESP8266

The ESP32 I2C pins are:
– GPIO 22: SCL (SCK)
– GPIO 21: SDA (SDI)

BME280 wiring to ESP32

9.ใช้ Arduino IDE แก้ไข code ในส่วนของ อุปกรณ์ IoT (ESP8266)

– แก้ไข file “NodeMCUv3_BME280_deepsleep.ino” ตามระบบ WIFI และ URL App เรา

const char* ssid = "WIFI-SSID";
const char* password = "WIFI-PASSWORD";
const char* serverName = "http://app-name.herokuapp.com/esp-post-data.php";
String apiKeyValue = "********";
String sensorName = "BME280";
String sensorLocation = "37.8718992,-122.2585399";

– จากนั้นทำการ Upload code แล้วเปิด Serial Monitor ดู ว่ามี Error อะไรไหม? ถ้าทุกอย่างปกติ ก็จะได้ข้อความดังภาพด้านล่าง ก็ถือว่าเป็นอันใช้ได้ 🙂

Arduino Serial Monitor

10.ทดลอง เข้า หน้าเว็บ Dashboard ของเรา ที่ทำไว้

– เข้าด้วย URL: https://app-name.herokuapp.com/
ตัวอย่างของผมคือ https://tonofarm.herokuapp.com/

ส่วน Options เพิ่มเติม ที่จะนำไปต่อยอด ก็ประมาณนี้ครับ

– ใช้ Battery 18650
– ใช้ Solar Panel + ชุด Charge Battery
– ใส่กล่อง IP66 กันน้ำ เผื่อเอาไปใช้ Outdoor
– เพิ่ม-ลด Sensors ตามความต้องการ
– ปรับแต่ง Dashboard ให้เหมาะสมตามความต้องการ

เป็นอย่างไรกันบ้างครับ ไม่ยากใช่ไหมครับ เอาไว้ทำเล่นๆ เราก็จะได้ Weather Station ของเราเองเอาไว้ใช้งาน และสามารถเข้าจากที่ไหน ก็ได้ เพราะอยู่บน Heroku Cloud ที่สำคัญ ฟรีด้วยครับ 🙂

สำหรับเพื่อนๆ ท่านใด ที่ติดปัญหา ตรงไหน สามารถสอบถามกันเข้ามาได้นะครับ
LINE ID: pornpasok

LINE ID: pornpasok

Add Friend

Source Code: https://github.com/pornpasok/esp-weather-station

รายละเอียดเพิ่มเติม: https://randomnerdtutorials.com/cloud-weather-station-esp32-esp8266/

High Performance Web Infrastructure

วันนี้ผมมีเวลาว่าง เลยอยากจะเขียนเล่าเรื่องการออกแบบ
Web Infrastructure ให้รองรับ load สูงๆ ได้ ว่าทำแบบไหนดี
โจทย์ของผมคือเป็น web สำหรับ booking ที่จะมีคนเข้าใช้งานจำนวนมาก
ในตอนเปิดให้ใช้งาน เป้าหมายที่ตั้งไว้คือ 1000 tps/s ++
และต้องไม่ down โดยผมมี physical server อยู่ 3 node

ในการออกแบบ Infrastructure นั้น ไม่มีแบบไหนถูกแบบไหนผิด
อยู่ที่ลักษณะของงานของเรา ว่าต้องการแบบไหน อยู่ที่จินตนาการของเรา
ว่าทำแบบไหนดี การออกแบบระบบ ก็เป็นศิลปะ อย่างหนึ่ง ..

Simply The Best เป็นคำตอบ ที่ผมใช้ออกแบบระบบที่ผมจะใช้งานนี้
เท่าที่ดูลักษณะ web แล้ว จะมีการ Read/Write DB หนักพอๆ กัน ถ้าเราแยก DB
ออกไป ก็จะทำให้เกิด connections จำนวนมากเกิดขึ้นในระบบ
ต้องแยก Read/Write ที่ตัว web app อีกเกิดความยุ่งยาก มากขึ้น
ผมเลยเอา web กับ DB ไว้ในตัวเดียวกันไปเลย แล้วใช้ HAProxy
เป็น Load Balancer round robin แบบ keep-alive
มี vip เป็น Public IP ที่ eth0 และใช้ eth1 เป็น Private IP
ยิงเข้าหา แต่ละ node ที่ต้องแยก interface เพื่อเป็นการกระจาย traffic
DB ที่ใช้ผมเลือกเป็น MariaDB ที่ทำงานได้ performance ดีกว่า MySQL
และใช้ Galera Cluster เป็นตัว sync data ของ DB แต่ละ node เข้าหากัน
ทำให้ ทุก node มี data ที่เหมือนกัน node ใด node นึง down ไป
ทุก node ก็จะยังทำงานได้สมบูรณ์ ถ้าเราต้องการเพิ่ม node เข้ามา
ก็สามารถทำได้ง่าย แค่ on ขึ้นมา Galera Cluster ก็จะทำการ sync data ให้

ในส่วนของ Web Server ผมใช้ Apache 2.2.22 ที่มากับตัว Debain Wheezy
มีการ tuning ค่าต่างๆ พอสมควรให้เหมาะกับการใช้งาน ตรงนี้เดี๋ยวผมมาเล่าอีกที
ที่เลือกใช้ apache เพราะ มีความยืดหยุ่นสูง ทำงานได้ดีกับ code ทุกรูปแบบ
ส่วน code เป็น PHP กระจายไปทุก node เก็บไว้ที่ local disk ของแต่ละ node
และใช้ APC เป็น opcode cache อีกระดับนึง

ปัญหาที่เจอ มีดังนี้
– auto increment จะไม่เรียงกัน เท่าไร มีกระโดดบ้าง แต่ก็รับได้
– HAProxy 1.5.4 default จะเก็บ log ทำให้ ถ้า log ใหญ่ๆ จะหนักได้
– เวลาแก้ code ต้อง up ทุก node

ผลที่ออกมา หลังจากใช้งานจริง พบว่า รองรับการใช้งานได้ดีมาก
รับ load จำนวนมหาศาล และ users ได้จำนวนมากพร้อมๆ กัน
ส่วนรายละเอียดการ tuning ผมจะขอแยกอธิบาย ในตอนต่อไป
เพราะว่า เยอะพอสมควร ..

CodeIgniter nginx Rewrite Rule

สวัสดีครับ วันนี้เจอเรื่องปวดหัวนิดหน่อย เกี่ยวกับการเขียน rewrite ของ nginx
ให้ codeigniter  สามารถทำงานได้ เพราะปกติบน apache2 จะใช้ .htaccess
ผมจะไม่พูดถึงการ install nginx+PHP Fast-CGI  นะครับ เพราะคิดว่าหาอ่านได้
ไม่ยากนัก แต่จะพูดถึงการเขียน rewrite ที่ทำให้ nginx ทำงานร่วมกับ codeigniter
มาดูกันเลยครับ ขั้นตอนมีดังนี้

location /
{
index index.php;
root /path/to/your/ci/directory;

if ($request_filename !~ (js|css|images|robots\.txt|index\.php.*) ) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}

location ~ /index.php/
{
include /usr/local/nginx/conf/fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path/to/your/index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass 127.0.0.1:9000;
}

จากนั้นทำการแก้ไข file application/config/config.php ของตัว CodeIgniter
ให้เป็น $config[‘uri_protocol’]  = “REQUEST_URI”;
เท่านี้ก็จะทำให้เราสามารถใช้งาน CodeIgniter กับ nginx ได้แล้วครับ ..

PHP+APC

สวัสดีครับ มิตรรักแฟน Blog ทั้งหลาย ไม่ได้ Update มาหลายวันครับ
เพราะว่าวุ่น ๆ อยู่กับงาน ที่ต้อง Optimize Server กันสุด ๆ ครับ
เพราะว่า Web Server ที่มีอยู่ เริ่มรับกับ Traffic มหาศาลไม่ไหว ..
ในเมื่อไม่มีเครื่องเข้ามาช่วย เราก็ต้องรีดพลังมันออกมาสุด ๆ ละกันครับ
สิ่งที่ทำได้ตอนนี้ก็คือ ทำให้มันรองรับ Traffic มหาศาลได้ อย่างดี
– Tuning Server PHP+APC ช่วยได้มาก ๆ ครับ ลด Load ได้ 50%
– Tuning+Optimize Query เทพ
– Design DB ใหม่ ให้มีประสิทธิภาพมากกว่าเดิม
– Tuning Infra Network พยายามลด Hob ให้เหนือน้อยที่สุด
– Tuning Code
System Admin ไปตัดผม อิอิ
– อันนี้ไม่บอกเป็นความลับ อิอิ

ระบบใหญ่ ๆ ต้องละเอียดพอสมควรครับ ทำอะไรชุ่ย ๆ เอาไม่อยู่ 🙂

Hosting, Web Hosting

แนะนำ Web Hosting คุณภาพสูง Uptime 99.99%
Support PHP, MySQL http://www.packetlove.com

วันนี้ผมมี Web Hosting คุณภาพ ราคาไม่แพง มาแนะนำครับ
Server เป็นเครื่อง Brand name Dell 860 ทุกเครื่องครับ
มี Control Panel DirectAdmin (DA) ที่ทำให้ท่านจัดการ
กับ Web Site ของท่านได้ง่าย ๆ ผ่านระบบที่มีคุณภาพ ..
Server ทำงานบนพื้นฐานของ Unix (FreeBSD) สามารถใช้
PHP, Perl, MySQL, FFMPEG ได้โดยทุกอย่าง Update ตลอด
มี Engineer ดูแลตลอด 24/7 ทำให้มั่นใจได้ว่าเว็บของท่าน
จะไม่มีวันเกิดปัญหาแม้นเพียงเสี้ยวนาที ทีมงานเค้าเจ๋งจริง ๆ ครับ
บรรยายสรรพคุณมาซะยืดยาว ถ้าต้องการเช่า Web Hosting
ดี ๆ มีคุณภาพ มีความรับผิดชอบ มี Backup ทุกวัน ที่นี่เลยครับ
URL : http://www.packetlove.com

MySQL SphinxSE and PHP Sphinx Extension

Sphinx a full-text search engine

ตอนนี้ Server นิ่งแล้ว ก็เลยมีเวลามาทำ R&D เกี่ยวกับระบบ Search
เพื่่อนตั้ม (http://www.thaiajax.com) โปเกม่อนเทพ แนะนำ
ว่าให้เอา Sphinx มาช่วย ก็เลยต้องเป็นหน้าที่ผม ที่ต้องทำ Server
ให้ Support หาข้อมูลได้น้อยมากเกี่ยวกับตัว Sphinx ยิ่งในไทย
เท่าที่เห็น ยังไม่มีเลย เพราะคงไม่ต้องใช้ถึงขนาดนี้ ระบบไม่ใหญ่ ..
นั่งงมอยู่นานเหมือนกัน เพราะไม่เคยใช้ หาอ่าน Doc ของเว็บ Sphinx
ก็มีให้อ่านน้อยมาก ๆ แต่เว็บอื่น ๆ มีอยู่พอสมควร ..

ตอนนี้เรื่องการใช้งานการปรับแต่งอะไร ก็กำลัง test กันอยู่ ผมเอา
วิธีการ config มาให้เพื่อน ๆ ที่สนใจได้อ่านกันละกัน เพราะว่ากว่าที่
ผมจะ config ได้ ก็ใช้เวลาพอสมควรเหมือนกัน เลยเอามาแบ่งปัน ..

Install MySQL SphinxSE CentOS 5.2

yum -y install bison patch automake libtool

wget http://www.sphinxsearch.com/downloads/sphinx-0.9.8.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz/from/http://mysql.thaiweb.net/
tar xfz sphinx*
tar xfz mysql*

cd mysql*
patch -p1 < ../sphinx-0.9.8/mysqlse/sphinx.5.0.37.diff
BUILD/autorun.sh
mkdir sql/sphinx
cp ../sphinx-0.9.8/mysqlse/* sql/sphinx
./configure –prefix=/usr/local/mysql –with-sphinx-storage-engine
make
make install

cp support-files/mysql.server /etc/init.d/
/etc/init.d/mysql.server start

mysql> SHOW ENGINES;
+————+———+—————————————————————-+
| Engine | Support | Comment |
+————+———+—————————————————————-+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | NO | Supports transactions and page-level locking |
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
| SPHINX | YES | Sphinx storage engine 0.9.8 |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+————+———+—————————————————————-+
13 rows in set (0.00 sec)

Install Sphinx

cd ../sphinx*
./configure --prefix=/usr/local/sphinx --with-mysql
make
make install

cd api/libsphinxclient
chmod +x buildconf.sh
./buildconf.sh
./configure
make
make install

Install PHP Sphinx extension
http://pecl.php.net/package/sphinx


cd ../../../
wget http://th.php.net/get/php-5.2.6.tar.gz/from/this/mirror
wget http://pecl.php.net/get/sphinx-0.2.0.tgz

tar xfz php-5.2.6.tar.gz
tar xfz sphinx-0.2.0.tgz
mv sphinx-0.2.0 php-5.2.6/ext/sphinx
rm configure
./buildconf –force
./configure –with-apxs2=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql –enable-force-cgi-redirect –with-gettext –with-zlib-dir=/usr/local/zlib –enable-mbstring –with-curl=/usr/local/lib –with-sphinx
make
make install

ทำนี้ก็เป็นอันเรียบร้อยแล้วครับ สำหรับ MySQL+SphinxSE
และ PHP Sphinx Extension