วันพฤหัสบดีที่ 10 ตุลาคม พ.ศ. 2556

การ Config php.ini

สำหรับการ setup php ตั้งแต่เวอร์ชั่น 5.3 เป็นต้นไป จะมีไฟล์ php.ini-development เอาไว้เป็น sample ให้ copy เป็น php.ini ถ้าต้องการใช้ทดสอบโปรแกรมเฉยๆ และไฟล์ php.ini-production เอาไว้ใช้ใน server ที่ให้บริการกับลูกค้าจริง
โดย config ที่ผมจะแนะนำให้รู้จักมีดังนี้
  • display_errors - On/Off - หากเกิด error ขึ้นให้แสดงภายในหน้าเว็บหรือไม่ ถ้าเป็นเครื่อง development ควร On ไว้เพื่อ debug ถ้าเป็นเครื่อง production ควร Off เพื่อไม่ให้ผู้ใช้เห็น
  • error_reporting - E_ALL/0 - ใช้ปรับระดับ level การแสดง error ว่าจะให้แสดงมากน้อยเพียงใด หากต้องการปิด error ไม่ให้แสดงเลย ให้ใส่เป็น 0 (ศูนย์) ได้
  • short_open_tag - On/Off - ถ้าเปิด On ไว้จะสามารถใช้ <? ?> แทน <?php ?> และ <?=’Hello World’?> แทน <?php echo ‘Hello World’; ?> ได้ (feature นี้เพื่อความสะดวกของตัวโปรแกรมเมอร์นั่นเอง)
  • max_execution_time - int - กำหนดเป็นตัวเลขที่ต้องการให้ script สามารถรันได้นานที่สุด ทั่วไปกำหนดที่ 30 วินาทีซึ่งค่อนข้างเพียงพอต่อการใช้งานทั่วไป หากต้องมีการทำงานที่ใช้การประมวลผลเป็นเวลานานสามารถปรับเพิ่มขึ้นได้ แต่ไม่แนะนำให้ใส่เยอะเกินไป เพราะอาจทำให้ loop infinite ก่อนความเสียหายเป็นระยะเวลานาน โดยที่เราไม่รู้ตัวได้
  • max_input_time - int - ใช้กำหนดเวลามากที่สุดที่อนุญาตให้ php ประมวลผลข้อมูลที่ผู้ใช้ส่งเข้ามาได้เช่นการ submit form post
  • memory_limit - int - กำหนดขนาดของ memory ที่อนุญาตให้ script แต่ละตัวใช้ได้ ถ้ากำหนดสูงไปอาจเกิดปัญหา memory leak ได้
  • post_max_size - int - ขนาดข้อมูลใหญ่ที่สุดที่อนุญาตให้ผู้ใช้ส่งเข้ามาได้ ขนาดตรงนี้รวมทั้ง file ที่ upload และข้อมูลที่ submit ผ่าน form เข้ามา
  • auto_prepend_file - string - path ไฟล์ php ที่ต้องการทำงานก่อนการทำงาน php ทุกๆ ไฟล์ที่รันตามปกติ ตรงนี้มีประโยชน์มากต่อการกำหนดตัวแปร Global ที่ต้องการให้ใช้งานได้ทุกๆ ไฟล์ ซึ่งเราจะเขียนอย่างไรก็ได้ตามใจเราเลย
  • auto_append_file - string - เหมือน  auto_prepend_file  ต่างกันแค่เป็นการทำงานหลังไฟล์ php ทุกๆ ไฟล์
  • file_uploads - On/Off - อนุญาตให้ upload file ขึ้น server ได้หรือไม่
  • upload_max_filesize - int - ขนาดไฟล์สูงสุดที่ให้ upload ได้ (ต้อง <=  post_max_size )
  • max_file_uploads - int - จำนวนไฟล์ที่ upload ได้พร้อมกันทั้งหมด
  • extension - string - กำหนด extension ของ php ที่ต้องการใช้งาน
  • session.gc_maxlifetime - int - อายุของ session ของผู้ใช้แต่ละคนที่จะเก็บไว้สูงสุด หากมีการเรียกใช้ session

Update Join Sql

update `hipdata` h right join pttype_bb pb on h.cid=pb.`3420900078775` set moi_status="OFC",pttype='26' ;

การติดตั้ง Upgrade Mysql

การติดตั้ง Upgrade Mysql 

ผมขอยกตัวอย่าง MariaDB-5.5.32 สำหรับ Centos 6 ขึ้นไปครับ ส่วนถ้าใครอยากติดตั้ง Centos 5 ขึ้นไปต้องดูว่า Os กี่บิต และใช้สำหรับอะไร เช่น

MariaDB-5.5.32-centos6-x86_64-client.rpm คือ
MariaDB-5.5.32 คือ Version MariaDB
centos6 คือ ใช้สำหรับ Centos 6 ขึ้นไป
x86_64 คือ ใช้กับ OS 64bit เท่านั้น


พอเริ่มเข้าใจโครงสร้างแล้วเราก็มาเริ่มกันเลยครับ

[root@hosxp ~]mysql -v      #ดูเวอร์ชั่น mysql
[root@hosxp ~]uname -a      #ดูเวอร์ชั่น OS
[root@hosxp ~]#vi /etc/sysconfig/iptables
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
setenforce 0

[root@hosxp ~]#vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ## เพิ้มค่านี้เข้าไป
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ## เพิ้มค่านี้เข้าไป
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@hosxp ~]#vi /etc/security/limits.conf
# เพิ่มข้อมูลนี้เข้าไป
root     soft     nofile     50000
root     hard     nofile     50000
mysql     soft     nofile     50000
mysql     hard     nofile     50000


## ลบ MySQL ในเครื่องออก
[root@hosxp ~]#rpm -qa|grep mysql                #  คนตัวติดตั้งที่ขึ้นต้นด้วย mysql
[root@hosxp ~]#rpm -e --nodeps mysqlxxxxx        # ลบ Mysql
[root@hosxp ~]cp my_MariaDB_xxx.cnf /etc/my.cnf

## Install MySQL MariaDB
[root@hosxp ~]#rpm -ihv MariaDB-5.5.32-centos6-x86_64-client.rpm --nodeps --force
[root@hosxp ~]#rpm -ihv MariaDB-5.5.32-centos6-x86_64-shared.rpm --nodeps --force
[root@hosxp ~]#rpm -ihv MariaDB-5.5.32-centos6-x86_64-server.rpm --nodeps --force

[root@hosxp ~] service mysql start

** หาก Start MySQL ไม่ได้ บอก pid error ให้ทำตามนี้
[root@hosxp ~]rm -rf /var/lib/mysql/*
[root@hosxp ~]ls -al /var/lib/mysql/
[root@hosxp ~]chown -Rv mysql:mysql /var/lib/mysql/*
[root@hosxp ~]sudo -u mysql mysql_install_db
[root@hosxp ~]service mysql start

[root@hosxp ~]/usr/bin/mysqladmin -u sa password 'sa'

##MySQL Create database
[root@hosxp ~]mysql -u root -p  << Enter

MariaDB [(none)]>create database hosxp_pcu default character set tis620;
MariaDB [(none)]>grant all privileges on *.* to sa@'sa' identified by 'sa' with grant option;
MariaDB [(none)]>grant all on *.* to sa@'%' identified by 'sa' with grant option;
MariaDB [(none)]>flush privileges;
MariaDB [(none)]>Ctrl-C -- exit!
Aborted
[root@hosxp ~]

## จบครับ