วันพุธที่ 15 มิถุนายน พ.ศ. 2554

ปรับแต่ง apache ให้รองรับ connection ได้มากขึ้น

หลายๆคนอ่านจะเคยประสบปัญหาพอมีคนเข้าเว็บเยอะๆแล้วปรากฏว่าเว็บอืด ทั้งๆที่เครื่องก็แรง แถม Ram ก็เยอะ
จริงๆแล้วสาเหตุมาจากโดยค่า default ของ apache จะสามารถรองรับ connection ได้ระดับนึง ซึ่งถ้าหากเราต้องการมากขึ้น จำเป็นที่จะต้องทำการปรับปรุงค่า configuration บางตัวเสียก่อน
ไฟล์ที่เราต้องแก้ไขคือไฟล์ ⁄etc⁄httpd⁄conf⁄httpd·conf สามารถใช้ vi editor แก้ไขได้เลย
แก้ตามนี้

StartServers 8
MinSpareServers 15
MaxSpareServers 40
ServerLimit 1024
MaxClients 1024

MaxRequestsPerChild 4000
<⁄IfModule>

StartServers 2
MaxClients 1024
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
<⁄IfModule>
ค่าที่ตั้งก็ขึ้นอยู่กับจำนวน Ram ที่เรามี จากนั้น restart apache ด้วยคำสั่ง service httpd restart ก็เป็นอันจบ
ที่มา http://www.webserverthai.com/apache/ปรับแต่ง-apache-ให้รองรับ-connection-ได้/

service httpd restart หรือ # /etc/init.d/httpd restart ...

วันจันทร์ที่ 2 พฤษภาคม พ.ศ. 2554

ย้ายข้อมูล mysql จาก freebsd ไป centos

การนำเข้าฐานข้อมูลภาษาไทยของ MySql
Posted on August 20, 2009 by seksan
สืบเนื่องจากมีความจำเป็นต้องย้ายเว็บไซด์จาก server ตัวเก่ามายัง server ตัวใหม่ซึ่งใช้MySqlที่ทำงานบนระบบปฏิบัติการ Linux CentOs ปกติแล้วหากใช้โปรแกรม phpmyadmin ในการ export และ import มายังเครื่องใหม่ได้โดยตรง ไม่น่าจะยุ่งยากและมีปัญหาอะไร…แต่….แต่…. แต่ด้วยฐานขูอมูลmysqlเดิมทำงานอยู่ภายใต้ระบบปฏิบัติการ Windowsและมีเนื้อหาส่วนใหญ่เป็นภาษาไทย ทำให้ผลจากการนำเข้ามีปัญหาคือเว็บไวด์ไม่สามารถแสดงอักษรภาษาไทยได้ถูกตรง เป็นผลมาจากการ encoding ภาษาไม่ถูกต้อง….วิธีแก้ควรจะ encode ฐานข้อมูลขณะนำเข้าให้เป็น uft8 โดยใช้คำสั่งในการนำเข้าฐานข้อมูล

# mysql -h HOSTNAME -u root -p DB_NAME --default_character_set utf8 < mysql-imported.sql

แค่นี้เราก็สามารถนำเข้าฐานข้อมูลที่แสดงภาษาไทยได้อย่างถูกต้อง
ที่มา http://www.ptwit.ac.th/seksan/blog/

วันพุธที่ 23 มีนาคม พ.ศ. 2554

Access MySQL from remote machine

Access MySQL from remote machine
การที่เราจะทำงานกับ Dabase Server สมมุติว่าเราต้องการติดต่อระหว่าง php และ MySQL Server คือ
ให้ เครื่อง แรกเป็น Database Server แล้วมีอีกเครื่อง มีตัว Application สำหรับ เรียกใช้ Database Server ได้ แต่มันติดปัญหาตรงที่เรียกใช้ข้ามเครื่องไม่ได้สิครับเราจะแก้ปัญหายังไงดีหว่า

- ถ้าเราลง MySQL Server เพียวๆ เลยนะครับ เห็นในเวอร์ชั่น 5 มันจะมีให้ ติ๊กอยู่นะว่าให้สามารถใช้งาน ดาต้าเบสจากเครื่องอื่นได้หรือป่าว มันน่าจะเขียนประมาณเนี๋ยอ่ะครับ
Remote access from anorther แล้วถ้าเราติ๊กมันก็แสดงว่าเราอนุญาตให้เข้าถึงได้

- หรือ ถ้ามันไม่เป็น เวอร์ชั่น 5 ล่่ะครับ หรือ เราลง Appserv ซะงั้น มันไม่มีให้ติ๊กอ่ะดิ เราสามารถจัดการผ่านโปรแกรม phpMyAdmin ได้ครับ โดยตอนการเพ่ิม หรือ ตอนจัดการ user อย่าพึ่ง รีบแบบขอไปทีนะครับ ลองอ่านดูก่อน มันจะมีให้เลือกว่าต้องการให้ connect จากที่ใหนได้บ้างคับ ถ้าเราใส่ % คือ จากเครื่องใหนก็ได้ ครับ หรือ localhost คือ ได้แต่เครื่องที่รัน MySQL เครืองที่รัน MySQL เท่านั้น ก็คือเครื่องเราลง MySQL เราก็ใช้งานที่เครื่องตัวเองอ่ะครับ

แต่เครื่อง client ต้องอนุญาติ ให้ติดต่อผ่าน socket ไปที่เครื่อง server ผ่านพอร์ตของ mysql server
ด้วยนะครับ อันนี้ติดประจำ

ที่มา http://juuier.blogspot.com/2006/11/tip-access-mysql-from-anorther-machine.html

ติดตั้ง Graphic Mode บน Text mode CentOS

มีครับ ถ้าเป็นค่าย CentOS ติดตั้งโดยใช้คำสั่ง
# yum groupinstall “X Window System” “GNOME Desktop Environment”
แต่เครื่องต้องออกเน็ตได้นะครับ อาจใช้เวลานานหน่อย
ถ้าเครื่องออกเน็ตไม่ได้ต้อง mount dvd ครับแล้วทำตามคู่มือ ดาวน์โหลดหนังสือ CentOS ฟรี! หัวข้อ yum จาก dvd ได้เลยครับ
ที่มา http://linux.sothorn.org/content/ถ้าไม่ได้ลง-แบบgraphic-mode-ตั่งแต่แรกเป็นtext-mode-จะมีวิธีที่กลับมาใช้-graphic-modeไหมคะ

วันศุกร์ที่ 17 กันยายน พ.ศ. 2553

รวมคำสั่ง MySQL ที่ใช้งานบ่อยๆสำหรับ PHP ( 02 กรกฎาคม 2553 )

http://www.neoxteen.com/knowledge/PHP/%E0%B8%A3%E0%B8%A7%E0%B8%A1%E0%B8%84%E0%B8%B3%E0%B8%AA%E0%B8%B1%E0%B9%88%E0%B8%87-MySQL-%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%9A%E0%B9%88%E0%B8%AD%E0%B8%A2%E0%B9%86%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A-PHP/

วันอังคารที่ 7 กันยายน พ.ศ. 2553

ปัญหาเรื่อง เวลา ของ PHP บน Windows

เจอปัญหาว่า เขียน PHP ใช้ function date เพื่อแสดงเวลาดังนี้


echo date("H:i:s");

?>

ซึ่งเวลาของ Server เป็น 10:15:20
แต่เวลาที่ระบบแสดงออกมา เป็น

11:15:20

ซึ่งเวลา จะแตกต่างออกไป 1 ชั่วโมง ปัญหาอยู่ที่ว่า ทำไมเดือนก่อนหน้านี้ไม่เป็น แต่พอเป็นเดือนนี้ (มิถุนายน) เวลาเกิดเร็วไป 1 ชั่วโมงซะงัี้น ทั้งๆที่ไม่เปลี่ยนแปลง Code ใดๆเลย ?!?!?!?!?!

ผมลองใช้ คำสั่ง

echo gmdate("H:i:s");

เพื่อแสดงเวลามาตราฐาน Greenwich Mean Time ปรากฏว่า ได้เวลาออกมาเป็น

03:15:20

ซึ่งก็ถูกต้อง แต่ทำไมคำสั่ง date() ให้เวลาไม่ตรงในเดือนนี้ ????
จากการตรวจสอบ พบว่า ใน
C:\Windows\php.ini
มีตัวแปรชื่อว่า date.timezone ไม่ได้ตั้งค่าเอาไว้
ผมเลยลองบังคับให้เป็น

date.timezone="Asia/Bangkok"

แล้ว restart IIS

ปรากฏว่า เวลากลับมาถูกต้องแล้วครับ
ลองเอาไปทำดูนะครับ
ที่มา http://share.psu.ac.th/blog/kx-note/7040

วิธีติดต่อ MySQL บน Ubuntu จากเครื่องอื่น

ติดตั้ง MySQL Server บน Ubuntu แล้ว สามารถเรียกใช้งานผ่านคำสั่ง mysql บนเครื่องนั้นได้ ไม่มีปัญหาอะไร ใช้ GUI Tools บนเครื่อง หรือจะใช้ phpMyAdmin ก็ไม่มีปัญหา ใช้งานได้ดีเยี่ยม

แต่ พอจะใช้ GUI Tools ที่อยู่บนเครื่องอื่นๆนอกเครื่องเซิร์ฟเวอร์ เช่นจะใช้ MySQL Query Browser, MySQL Front, MySQL Yog หรือแม้แต่ phpmyadmin ก็ไม่สามารถติดต่อได้

ตรวจสอบข้อมูล:

ตรวจสอบการ grant privilges ก็แล้ว ถูกต้องแน่นอน ใช้คำสั่งเดียวกันบนเครื่องอื่นๆ ก็ยังทำได้ แต่ไม่ใช่ Ubuntu

ตรวจสอบว่าติดที่ firewall หรือไม่ ก็ไม่ใช่ปัญหาอีก ตรวจสอบด้วยเครื่องมือดังกล่าวติดต่อไปยัง MySQL บน CentOS หรือ บน Windows ก็ไม่พบปัญหา เหมือน Ubuntu ทำไงดี ?

สมมุติฐาน:

Ubuntu พยายามจะรักษาความปลอดภัยให้เป็นอย่างมาก โดยกำหนดที่ไฟล์ my.cnf โดยตรง

จากการค้นคว้า พบว่ามี Server Option ชื่อ bind_address ทำหน้าที่เจาะจงว่า จะยอมรับการติดต่อจาก IP Address ใด ซึ่งจะกำหนดได้เพียงหนึ่งเดียวเท่านั้น โดย Default จะกำหนดเป็น 127.0.0.1 (บน Ubuntu) ซึ่งหมายความว่า รับฟังจากเครื่อง localhost เท่านั้น

แนวทางการแก้ไข:

ให้แก้ไขไฟล์ my.cnf ด้วยคำสั่ง

sudo vi /etc/mysql/my.cnf

แก้ไข

bind-address = 127.0.0.1

เป็น

#bind-address = 127.0.0.1

แล้ว restart mysql

sudo /etc/init.d/mysql restart

เพิ่มเติม:

เมื่อเปิด server option นี้ จะยอมรับการเชื่อมต่อจากทุกที่ หากต้องการความปลอดภัย ให้ติดตั้ง firewall เพิ่มเติม และใช้คำสั่ง grant privileges เพื่อกำหนด Access Control เพิ่มเติมด้วย
ที่มา http://share.psu.ac.th/blog/kx-note/15713