development preparation

เกริ่น

คุณคนเขียนเห็นฝรั่งเค้าสอนวิธีการ compile โปรแกรมต่าง ๆ เพื่อเตรียมสำหรับพัฒนาเว็บไซด์มาก็หลายที่ เกือบทั้งหมดล้วนแต่ช่วยให้คุณคนเขียนใช้ cell สมองน้อยลงอย่างมาก แต่ส่วนมากเค้าจะสอนกันอย่างใดอย่างหนึ่ง เช่น Apache/PHP หรือ LightTPD/Rails หรือ Apache/fcgid/Rails ที่นี้คุณคนเขียนก็เลยคิดว่า มาเขียนรวบรวมวิธีของตัวเองไว้มั่งดีกว่า เอาไว้เวลาต้องใช้ในโอกาสหน้า จะได้ไม่ต้องไปหา link กันให้วุ่นวายอีก (เอาไว้ copy/paste เลยนั่นเอง)

โดยปกติคุณคนเขียนจะ compile โปรแกรมต่อไปนี้ติดเอาไว้สำหรับใช้งานครับ คุณคนเขียนไม่ link ไปที่ file ที่ต้อง download นะครับ เพราะเดี๋ยว ๆ version ก็เปลี่ยนอีกแล้ว (ในวงเล็บคือ เวอร์ชั่นปัจจุบัน ณ ตอนที่เขียนนี้)

เมื่อก่อนนี้คุณคนเขียนมักจะ compile โปรแกรมไปไว้ใน /usr/local แล้วต่อมาก็คุณคนเขียนก็หันไปใช้ /opt/local แต่ตอนนี้คุณคนเขียนกลับมาที่ /usr/local อีกแล้ว เหตุผลง่าย ๆ คือ ขี้เกียจจำว่าเครื่องไหน compile ไปเก็บไว้ที่ไหน o_O

ก่อนอื่น

คุณคนเขียนเหมาไปเองว่า คุณ ๆ คนอ่านรู้จัก Unix และคุณ ๆ คนอ่านใช้ Mac OS X และคุณ ๆ คนอ่านได้บรรจุ /usr/local/bin กับ /usr/local/sbin เข้าไปไว้ใน path เรียบร้อยแล้ว และที่สำคัญ คุณ ๆ คนอ่านรู้ว่า tar xfz หรือ tar xfj แปลว่าอะไร … ถ้าถึงตรงนี้เกิดความไม่เข้าใจ หน้านิ่วคิ้วขมวดเป็นเครื่องหมายคำถาม คุณ ๆ คนอ่านหยุดอ่านได้เลยนะครับ คุณคนเขียนไม่ว่าอะไร :)

เริ่มขั้นแรก MySQL / Apache / PHP

คุณคนเขียนมัก compile MySQL เป็นอย่างแรก (อันที่จริงเค้ามี pre-compiled binary ให้ด้วย แต่คุณคนเขียนไม่เอา แหะ ๆๆๆ)

./configure --prefix=/usr/local --localstatedir=/usr/local/mysql_data make sudo make install

แล้วคุณคนเขียนก็ต่อด้วย Apache 2

./configure --prefix=/usr/local/apache2 --bindir=/usr/local/bin --sbindir=/usr/local/sbin --enable-so --enable-rewrite --enable-modules=all --enable-mods-shared=all make sudo make install

แล้ว PHP 5 ก็ตามมาติด ๆ

./configure --prefix=/usr/local --with-apxs2=/usr/local/sbin/apxs --with-mysql --with-mysqli make sudo make install

ถึงตอนนี้คุณคนเขียนก็ไปแก้ไข /usr/local/apache2/conf/httpd.conf นิด ๆ หน่อย ๆ โดยดูให้มั่นใจว่ามีบรรทัดต่อไปนี้

LoadModule php5_module modules/libphp5.so

แล้วก็เพิ่มบรรทัดนี้เข้าไปด้วย

AddType application/x-httpd-php .php

สุดท้ายไปเพิ่ม index.php ในบรรทัดที่เขียนว่า DirectoryIndex

หลังจากนั้นก็พร้อมที่จะเขียนเว๊บไซด์ทั่วไป และเว๊บไซด์ที่ต้องใช้ PHP กับ Database แล้ว

ตามมาด้วย Ruby และ Rails

ด้วยความที่ Ruby ที่มากับ Tiger (Mac OS X 10.4) มันออกจะแหว่ง ๆ คือ ไม่มี Readline library ติดมาด้วย เลยทำให้ใช้ irb ซึ่งเป็น interactive command-line ของ Ruby ไม่ได้ ทีนี้เราก็เลยต้องเริ่มด้วยการ compile Readline กันก่อน … สั้น ๆ ง่าย ๆ

./configure --prefix=/usr/local make sudo make install

เสร็จแล้วก็ตามด้วย Ruby ในบัดดล

./configure --prefix=/usr/local --enable-pthread --with-readline-dir=/usr/local make sudo make install sudo make install-doc

Package (Library) manager ของ Ruby เรียกว่า RubyGems Rails ก็เป็น gem ตัวหนึ่งเหมือนกัน เพราะฉะนั้นก่อนจะใช้ Rails ได้ก็ต้อง install RubyGems ซะก่อน …

sudo /usr/local/bin/ruby setup.rb

เสร็จแล้วก็ลงมือ install Rails

sudo gem install rails --include-dependencies

เท่านี้ก็สามารถเริ่มพัฒนา Ruby on Rails ได้แล้ว แต่คุณคนเขียนยังไม่หยุดเท่านี้

MySQL with Rails

เพื่อความคล่องแคล่วในการทำงาน (มันจะซักเท่าไหร่เชียว!) เราไปหยิบเอา MySQL library สำหรับ Ruby มาเก็บไว้ด้วยดีกว่า

sudo gem install mysql -- --with-mysql-dir=/usr/local

Better Rails Server

Ruby มี web server ติดตัวมาด้วยชื่อว่า WEBrick ซึ่งตัวนี้ก็เป็นตัวที่ Rails ใช้ แต่ประสิทธิภาพของ WEBrick อาจจะเชื่องช้าไปสักนิดนึง ก็เลยมีคนพัฒนา HTTP library ตัวใหม่ขึ้นมาให้ Ruby มีชื่อว่า Mongrel … คุณคนเขียนก็เลยถือโอกาสไปหยิบมาติดเอาไว้ด้วย

sudo gem install mongrel

Database ทางเลือก

ทางเลือกหนึ่งสำหรับการเขียน Rails (และอย่างอื่นด้วย) โดยไม่ต้องใช้ MySQL database server คือใช้ SQLite โดย SQLite เนี่ยเป็น database ระบบที่ใช้ file เพื่อเก็บข้อมูล เพราะฉะนั้นจึงไม่จำเป็นต้องมี server ติดตัวไปไหนมาไหน ก่อนอื่นก็ต้องบอกกว่าว่า Tiger มี SQLite ติดมาให้อยู่แล้ว เพราะฉะนั้นไม่ต้อง compile ใหม่ก็ได้ แต่ถ้าอยากได้โปรแกรมตัวใหม่ล่าสุด ก็ต้อง compile เองดังนี้

./configure --prefix=/usr/local make sudo make install

ทำไมมันช่างดูคุ้นเหลือเกิน … อ้อ มันคือ installation trinity นั่นเอง

ต่อมาก็ compile SWIG โดยตัวนี้จะบอกให้ Ruby ใช้ sqlite3-ruby library (gem) … เหมือนเดิม

./configure --prefix=/usr/local make sudo make install

ท้ายที่สุดก็ไปหยิบเอา sqlite3-ruby มาซะ

sudo gem install sqlite3-ruby

เท่านี้คุณคนเขียนก็พร้อมจะมีความสุขกับการเขียนโปรแกรมแล้ว :)

สวัสดีครับ