僕の Apache 初入門(インストール)
おそらく初めて仕事をした時に Java で Struts のアプリを書いていたころから最終的には Apache/Tomcat で動いていたんだろうけど、(少しは調べたりしてたんだろうけど)、今までろくに勉強してこなかった Apache を今更入門することにした。(というか去年まで IIS の子だったというのもあるが)
環境
インストールなど
$ sudo yum -y install httpd ... Complete! $ sudo service httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ]
なんかいきなり怒られてる。以下に対処方法が書いてあった、が一端放置。
$ sudo chkconfig httpd on $ sudo chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
お決まりの自動起動を ON にする。0 から 6 の数値はランレベルと呼ばれているもので、3 が通常起動を表すらしい。よって、3 が on になっているので問題無い。
$ ps ax | grep httpd 2405 ? Ss 0:00 /usr/sbin/httpd 2407 ? S 0:00 /usr/sbin/httpd 2408 ? S 0:00 /usr/sbin/httpd 2409 ? S 0:00 /usr/sbin/httpd 2410 ? S 0:00 /usr/sbin/httpd 2411 ? S 0:00 /usr/sbin/httpd 2412 ? S 0:00 /usr/sbin/httpd 2413 ? S 0:00 /usr/sbin/httpd 2414 ? S 0:00 /usr/sbin/httpd 2429 pts/0 S+ 0:00 grep httpd
httpd のプロセスが動作してるのが分かる。
ps
のオプションの a
は「全てのプロセス」、x
は「他の端末に結び付けられているプロセスも表示」らしい。
待ち受けポートを調べる
lsof
が無いのでいれる。
$ which lsof /usr/bin/which: no lsof in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin) $ sudo yum -y install lsof .... Complete!
関係ないが、
lsof
を入れる時にたまたまあたったサイトで以下があったが、pgrep
で取得して/proc
内を探すの意味がさっぱり分からなかったが、調べてると/proc
というディレクトリがあって、確かにそこにはプロセス毎のファイルやディレクトリがあってビックリ。
- lsofの使い方 - プロセスが使用中のファイルを調べる - うまいぼうblog
- /procによるLinuxチューニング [前編]- @IT
$ sudo lsof -i -n -P | grep httpd httpd 2405 root 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2407 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2408 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2409 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2410 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2411 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2412 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2413 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN) httpd 2414 apache 4u IPv6 14312 0t0 TCP *:80 (LISTEN)
確かに 80 で待ち受けていることが分かる。
IPv6 のみの待受にみえるが、実際は IPv4 互換であるらしい。 現状 ssh の 443 で待ち受けていないのは、その設定をしていないから。
iptables の設定
正直何度見てもよく分からない。AWS の INBOUND, OUTBOUND が INPUT, OUTPUT みたいなものだろうか。
とりあえずここまでやると、403 ページまでは見れるようになる。(今回は http://192.168.33.13/)
telnet でおしゃべり
% telnet 192.168.33.13 80 Trying 192.168.33.13... Connected to 192.168.33.13. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 403 Forbidden Date: Mon, 10 Nov 2014 06:00:28 GMT Server: Apache/2.2.15 (CentOS) Accept-Ranges: bytes Content-Length: 4954 Connection: close Content-Type: text/html; charset=UTF-8
しゃべれた!
ついでに curl
% curl http://192.168.33.13/ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <head> ... % curl -I http://192.168.33.13/ HTTP/1.1 403 Forbidden Date: Mon, 10 Nov 2014 10:46:28 GMT Server: Apache/2.2.15 (CentOS) Accept-Ranges: bytes Content-Length: 4954 Connection: close Content-Type: text/html; charset=UTF-8