2015-02-09 248 views
0

我正在Bluehost上預裝Apache,通過CentOS VPS部署Web2py應用程序。部署Web2py應用程序

我已經手動完成了在/home/username中安裝Web2py,Python和一些附加軟件的過程。當我在/home/username/web2py中運行以下命令以通過端口8000 python web2py.py --ip xxx.xx.xx.xx --port=8000上的Rocket啓動Web2py時,I和其他人可以成功訪問http://xxx.xx.xx.xx/8000http://mywebsite.com/8000以查看Web2py的歡迎屏幕(最終我的應用程序)。

然而,當我嘗試運行python web2py.py --ip xxx.xx.xx.xx --port=80,這樣我就可以在http://xxx.xx.xx.xx/http://mywebsite.com/訪問應用程序時,我收到以下錯誤:

ERROR:Rocket.Errors.Port80:Socket in use by other process and it won't share 

Apache是​​在端口80上已經運行的最後,我d喜歡用戶訪問http://xxx.xx.xx.xx/http://mywebsite.com/的應用程序。我如何在當前配置中實現這一點,而無需使用此處描述的一步生產部署:http://web2py.com/book/default/chapter/13#Apache-setup

我感興趣的是如何做到這一點在每個以下三種方式:

1)使用預安裝的Apache服務器已經在端口80

2)使用的web2py的內置在端口80上的Rocket服務器上,從而調整系統,以便預先安裝的Apache服務器被忽略並打開端口80。

3)使用另一個端口內置火箭服務器,說8000,但以這樣的方式,用戶仍然可以通過訪問http://xxx.xx.xx.xx/http://mywebsite.com/訪問網站和它的所有功能,這樣做。這意味着他們不需要將8000附加到url(如http://xxx.xx.xx.xx/8000http://mywebsite.com/8000)。

謝謝。

回答

2

端口只能由一個應用程序使用。因此,您不能在同一端口上運行Apache和web2py服務器(例如端口80)。

從0到1024的所有端口都是特權端口。這意味着只有超級用戶才能將應用程序分配給端口。通常,這也可以產生賽義德錯誤信息,該端口在使用中(即使沒有應用程序偵聽的端口)

案例1和3 - 使用Apache的服務器,但不mod_wsgi的:

我假設你不想在你的apache上使用modwsgi或任何wsgi。比你要代理你mod_proxy應用:

<VirtualHost *:80> 
    Alias//users/www-data/web2py/applications 
    ### serve static files directly 
    <LocationMatch "^/static/.*"> 
    Order Allow, Deny 
    Allow from all 
    </LocationMatch> 
    ### proxy all the other requests 
    <Location "/"> 
    Order deny,allow 
    Allow from all 
    ProxyRequests off 
    ProxyPass http://localhost:8000/ 
    ProxyPassReverse http://localhost:8000/ 
    ProxyHTMLURLMap http://127.0.0.1:8000//
    </Location> 

。必須要調整位置,以您的實際設置和web2py的服務器必須運行。

案例2 - 不使用Apache:

在這種情況下,必須停止Apache服務器並啓動你有特權帳戶的應用程序(如根):

sudo python web2py.py --ip xxx.xx.xx.xx --port=80

希望這有助於;)