忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

CentOS7 on AWS httpサーバ構築ではまったこと

環境

サーバ

AWSVPC上に構築

EC2インスタンス概要

サーバソフト

作業クライアント

OS X 10.10.5

やったこと

詳しくは書かないが、一応メモとして

  • apache実行ユーザの作成
  • 不要なサービスの停止
  • パッケージの最新化
  • cronによるmydnsへIPの通知
  • httpdのインストール
  • httpdの設定
    • httpd.confを弄る
    • バーチャルホストの設定
  • ディレクトリのオーナー・アクセス権限変更
  • SELinuxの無効化

はまったこと

1. SSHで接続できない?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED」というワーニングが出る。

設定ミスってEC2作り直したんだけど、そのせいで、なりすましだと勘違いされてしまったっぽい。

なんで、SSHの既知のホスト情報を一旦消すと良いみたい。

SSH接続で WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! って言われて接続を拒否られるとき(コメント)

過去の投稿にもありますが、ssh-keygen -R で消せます。

$ ssh-keygen -R hoge.example.com

これで解決かと思ったんですが。。。

$ ssh -i key.pem ec2-user@hoge.example.com
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

次は認証エラーで繋げず。。。

ググってもなかなか原因が分からず、途方にくれているところ、たまたまAWSのコンソールを弄ってたら

f:id:mktktmr:20160222003141p:plain

。。。あっ

AMIがRHEL7の場合、初期ユーザが「ec2-user」だったので、CentOS7も同じだろうと思っていたら違いました。

CentOS7の場合は「centos」でした。

見つけたから良かったけど、これは分かりにくい。。。

2. ネットワークコマンドがない?

サーバの疎通を確認するためにdigやnslookupを叩きたいが、デフォルトでは入っていなかった。

$ dig
-bash: dig: command not found
$ nslookup
-bash: nslookup: command not found

で、yumでインストールを試みるが。。。

# dig
$ yum install dig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
No package dig available.
Error: Nothing to do
# nslookup
$ yum install nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
No package nslookup available.
Error: Nothing to do

ない。

と思ったら、digやnslookupはbind-utilsパッケージにいるらしい

digも、hostも、nslookupも入ってない - Snufkinski Memo

CentOS 6をminimalインストールすると、デフォルトではDNS名前解決テスト用のdig,nslookup,hostコマンドがインストールされていません。
CentOS 6にdig,nslookup,hostコマンドをインストールしたい場合、bind-utilsをインストールします。

yum -y install bind-utils

3. httpサーバにアクセスできない?

httpdも動いているし。。。

$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2016-02-21 15:43:49 UTC; 33min ago
#〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

IPとドメインの紐付けもちゃんとできてるし。。。

nslookup -type=A hoge.example.com
Server:     XXX.XXX.XXX.XXX
Address:    XXX.XXX.XXX.XXX#ZZ

Non-authoritative answer:
Name:   hoge.example.com
Address: YYY.YYY.YYY.YYY

firewalldまでいれて80ポートも開けたんだよ!

。。。

いやいや、AWSなんだからセキュリティグループ弄れよって話でした。

Linux インスタンスの Amazon EC2 セキュリティグループ - Amazon Elastic Compute Cloud

f:id:mktktmr:20160222011400p:plain

とりあえず、おおきくハマったのは以上の3点。

つまらないことで、時間を消費してしまった。。。