部署 Ubuntu 14.04 云端部署后无法访问!

Holy · 2016年11月04日 · 最后由 xiaogui 回复于 2016年11月05日 · 3355 次阅读

最近在试用某云的一个小服务器,想搞下部署。入道不久,现在想把自己写的一个小demo放到远程服务器上跑起来。

本地:Ubuntu14.04(desktop) 服务端:ubuntu14.04(server)

现在已经把 ROR 环境 (rvm, ruby, mysql...) 和代码弄到服务器上了。

  • 1. 用的rsync同步的代码,
  • 2. 在不使用别的web服务器 (Nginx, Passenger, Thin...) 的情况下,可否直接进入App目录,通过rails s -b0.0.0.0 -p3000在云服务器上启动项目,然后在本地访问?
    • 可以的话需要怎么访问?比如 我本地是通过 http://localhost:3000/books访问的,访问服务端是http://114.115.116.5:3000/books这样吗?(需要加上项目名吗)
  • 3. 我是按照这个 "Ubuntu 14.04 上使用 Nginx Passenger 部署 Ruby on Rails" 走了一遍,这里有点疑问
    新建网站配置:  touch /etc/nginx/sites-enabled/example.com.conf # 这里配置文件名字随便写的
    编辑 /etc/nginx/sites-enabled/example.com.conf,写入以下内容:
    server {
        listen 80 default;                        # 端口没动
        server_name example.com;                  # 这里我写的是ip
        root /var/www/example.com/current/public; # 这里写的是项目的路径的public目录
        passenger_enabled on;
    }
    重启 nginx:  sudo service nginx restart
    完成: 在浏览器打开服务器的 IP 地址或域名,应该看到你的网站在运行。

本地访问没看到什么效果,一致是在连接中。配置有问题吗?

  • 4. iptables需要专门开启3000端口吗? (ufw是关闭的) 把 3000 端口加进去后,sudo iptables -L -n里面有ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000 这个。我用telnet 114.115.116.5 22有返回,但是 telnet 那个 3000 端口不通。
  • 5. 以上都是针对服务器端的操作,本地机需要怎么配合吗?
回 2

可以直接通过 rails s -b0.0.0.0 -p3000 把服务器上的程序运行,然后在本地通过 114.115.116.5:3000/books 访问 (之前本地环境下是通过 localhost:3000/books访问的) ,不过这种方式只适用于自己或者少数几个人用,不适用于广大用户,没有真正意义上的实用价值。我这里只是为了验证下之前的操作是否有误,以便进行下一步的操作。

回 4:

【请先确保能 ping 通服务器端的 ip,不能的话可以搜索下 ICMP 协议,确保服务器端有这个协议】
【端口开启的话,也需要在服务器端控制台进行相应设置 (我这里服务器端没有配置 iptables 端口,只是在控制台上添加了 TCP协议 -入方向-3000端口-0.0.0.0的协议,可能不同服务器控制台配置不太一样)】
【注意:上面 -p 的端口是可以自己指定的。我之前服务器上的项目跑不起来,折腾了两天,问了好多"很懂"的人,各种搜索、调端口、防火墙,最后问了客服,才知道是需要在所使用的云服务器上进行相应的配置】 2016-11-05 00:51:29

云服务器推荐 AWS,应该是大部分的原型。主机外还有一层防火墙,要配相应的安全策略。仅配置主机不够。

Holy 关闭了讨论。 11月12日 15:40
需要 登录 后方可回复, 如果你还没有账号请 注册新账号