歡迎您光臨本站 註冊首頁

Ubuntu 7.10+ruby+rails+mongrel+nginx 架設簡易說明,有別於7.04

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

Ubuntu7.10 正式版出來有兩天了,正好要在linux下開發rails項目,所以下載下來燒碟來裝.
遇到了一些問題,總結一下,希望能給遇到同樣問題的朋友幫上忙.

我先是看了一篇帖子后安裝的 http://www.ubfchina.cn/article/view.asp?id=29
安裝的時候可以選語言,英文中文都無所謂,反正中文的安裝后也僅部分漢化,還得上網下補丁才行.
引用上面帖子的內容 ,修改源才能更新

=======
在終端輸入並運行
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (備份當前的源列表,以便日後需要時恢復)
sudo gedit /etc/apt/sources.list (修改sources.list文件中源的列表)

我是選的北方網通的源,具體源內容大家參照上面的帖子吧,人家寫的很好,所以還是去捧場吧.

帖子中也提到deb http://archive.ubuntu.org.cn/ubuntu-cn/ feisty main restricted universe multiverse要加上.

我常識過弄更高級的3D桌面,換主題,結果好像少什麼文件,啟動不了,所以放棄了.華而不實的東西,暫時沒興趣考慮.

閑話少說,安裝Ruby RubyGems Rails Mongrel Nginx.
這次Ubuntu7.10的源里都有了,所以用新立得安裝就行了,Ruby要選上ruby1.8和ruby1.8-dev.
但是好像還缺東西,補充上sudo apt-get install libssl-dev(必須)
sudo apt-get install libzlib-ruby rdoc ri irb (我不記得新立得選ruby的話會不會安裝這些了,寫多了也沒事,不會重複安裝的)

下面再裝mongrel_cluster來管理多個mongrel服務
sudo gem install daemons gem_plugin mongrel mongrel_cluster

記得選的版本裡面是ruby編譯的.如果報錯就是ruby開發包少裝了.

建立mogrel用戶 sudo /usr/sbin/addusr mongrel
密碼也mongrel吧

用rails 建立個站點 比如在 /home/abendas/www/www.abendas.com
給站點目錄加上剛才mongrel用戶的許可權吧 sudo chown -R mongrel:mongrel /home/abendas/www.abendas.com/

然後設置站點mongrel配置
cd /home/abendas/www/www.abendas.com
sudo mongrel_rails cluster::configure -e development -p 8000 -N 2 -c /home/abendas/www.abendas.com/ -a 127.0.0.1 --user

mongrel --group mongrel
說明下 -e development 是rails的development模式,可以跟自己需要改其他模式.-p 8000 開始用的埠號 -N 2 是開的mongrel進程數量(我

現在開了2個線程,每個都要用單獨埠,向後排,那就是8000 和 8001埠分給它們倆使用了) -c /home/abendas/www.abendas.com/ 站點的路

徑 -a 127.0.0.1 mongrel服務所在的電腦的IP. --user mongrel --group mongrel 注意是兩個-,用戶名和組,就是剛才我們建立的

mongrel用戶.

這時候在站點的config裡面生成了一個mongrel_clueter.yml文件,可以看看裡面是怎麼寫的,回頭可以自己方便的改.

下面的工作就是把配置文件放到統一的一個地方來.
sudo mkdir /etc/mongrel_cluster
sudo ln -s /home/abendas/www/www.abendas.com/config/mongrel_cluster.yml /etc/mongrel_cluster/abendas.yml
意思就是從站點目錄把yml文件鏈接到 /etc/mongrel_cluster/下重新命名,可隨意,我是命名為abendas.yml了.

下面,不同與7.04的地方出現了
要找mongrel_cluster,
sudo find / -name mongrel_cluster
結果在/var/lib/gems/1.8/gems/mongrel_cluster-1.0.2/resources/mongrel_cluster找到了,我記得是跟7.04不一樣.

放到啟動文件夾去.
cd /etc/init.d/
sudo cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.2/resources/mongrel_cluster mongrel_cluster

給它可執行的屬性
sudo chmod +x /etc/init.d/mongrel_cluster

然後設為隨機啟動
sudo update-rc.d mongrel_cluster defaults

然後我們可以啟動了吧?sudo /etc/init.d/mongrel_cluster start
沒反應.....
2B的現象發生了........
我查看mongrel_cluster的代碼,每個語句執行發現mongrel_cluster_ctl 找不到...
恍然大悟
sudo find / -name mongrel_cluster_ctl
在/var/lib/gems/1.8/bin/mongrel_cluster_ctl

那我們就
####################################################################
sudo ln -s /var/lib/gems/1.8/bin/mongrel_cluster_ctl /usr/bin/
####################################################################
再sudo /etc/init.d/mongrel_cluster 就ok了,這地方一開始不知道,重裝了一次還是出錯,所以我覺得是這個版本的mongrel_cluster安裝默認

設置漏掉把它鏈接到/usr/bin/了吧.

如果米有給mongrel帳號在站點目錄的許可權,或者站點目錄在/var/www里,可能會報 mongrel8000.pid什麼的錯誤,那是許可權的問題.自行解決吧

剛才在新立得里就已經安裝nginx了,不錯的很.

配置nginx 在/etc/nginx/nginx.conf
默認裡面有句 include /etc/nginx/sites-enabled/*;
那就去 /etc/nginx/site-enabled裡面找文件打開

我的配置如下
#後面的註釋後來打的,不知道會不會影響,不行就去掉註釋哈.

upstream abendas {
#命名為abendas了再複製一份改個名字就是另一個站點的mongrel群,注意埠號.
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}

server {
listen 80;#至少要有個server{}帶著 listen 80 ,不然啟動的時候不能自動運行..可能是啟動在dns伺服器之前了
listen www.abendas.com:80;

server_name www.abendas.com;
#加上 server_name www.abendas.cn; 就是多域名指向同一個站點
access_log /var/log/nginx/localhost.access.log;

location / {
root /home/abendas/www/www.abendas.com/public;
#rails站點目錄的public目錄
index index.html index.htm;
}
location / {
proxy_pass http://abendas;
#跟對應的mongrel群名字要對上
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+\.

(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {
#以上後綴名的文件直接走nginx不走mongrel了
root /home/abendas/www/www.abendas.com/public;

}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}

記得以後重啟mongrel和nginx就在
sudo /etc/init.d/mongrel start|restart|stop
sudo /etc/init.d/nginx start|restart|stop

補充:
nginx的設置裡面 server {
listen 80;...
如果米有,就會開機啟動不了nginx,在nginx的日誌里說無法解析ip...
可想而知,nginx的啟動順序比name等服務要靠前了...
sudo update-rc.d nginx remove 刪除nginx自動啟動
sudo update-rc.d nginx start 99 1 2 3 4 5 6
#99是順序,你可以看看其他啟動項的順序,然後把nginx放後面就行了

[火星人 ] Ubuntu 7.10+ruby+rails+mongrel+nginx 架設簡易說明,有別於7.04已經有429次圍觀

http://coctec.com/docs/linux/show-post-181431.html