gem install rails でインストールして rails new → rails server すれば起動というのはもう省略しときます。
[sugimura@guest1 sample]$ rails server => Booting WEBrick => Rails 4.2.0 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2015-01-23 12:07:08] INFO WEBrick 1.3.1 [2015-01-23 12:07:08] INFO ruby 2.2.0 (2014-12-25) [x86_64-linux] [2015-01-23 12:07:08] INFO WEBrick::HTTPServer#start: pid=11897 port=3000
問題なのはfirewallですね。iptables の上に firewalld というのがかぶさっているようです。まずは firewalld が動いていることを確認。
[root@guest1 ~]# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Thu 2015-01-22 15:05:23 JST; 24h ago Main PID: 535 (firewalld) CGroup: /system.slice/firewalld.service └─535 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Jan 22 15:05:23 localhost.localdomain systemd[1]: Started firewalld - dynamic... Hint: Some lines were ellipsized, use -l to show in full. [root@guest1 ~]#
設定は firewall-cmd で行います。
[root@guest1 ~]# firewall-cmd --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
この services に追加していくみたいですね。定義ファイルに書いてから追加のようです。/usr/lib/firewalld/services/ 以下にXMLで作ります。ここでは rails-webrick.xml として 3000/tcp を定義するように作ってみました。
[root@guest1 ~]# cat /usr/lib/firewalld/services/rails-webrick.xml[root@guest1 ~]# Ruby on Rails (WEBrick) Ruby on Rails (WEBrick)
定義ファイルを書いたら、reload すると一覧に出てきます。
[root@guest1 ~]# firewall-cmd --reload success [root@guest1 ~]# firewall-cmd --get-services amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rails-webrick rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https [root@guest1 ~]#
有効にしてみます。
[root@guest1 ~]# firewall-cmd --add-service=rails-webrick --permanent success [root@guest1 ~]# firewall-cmd --reload success [root@guest1 ~]# firewall-cmd --list-service dhcpv6-client rails-webrick ssh [root@guest1 ~]#
iptables でも確認することができます。
[root@guest1 ~]# iptables -L -n Chain INPUT (policy ACCEPT) ... INPUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0 ... Chain INPUT_ZONES (1 references) target prot opt source destination IN_public all -- 0.0.0.0/0 0.0.0.0/0 [goto] IN_public all -- 0.0.0.0/0 0.0.0.0/0 [goto] ... Chain IN_public (2 references) target prot opt source destination IN_public_log all -- 0.0.0.0/0 0.0.0.0/0 IN_public_deny all -- 0.0.0.0/0 0.0.0.0/0 IN_public_allow all -- 0.0.0.0/0 0.0.0.0/0 ... Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000 ctstate NEW ...
ここまで設定できれば、ブラウザからアクセスしてみるといつものWEBrickの画面になることが確認できるかと思います。
(参考文献)
- http://www.server-world.info/query?os=CentOS_7&p=firewalld
- CentOS7のfirewalldをまじめに使うはじめの一歩(systemdも少し)