ปกติเวลา setup เครื่อง ผมจะปิดการใช้งาน cgi ของ apache อยู่แล้ว เพื่อความสบายใจว่าไม่ต้องกังวลกับช่องโหว่ของ cgi บลาๆ. แต่ล่าสุดมีเครื่องนึงที่อยากจะซูมดูกราฟของ munin แต่มันติดว่าทำไม่ได้ :'( ก็เลยลองพยายามที่จะปรับให้มันใช้ได้ดู. Continue reading “DirectAdmin (CentOS 7) + munin dynamic zoom”
using “this” in React event handler method
ใน method ที่ใช้เป็น Event handler ถ้าเขียนโดยใช้ ES2015 มันจะไม่สามารถเรียก this เพื่อเข้าถึง object ของ Component ได้ ซึ่งจะต้องสั่ง bind this ไว้ใน constructor ลักษณะนี้
[js]class MyButton extends React.Component {
static defaultProps = {
text: ‘Click’
}
static propTypes = {
text: React.PropTypes.string.isRequired
}
state = {
text: this.props.text
}
constructor(props) {
super(props);
this.clickHandler = this.clickHandler.bind(this); // <—— Bind here
}
clickHandler(e) {
e.preventDefault();
this.setState({ text: ‘clicked’ });
}
render() {
return(
<button onClick={ this.clickHandler }>
{ this.state.text }
</button>
);
}
}[/js]
socket.io behind nginx (response code: 400)
เจอ error แบบนี้ใน console ของ browser
failed: Error during WebSocket handshake: Unexpected response code: 400
แก้โดยปรับ config ของ nginx ให้เป็นแบบนี้
location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
(สีแดง คือ ที่เพิ่งเพิ่มเข้าไปทีหลัง แล้วมันแก้ปัญหาได้)
ปัญหา CURL ไป https:// บางที่แล้ว error
ถ้าเสิร์ช Google หลายๆ ที่จะบอกให้ปิด CURLOPT_SSL_VERIFYPEER ตอนเรียกใช้ curl ซึ่งจริงๆ แล้วเพื่อความปลอดภัย เราไม่ควรจะปิดการเช็คตรงนั้น
สำหรับวิธีแก้ที่ถูกต้องคือ ให้เราไปดาวน์โหลดไฟล์ cacert.pem จากเว็บนี้ http://curl.haxx.se/docs/caextract.html มา
แล้วแก้ที่ไฟล์ php.ini ลักษณะนี้
curl.cainfo="c:\php\cacert.pem" openssl.cafile="c:\php\cacert.pem"
DirectAdmin mysql installation problem
หากเกิดปัญหาบางอย่าง ที่ทำให้การติดตั้ง mysql ไม่สมบูรณ์ สามารถใช้ script: /usr/local/directadmin/scripts/mysql.sh ในการแก้ไขได้…
ข้อควรระวัง: รู้สึกว่ามันจะเคลีย database เดิมด้วย ไม่แน่ใจว่าเฉพาะ database mysql หรือเปล่า.
Installing Apache 2.4, PHP 5.5 Windows 7
- สร้างโฟลเดอร์ c:/wamp/
- ดาวน์โหลดไฟล์ httpd-2.4.7-win32-VC11.zip (ถ้าอยากได้เวอร์ชั่นล่าสุดให้ดูที่เว็บนี้ http://www.apachelounge.com/download/) บทความนี้เลือกใช้ win32 เพราะว่า VC11 x86 Thread Safe ในเว็บ PHP มันยังเป็น experimental อยู่
- เอาไฟล์ของ httpd ที่โหลดในข้อก่อนหน้า มา Extract ไว้ที่พาท
c:/wamp/apache2.4_win32/ - ดาวน์โหลดไฟล์ php-5.5.7-Win32-VC11-x86.zip (ถ้าอยากได้เวอร์ชั่นล่าสุดหาดูจากที่นี่ http://windows.php.net/download/ ให้เลือกอันที่เป็น VC11 Thread Safe ส่วนถ้า x64 มันไม่ experimental แล้ว ก็น่าโหลดเอามาใช้นะ แต่ต้องเปลี่ยน httpd ให้เป็น win64 ด้วย)
- สร้างโฟลเดอร์ c:/wamp/php-5.5.7_win32/ เอาไฟล์ที่โหลดก่อนนี้มาใส่พาทนี้
- แก้ไฟล์ c:/wamp/apache2.4_win32/conf/httpd.conf
Replace: c:/Apache24/htdocs With: c:/wamp/www
- เติม code นี้เข้าไปที่ด้านล่างสุด
LoadModule php5_module "c:/wamp/php-5.5.7/php5apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "c:/wamp/php-5.5.7" DirectoryIndex index.html index.php
- Load Module ดังนี้
- mod_expires.so
- mod_headers.so
- mod_rewrite.so
- mod_socache_shmcb.so
- mod_ssl.so
- mod_vhost_alias.so
- Uncomment บรรทัดนี้ Include conf/extra/httpd-ssl.conf
- แก้ไฟล์ c:/wamp/apache2.4_win32/conf/extra/httpd-ssl.conf
- SSLCertificateFile “C:\wamp\apache2.4_win32\conf\server.crt”
- SSLCertificateKeyFile “C:\wamp\apache2.4_win32\conf\server.key”
- DocumentRoot “c:/wamp/www”
- ไปที่โฟลเดอร์ php-5.5.7_win32 แล้ว copy php.ini-development ตั้งชื่อไฟล์เป็น php.ini
- แก้ไฟล์ php.ini
- extension_dir = “C:/wamp/php-5.5.7_win32/ext”
- date.timezone = “Asia/Bangkok”
- enable extensions
- php_curl.dll
- php_gd2.dll
- php_imap.dll
- php_mbstring.dll
- php_mysql.dll
- php_mysqli.dll
- php_openssl.dll
- php_tidy.dll
- เติมโค๊ดนี้ที่ท้ายไฟล์
zend_extension="c:\wamp\php-5.5.7_win32\ext\dbg-php-5.5.dll" [debugger] debugger.enabled=on debugger.profiler_enabled=on debugger.hosts_allow= 127.0.0.1 localhost ::1 127.0.0.1 debugger.hosts_deny=ALL debugger.ports=7869
- copy ไฟล์ dbg-php-5.5.dll จากในโฟลเดอร์โปรแกรม phpED ไปใส่ตรง c:\wamp\php-5.5.7_win32\ext\ ด้วย
- เปิด cmd โดย run as administrator
- รันคำสั่ง
- cd /wamp/apache2.4_win32/conf/
- ..\bin\openssl.exe req -config openssl.cnf -x509 -nodes -subj “/C=TH/ST=Bangkok/L=Bangkok/O=localhost/OU=SEC/CN=localhost” -days 1825 -newkey rsa:2048 -keyout server.key -out server.crt
- c:\wamp\apache2.4_win32\bin\httpd.exe -k install
- (ข้อนี้ข้ามไปก็ได้ ไว้ถ้ามีปัญหาค่อยกลับมาทำ)
ใน Environment Variables ตรง System Variables
ที่ตัวแปร PATH ให้เติม C:\wamp\apache2.4_win32\; C:\wamp\apache2.4_win32\bin ต่อเข้าไป
วิธีการ configure vhost
<VirtualHost 127.0.0.1:80> DocumentRoot "C:/wamp/site2/" ServerName www.site2.local ServerAlias site2.local www.site2.local </VirtualHost> <VirtualHost 127.0.0.1:443> DocumentRoot "C:/wamp/site2/" ServerName www.site2.local ServerAlias site2.local www.site2.local SSLEngine on SSLCertificateFile "c:/Wamp/Apache2.4_win32/conf/server.crt" SSLCertificateKeyFile "c:/Wamp/Apache2.4_win32/conf/server.key" </Virtual>
ถ้าในกรณีที่ DocumentRoot ของ VirtualHost อยู่คนละพาทกับ DocumentRoot หลักใน httpd.conf ให้ไปเพิ่ม <Directory … > ….. </Directory> ใน httpd.conf ด้วย
Customize Zimbra’s Skin
ตำแหน่งโฟลเดอร์ skins ของ Zimbra จะอยู่ประมาณนี้ (อันใดอันหนึ่ง ขึ้นอยู่กับการติดตั้ง)
/opt/zimbra/jetty-distribution-7.6.12.v20130726/webapps/zimbra/skins/ /opt/zimbra/tomcat/webapps/zimbra/skins/
อาจจะใช้คำสั่ง find /opt/zimbra/ -type d -name skins เพื่อหาโฟลเดอร์ดังกล่าว
ค่าต่างๆ ใน CSS มาจากตัวแปรที่กำหนดในไฟล์ skin.properties ที่อยู่โฟลเดอร์ skin แต่ละอัน
นอกจาก CSS แล้ว มันก็ยังมีให้แก้รูป Logo ได้ด้วย
ในไฟล์ skin.properties จะมีการกำหนดว่าตัวเอง extend มาจากไฟล์ไหนด้วย ก็ลองดู Format ตัวแปรไฟล์นั้นๆ ได้
หลังจากแก้เสร็จแล้วให้ restart zimbra ด้วยคำสั่ง
su zimbra zmcontrol stop zmcontrol start
จริงๆ อาจจะมีวิธี reload ที่ดีกว่าการ stop / start เพราะว่ามันรอนานเหมือนกัน
Reference:
http://wiki.zimbra.com/wiki/Customizing_Themes_and_Adding_Zimbra_Powered_Logo_-_Open_Source_Edition
How to check array isset and is_null in PHP
ถ้า value ของ Array ช่องนึงเป็น NULL เวลาที่เช็คด้วยคำสั่ง isset มันจะได้ false ดังตัวอย่างนี้
[php]<?php
$arr = array();
$arr[‘foo’] = NULL;
var_dump( isset( $arr[‘foo’] ); // ให้ผลลัพท์เป็น bool(false)
?>[/php]
วิธีที่จะเช็คว่า Array มีการกำหนด key นั้นอยู่ และค่าของมันเป็น NULL ด้วย ให้ใช้คำสั่ง array_key_exists ดังตัวอย่างนี้นี้
[php]<?php
if ( array_key_exists( ‘foo’, $arr ) && is_null( $arr[‘foo’] ) )
echo "OK";
?>[/php]
Zimbra: Monitor – Server Status still show old hostname
After you changed hostname ( http://wiki.zimbra.com/wiki/ZmSetServerName ). The old hostname still exist in menu Monitor > Server Status. You have to remove it by this command
zmloggerhostmap -d <dns_hostname> <zm_hostname>
ps. I input <dns_hostname> and <zm_hostname> as same value that is show in Server Status.
Install CentOS 6.4 บนเครื่องที่เป็น UEFI
พอดีได้เครื่อง IBM sytem x3250 M4 มา ผมก็จะนำมาติดตั้ง CentOS 6 + DirectAdmin ตามปรกติ แต่ปรากฏว่าติดปัญหาหลาย step โคตรๆ ตั้งแต่ไม่บูทแผ่น ไม่บูท USB กว่าจะ debug จนทำให้มันบูทเข้า USB ได้นี่ก็เสียเวลาไปเยอะ เพราะว่า Restart แต่ละทีมันรอนานมาก
สรุปประเด็นหลักๆ ที่ติด และวิธีการแก้ไข
1.) USB ที่สร้างมาจาก minimal มันจะไม่สามารถบูทได้ วิธีแก้ คือ ให้ copy โฟลเดอร์ /images/pxeboot ที่อยู่ในแผ่น DVD-1 มาใส่ใน USB ด้วย
2.) การกำหนด Partition ตอนติดตั้ง OS ให้กำหนดเป็นแบบนี้
- /dev/sda
- /boot ext3 200M
- /boot/efi EFI System Partition 200M
- /dev/sdb
- … ext3 200M
- … vfat 200M