CentOS7 on AWS httpサーバ構築ではまったこと
環境
サーバ
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のコンソールを弄ってたら
。。。あっ
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
とりあえず、おおきくハマったのは以上の3点。
つまらないことで、時間を消費してしまった。。。