2011-08-19

ubuntu 11.4 server純文字下安裝rails環境範例(含rvm,編譯mysql 5.5)

* 經virtual box測試,Ubuntu 10.4 LTS也適用。

這其實是我架設公司的server的筆記
本篇目標是裝到一個可以用WEBrick跑rails app的環境,所以不含apache或mod_rails之類的,可能之後再做整理分享。

SECTION 1 安裝ubuntu

先下載並燒好ubuntu-11.04-server-i386.iso
安裝ubuntu就不詳細說明了,主要要注意的是
  • 語言要選擇English,否則有些目錄可能會變成中文的之類的,總之是個麻煩
  • 分割(partition):依照你的需求
  • 新增第一個使用者,將會是sudoer(具有系統管理權限)
  • 設定使用者時會問你要不要加密家目錄,我是為了保留以後舊資料的機會,所以都選不加密
  • 安裝過程會問你要不要裝某些server,把OpenSSH Server打*(按空白鍵)。或者系統裝好之後補安裝:

sudo apt-get update #如果找不到套件的話,可能需要先update
sudo apt-get install openssh-server

*vim基本操作
接下來很多都要透過vim修改,被圖型介面寵壞的人...w...最少要知道以下的東西:
  • vim開檔案以後,還不能輸入,要按i鍵進入編輯模式
  • 離開編輯模式按Esc
  • 儲存並離開:wq (按Enter) (w是儲存,q是離開。這必須是在Esc退出編輯模式時打才有用,下同)
  • 不儲存並離開:q! (按Enter) (!是強制離開的意思,因為如果有未儲存修改的時候,單純q是退不出去的)
  • 修改一些系統用的檔案時,可能會因為權限不足無法儲存,請先強制離開後再用sudo vim 該檔案

SECTION 2 設定網路,改成固定ip

sudo vim /etc/network/interfaces

原本的內容:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

如果有多張網卡,那要確認是用哪一張(eth0, eth1, ...?)
原本是dhcp,要改成固定ip(手動設定)

修改成類似這樣:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address:192.168.12.86
netmask:255.255.255.0
gateway:192.168.12.1

參考


SECTION 3 安裝MySQL 5.5

前置動作,安裝一些需要的套件
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline5-dev git-core curl # git-core跟curl是安裝rvm時會用到的

* 目前mysql官方是5.5了,但是ubuntu套件庫裡面還是5.1,如果你不指定要mysql 5.5的話,可以直接用apt-get安裝:
sudo apt-get install mysql-server 
安裝過程會要你輸入(以設定)mysql root的密碼

但是我們要手動編譯mysql 5.5,以下:

sudo apt-get install cmake bison libncurses5-dev

sudo groupadd mysql
sudo useradd -r -g mysql mysql

wget "http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://mysql.he.net/"
mv index.html mysql-5.5.15.tar.gz
tar -xvzf mysql-5.5.15.tar.gz
cd mysql-5.5.15
cmake -LAH > options
cmake .
sudo make
sudo make install

cd /usr/local/mysql
sudo chown mysql.mysql -R .
sudo ./scripts/mysql_install_db --user=mysql

sudo ./bin/mysqld_safe --user=mysql &
sudo ./bin/mysql_secure_installation
#他會引導你設定mysql root密碼,以及一些選項,我是全部都打Y (yes)

sudo cp support-files/my-huge.cnf /etc/my.cnf
sudo cp support-files/mysql.server /etc/init.d/mysql

ps -Al | grep mysqld_safe #這行與下一行都只是為了砍掉mysqld_safe,其實重開機後應該也就沒了
sudo kill -SIGKILL <<pid>> #<<pid>>是找出剛才的mysql_safe的pid

sudo update-rc.d -f mysql defaults #開機自動執行

sudo vim /etc/profile
# 加在最尾端;
PATH=$PATH:/usr/local/mysql/bin


參考1, 參考2

SECTION 4 設定網站用的系統帳號

我希望把網站的開發環境放在某一個user之下,但又想讓多個開發者access,聽前輩的建議是開一個專用的user account但是不給登入,需要access的人 先登入私人帳號,再用su切換身分。這麼做的目的是su切換身分時會留記錄在/var/log/auth.log。
sudo adduser --disabled-login projectx #projectx是專用的帳號的名稱
sudo su - projectx # 有加-號才會載入環境變數, 如果不用sudo切換他會要求你輸入projectx的密碼,但其實projectx並沒有設定密碼(剛才下--disabled-login參數以後,他就會跳過設定密碼,因為沒有密碼,所以就停用登入)

日後要增加其他的使用者時,以下
sudo adduser 使用者名稱
sudo adduser 使用者名稱 admin #加入admin群組,成為sudoer,如此才可以用sudo su - projectx

SECTION 5 安裝rvm, ruby

rvm要裝在一個user底下,也就是剛才建出來的user,所以以下操作要在su切換到該使用者之後做。

安裝rvm
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

安裝後他會有訊息顯示要你把以下指令放在shell loading file的最尾端,在ubuntu的話是~/.bashrc,不過他應該已經幫你加好了。附帶一提,在mac上是~/.profile
[[ -s "/home/bruce/.rvm/scripts/rvm" ]] && source "/home/bruce/.rvm/scripts/rvm"  # This loads RVM into a shell session.

他建議你開啟一個新shell,不過主要是為了剛才加在shell loading file的東西,所以給他load一下就可以了,順便試試看rvm可否執行:
source ~/.bashrc
rvm list

我目前要用的是1.9.2而已,安裝:
rvm install 1.9.2
rvm list #應該就會看到剛才裝的ruby 1.9.2了
rvm 1.9.2 --default #設定成default的ruby

SECTION 6 設定gemset, 安裝Rails

rvm gemset create r309
rvm gemset use r309
gem install rails mysql2


SECTION 7 跑一個rails app測試一下

rails new blog -d mysql
cd blog
vim config/database.yml #修改成正確的mysql帳號密碼
bundle install
rake db:create
rails generate scaffold post title:string body:text
rake db:migrate
rails server


其他需要用到的套件

這就看各專案需求了
sudo aptitude install libxslt1-dev libxml2-dev

#安裝 ghostscript
brew install ghostscript  

#加入中文字型
copy 中文字型 到指定目錄下(路徑在程式裡面指定)

2 comments:

  1. 不好意思,終於搜尋到有人寫mysql 5.5 教學
    我已經按照您的方式安裝cmake
    但是打了cmake -LAH > options
    卻出現

    CMake Error: The source directory "/tmp/mysql-5.5.22-linux2.6-x86_64" does not appear to contain CMakeLists.txt.
    Specify --help for usage, or press the help button on the CMake GUI.

    ReplyDelete
    Replies
    1. 不好意思,現在才發現被系統誤判成spam了|||... 現在mysql 5.5好像已經有在套件庫了... 應該沒有這個問題了吧(汗

      Delete