我使用额外的Apache2虚拟主机文件将RoR应用程序部署到我的服务器:
<VirtualHost *:80>
# ServerName ubuntu
DocumentRoot /var/www/myapp/current/public
PassengerEnabled off
ProxyPass / http://127.0.0.1:9051
ProxyPassReverse / http://127.0.0.1:9051
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect all requests to the maintenance page if present
RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
</IfModule>
</VirtualHost>
我使用Passenger启动它:
passenger start -a 127.0.0.1 -p 9051 -e production -d
这是一个Ubuntu服务器:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
港口正在倾听:
plee@ubuntu:~$ sudo lsof -i :9051
[sudo] password for plee:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1016 plee 4u IPv4 168135 0t0 TCP localhost:9051 (LISTEN)
nginx 1017 plee 4u IPv4 168135 0t0 TCP localhost:9051 (LISTEN)
nginx 1017 plee 5u IPv4 225556 0t0 TCP localhost:9051->localhost:44586 (ESTABLISHED)
ruby 1018 plee 5u IPv4 225555 0t0 TCP localhost:44586->localhost:9051 (ESTABLISHED)
问题是,我的应用只能通过http://localhost:9051
如果我尝试使用服务器的IP地址从另一台计算机连接:http://10.50.10.75:9051
Google Chrome让我:
Google Chrome could not connect to 10.50.10.75:9051
请帮帮我!
感谢。
答案 0 :(得分:2)
你太努力了。如果你在像你这样的服务器上,应用程序在各种端口上运行(并且它们可能是开发/暂存,对吧?),而你只想在端口:9501 访问此应用程序那么简单的方法就是放弃Apache。所有你需要的是乘客,你就这样开始,没有-a选项:
passenger start -p 9051 -e production -d
就是这样;你完成了。 (您可能希望确保您的防火墙(可能 ufw )没有阻止该端口,但如果您仍然遇到问题,这是唯一要测试的其他内容。)
最后一条建议:不要使用浏览器来测试这种事情。使用 curl 。例如,
curl --head http://x.y.z.a:9051
答案 1 :(得分:0)
如果你想访问它,你需要在另一个端口上访问它,你需要添加一个虚拟主机,你需要让apache听到该端口以及端口80
这是你需要的
#set the mod_passenger path **MAY BE DIFFERENT FOR YOU**
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3
PassengerRuby /usr/bin/ruby1.8
#Listen to port 9501
Listen 9501
#add virtual host enty for port 9501
<VirtualHost *:9501>
ServerName myservername
DocumentRoot /var/www/tut/public
<Directory /var/www/tut/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
注意:现在无需从命令行启动乘客,这应该已经完成了。
这对我有用。