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
เท่านี้คุณคนเขียนก็พร้อมจะมีความสุขกับการเขียนโปรแกรมแล้ว :)
สวัสดีครับ