Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何配置nginx和passenger with rails应用程序_Ruby On Rails_Ruby_Nginx_Ruby On Rails 3.1_Passenger - Fatal编程技术网

Ruby on rails 如何配置nginx和passenger with rails应用程序

Ruby on rails 如何配置nginx和passenger with rails应用程序,ruby-on-rails,ruby,nginx,ruby-on-rails-3.1,passenger,Ruby On Rails,Ruby,Nginx,Ruby On Rails 3.1,Passenger,我遵循了这个教程 我已经在我的虚拟机上安装了带有nginx的passenger,并尝试访问该站点 在根目录中,我将路径指定为root/var/rails_apps/public/这让我欢迎来到Nginx页面 server{ listen 80; server_name localhost; root /var/rails_apps/public/;

我遵循了这个教程

我已经在我的虚拟机上安装了带有nginx的passenger,并尝试访问该站点

在根目录中,我将路径指定为
root/var/rails_apps/public/这让我欢迎来到Nginx页面

server{
                    listen 80;
                    server_name localhost;
                    root /var/rails_apps/public/;
                    passenger_enabled on;

            }
因为我的站点的根页面位于
/var/rails\u apps/app/views/home/index.html.erb
因此,我将路径更改为
root/var/rails_apps/app/views/home/

server{
                listen 80;
                server_name localhost;
                root /var/rails_apps/app/views/home/;
                passenger_enabled on;

        }
但对于这两个root用户,我都得到了
欢迎使用Nginx
页面

我的请求URL如下->/#{IpAddressOfVirtualMachine}:80/

当我为监听指定了不同的端口时,例如1027,它会给我错误
无法连接

请解释如何使用nginx和passenger运行我的站点,是否需要任何其他设置?

根目录更改回
公共文件夹,并打开
URL
,不带端口号

您需要将nginx配置中的服务器名称更改为连接到的同一IP,是的,将根目录保存在公共文件夹中,rails就是这样工作的

server_name 123.456.789.000; # replace with your IP

而不是本地主机,然后重新启动nginx。

我可以运行我的站点,只是做了以下更改

Install nginx init script

nginx init script by Jason Giedymin helps us to administer web server easily.

$ cd
$ git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git
$ sudo mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx
$ sudo chown root:root /etc/init.d/nginx
之后,
railsg控制器页面主页

并将root指向公共文件夹
root/var/rails\u apps/helloworld/public

然后通过http
{IpAddressOfVirtualMachine}:1027/pages/home访问我的虚拟机

端口80
正忙,所以我使用了不同的端口,即
端口1027

And it works !!!
你可以参考这个博客来了解更多信息

但是在我的公用文件夹中没有文件..那么它能工作吗?实际上我已经在虚拟机上安装了nginx passenger。在我试图访问该站点的本地计算机上,这就是为什么我访问的站点的虚拟机ip地址设置为public。我仍然收到欢迎页面。你重新启动了nginx吗?是的,我重新启动了服务器。我收到了页面
my_app/public/index.html
。但是我想要一个默认页面,它通常是
home/index
(HomeController,index action),并且在
routes.rb
中指定。那么
/var/rails\u apps/helloworld/public
向您展示了什么-public/index.html页面?其他动态页面-*.html.erb如何?rails应用程序默认具有公用文件夹,因此需要具有index.html,并且其他动态页面将位于rails视图文件夹中的相同位置,例如`views/users/dynamic_pages.html.erb。它不必具有public/index.html,因为如果具有,则将显示它而不是“root”来自“routes.rb”的页面。在使用nginx的情况下,如何让它显示应用程序/视图中的动态页面?然后删除该索引文件,您可以将公用文件夹保持为空,并在您可能已指定根url的路由中显示。然后它将把根url作为您的站点主页。但是
root/var/rails\u apps/helloworld/public这将保持原样。
server\u name
代表什么?我可以把我的公共DNS
http://ec2-11-222-123-11.ap-southeast-2.compute.amazonaws.com/
在那里?从技术上讲,它将是http头中发送的字符串,名为
主机
,简单的解释是它是您将在浏览器中键入的内容。因此它可以是类似于“gjkgdgjk”的任何内容,并且仍然可以工作?是的,它可以是任何内容。例如,example.com。你可以在这里输入你想要的站点名称。dns服务器仍然需要能够解析它,例如,如果你选择
facebook.com
,你不会从facebook窃取流量,因为dns服务器不会向你的服务器发送任何facebook流量