欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
主題:Lighttpd和RoR安裝配置的疑難解答
之前寫(xiě)過(guò)一篇在Linux平臺上安裝和配置Ruby on Rails詳解,可能是有點(diǎn)高估了Linux的普及和應用程度,無(wú)數安裝和配置的問(wèn)題都以各種方式向我涌過(guò)來(lái)。這里集中的提供一下疑難解答:

一、到底我應該用Lighttpd,還是Nginx/Mongrel?


現在Nginx/Mongrel的部署方式越來(lái)越受歡迎了,很多人置疑Lighttpd/FastCGI,并且現在也涌現了一些比Mongrel性能更好的例如Thin,ebb等ruby應用服務(wù)器,那Lighttpd/FastCGI真的過(guò)時(shí)了嗎?

大家有興趣可以看一下我這篇文章:RoR部署方案深度剖析,Lighttpd提供了很多其他Web服務(wù)器不具備的優(yōu)勢,可以最大化FastCGI的性能?,F在Mongrel/Thin/ebb都利用了一些多線(xiàn)程或者事件IO機制來(lái)提供并發(fā)性能,這是FastCGI所不具備的,但遺憾的是Rails框架是單線(xiàn)程的,最終還是必須單進(jìn)程單線(xiàn)程來(lái)執行Rails請求,所以這些并發(fā)優(yōu)勢無(wú)用武之地。但一些其他Ruby的Web框架例如camping,weavers已經(jīng)開(kāi)始支持ruby多線(xiàn)程,提供了比Rails好得多的性能,mongrel/ebb只有在這些web框架上面才能發(fā)揮其性能優(yōu)勢。

所以只要你還是用Rails框架,Lighttpd/FastCGI就是性能最好的部署方案。

二、ubuntu Linux安裝ruby碰到的缺少readline,zlib庫的問(wèn)題?

有些人的ubuntu安裝的庫不全,比方說(shuō)缺少readline庫,缺少zlib庫,可能會(huì )導致自己手工編譯安裝ruby的失敗,那么就用apt-get先把庫安裝好。

三、Lighttpd安裝遇到的缺少pcre庫的問(wèn)題?

RHEL/CentOS用戶(hù)可能要用yum安裝一下pcre/pcre-devel這兩個(gè)庫,ubuntu用戶(hù)用apt-get安裝一下,Linux熟手也可以自己下載源代碼編譯安裝,Pcre是Perl兼容的正則表達式庫,Lighttpd的Rewrite功能需要它。

四、Lighttpd配置過(guò)程當中遇到的種種問(wèn)題?


1、我用的是ubuntu,你說(shuō)的控制腳本rc.lighttpd我跑不了,執行就會(huì )報錯

如果你的Linux是ubuntu,那么需要自己創(chuàng )建啟動(dòng)腳本,lighttpd官方wiki上面已經(jīng)給出來(lái)該腳本,地址在:
http://redmine.lighttpd.net/wiki/1/ScriptsUbuntu

rc.lighttpd這個(gè)腳本是針對SuSE Linux寫(xiě)的,此外還提供了一個(gè)rc.lighttpd.redhat是針對RedHat Linux寫(xiě)的,你自己寫(xiě)一個(gè)控制腳本,也不過(guò)是舉手之勞:

Java代碼
  1. #!/bin/sh   
  2.   
  3. case "$1" in    
  4.   start)            
  5.     /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf > /dev/null 2>&1  
  6.     ;;   
  7.   stop)    
  8.     killall lighttpd   
  9.     ;;   
  10.   restart)    
  11.    $0 stop   
  12.    sleep 1  
  13.    $0 start    
  14.    ;;   
  15.   *)    
  16.   echo "Usage: lighttpd.sh {start|stop|restart}"    
  17.   ;;    
  18. esac   
  19.   
  20. exit 0   


創(chuàng )建一個(gè)shell腳本,內容如上,chmod u+x lighttpd.sh,這個(gè)腳本就可以用來(lái)啟動(dòng)關(guān)閉和重起lighttpd了

2、啟動(dòng)Lighttpd的時(shí)候報錯,說(shuō)XXX目錄找不到

Lighttpd啟動(dòng)之后默認情況下會(huì )寫(xiě)access log,error log,如果你啟動(dòng)了壓縮過(guò)程,還會(huì )把文件壓縮過(guò)的版本放在壓縮目錄下面,所以檢查一下你的lighttpd.conf配置文件,是不是這些目錄還沒(méi)有,或者路徑不對。

3、啟動(dòng)lighttpd可以訪(fǎng)問(wèn),但如果配置了Rails,就無(wú)法啟動(dòng)


如果無(wú)法啟動(dòng),要學(xué)會(huì )自己看Lighttpd的error log和Rails項目的log目錄下面的fastcgi crash log,在這兩個(gè)log文件當中可以找到出錯原因。其中一種常犯的錯誤是:Rails項目在Windows上面創(chuàng )建和開(kāi)發(fā),最后部署到Linux Server上面。這種情況下dispatch.fcgi這個(gè)腳本的ruby解析器路徑是 #!c:/ruby/bin/ruby.exe 這個(gè)路徑在Linux上面肯定是錯誤的,你可以改成#!/usr/bin/env ruby,或者干脆在Linux上面創(chuàng )建該Rails項目。此外在windows上面創(chuàng )建的Rails項目,dispatch.fcgi沒(méi)有可執行權限,這也需要你在Linux上面先賦予可執行權限才行。你可以嘗試著(zhù)手工運行該腳本cd public && ./dispatch.fcgi,看看是否可以運行。

4、啟動(dòng)lighttpd報錯,說(shuō)找不到socket路徑

我在前面安裝文檔中給出來(lái)的配置內容如下:

Java代碼
  1. $HTTP["host"] == "www.xxx.com" {   
  2.  server.document-root = "/yourrails/public"  
  3.  server.error-handler-404 = "/dispatch.fcgi"  
  4.  fastcgi.server = (".fcgi" =>   
  5.     ("localhost" =>   
  6.       ("min-procs" => 10,   
  7.        "max-procs" => 10,   
  8.        "socket" => "/tmp/lighttpd/socket/rails.socket",   
  9.        "bin-path" => "/yourrails/public/dispatch.fcgi",   
  10.        "bin-environment" => ("RAILS_ENV" => "production")   
  11.       )   
  12.     )   
  13.  )   
  14. }  


就算照抄你要改改路徑吧?這個(gè)demo當中的socket路徑是/tmp/lighttpd/socket/rails.socket,那你要照抄,先檢查一下有沒(méi)有/tmp/lighttpd/sock目錄總是應該的吧?其實(shí)用啥路徑都無(wú)妨,關(guān)鍵就是別照抄,領(lǐng)會(huì )原理,根據自己的環(huán)境做相應的調整。

5、lighttpd可以啟動(dòng),但是訪(fǎng)問(wèn)Rails應用出現404錯誤,找不到頁(yè)面

在lighttpd的虛擬域配置里面有一項
Java代碼
  1. server.error-handler-404 = "/dispatch.fcgi"  

意思是當lighttpd找不到URL對應的硬盤(pán)文件,就會(huì )調用Rails的dispatch.fcgi去處理該URL請求,這也是lighttpd訪(fǎng)問(wèn)Rails的主要方式,其性能比URL轉發(fā)要快。如果你在配置文件里面忽略了這一行,lighttpd就會(huì )直接返回404錯誤,而不是交給Rails處理。


6、重起lighttpd以后,fastcgi進(jìn)程不關(guān)閉,導致多次重起lighttpd之后,fastcgi進(jìn)程堆積越來(lái)越多?

正常情況下,關(guān)閉Lighttpd以后,dispatch進(jìn)程就會(huì )銷(xiāo)毀,但是在dispatch進(jìn)程處理請求的時(shí)候關(guān)閉lighttpd,dispatch進(jìn)程并不會(huì )馬上關(guān)閉,而是處理完畢當前請求,才會(huì )關(guān)閉掉。一些極端情況下,可能會(huì )導致dispatch進(jìn)程一直不關(guān)閉,dispatch進(jìn)程就會(huì )越來(lái)越多。解決辦法很簡(jiǎn)單 killall -9 dispatch.fcgi,只管殺進(jìn)程就好了。

7、我的lighttpd和FastCGI部署在不同的服務(wù)器,怎么配置呢?

這種情況下,Lighttpd只是連接遠程服務(wù)器的TCP端口,而不負責啟動(dòng)dispatch.fcgi進(jìn)程,因此需要自己寫(xiě)腳本啟動(dòng)關(guān)閉dispatch.fcgi進(jìn)程。lighttpd提供了一個(gè)spawn-fcgi的程序,可以用來(lái)啟動(dòng)dispatch.fcgi進(jìn)程,監聽(tīng)TCP端口,你可以自己寫(xiě)一個(gè)shell腳本來(lái)完成這個(gè)工作。另外spawn-fcgi還可以啟動(dòng)dispatch.fcgi進(jìn)程,創(chuàng )建本機的unix socket端口,和本機lighttpd通訊,例如:

例如:
Java代碼
  1. #!/bin/sh   
  2.   
  3. DISPATCH_PATH=/yourrailsapp/public/dispatch.fcgi   
  4. SOCKET_PATH=/tmp/lighttpd/socket   
  5. RAILS_ENV=production   
  6. export RAILS_ENV   
  7.   
  8. case "$1" in   
  9.   
  10.   start)   
  11.     for num in 0 1 2 3 4 5 6 7 8 9  
  12.     do  
  13.      /usr/local/lighttpd/bin/spawn-fcgi -f $DISPATCH_PATH -s $SOCKET_PATH/rails.socket-$num   
  14.     done   
  15.     ;;   
  16.   
  17.   stop)   
  18.     killall -9 dispatch.fcgi   
  19.     ;;   
  20.   
  21.   restart)   
  22.     $0 stop   
  23.     $0 start   
  24.     ;;   
  25.      
  26.   *)    
  27.     echo "Usage: dispatch.sh {start|stop|restart}"  
  28.     ;;   
  29.      
  30. esac   
  31.   
  32. exit 0  


執行 ./dispatch.sh start 將啟動(dòng)10個(gè)dispatch.fcgi進(jìn)程,在/tmp/lighttpd/sock目錄下面創(chuàng )建了10個(gè)unix socket文件,然后配置lighttpd去連接這10個(gè)socket文件:

Java代碼
  1. $HTTP["host"] =~ "www.xxx.com$" {   
  2.   server.document-root = "/yourrails/public"  
  3.   server.error-handler-404 = "/dispatch.fcgi"  
  4.   fastcgi.server = (".fcgi" =>   
  5.     (   
  6.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-0"),   
  7.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-1"),   
  8.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-2"),   
  9.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-3"),   
  10.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-4"),   
  11.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-5"),   
  12.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-6"),   
  13.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-7"),   
  14.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-8"),   
  15.       ("socket"=>"/tmp/lighttpd/socket/rails.socket-9")        
  16.     )   
  17.   )   
  18. }  


這樣做的好處是,每次重新部署應用,就不需要重起lighttpd了,只需要執行自己的dispatch.sh來(lái)重起dispatch.fcgi進(jìn)程就可以了。同時(shí)也可以很好的解決上一個(gè)fastcgi進(jìn)程堆積的問(wèn)題。

如果遠程部署,配置方式是一樣的,就是lighttp連接的端口改為:

Java代碼
  1. ("host"=>"192.168.0.1, "port"=>3001),   
  2. ("host"=>"192.168.0.1, "port"=>3002),   
  3. ......  


dispatch.sh創(chuàng )建dispatch.fcgi進(jìn)程的時(shí)候,使用 -t 參數創(chuàng )建tcp端口,而不是 -s 創(chuàng )建unix socket文件即可。


8、我的rails應用不是在根目錄下面,是在子目錄下面怎么配置呢?

例如你的rails應用必須使用某個(gè)網(wǎng)站的子目錄,如:http://www.xxx.com/myapp,那么只需要在lighttpd增加一項目錄別名映射就可以了,例如:

Ruby代碼
  1. server.document-root = "/yourwebsite/myapp/public"  
  2. alias.url = ("/myapp" => "/yourwebsite/myapp/public")   
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
HowTo configure Apache to run Redmine
在 Ubuntu 5.04(FreeBSD 5.5)上安裝 Ruby, Rails, Lighttpd, MySQL
在Linux平臺上安裝和配置Ruby on Rails詳解
FastCGI與spawn-fcg簡(jiǎn)介
windows下的rails2.02環(huán)境搭建指南 - rails - Ruby - Jav...
Looking For Optimal Solution: Benchmark Resul...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久