鶏口牛後な日々

魔法使い(なんでも作れるエンジニア)を目指してます。ブログは発散中

AWSでWebサーバ/mysql立ててLaravelで作ったAPI公開までにぶち当たったこととその時に調べたこと

リージョンって何基準で選ぶの?

  • AZによってレイテンシー(遅延)が異なるらしい
  • AZによって価格が異なる。東京だとレイテンシーは少ないが、価格が高い、など。 [参考]

AWSソリューションアーキテクトへの道 -AmazonEC2のポイントまとめ-

セキュリティグループってなんだ?

セキュリティ - Amazon Virtual Private Cloud

要はファイヤウォールのことのようです。 (すみません、適当な理解ですが)

最初設定するときは特にIPアドレス制限などはかけず、apacheの設定とかで必要になった時に徐々につけていく、というように書いていた記事がありました。 セキュリティ面で重要そうではあるのでhttp://kajuhome.com/patio_thread/1009.shtml、もうちょっとちゃんと理解して使いこなしていきたいです。(WIP!)

sshした先で、yumを使おうとするとエラーが出る

Failed to set locale, defaulting to C こちらが出る。 さらに、メッセージも、 ?????????? みたいな部分が含まれたりして、何か明らかに言語とかがおかしそう。

これについては、以下のページの通りに対応したところ、何度か元には戻っているのですが、毎回一応同じように対応すれば治ります。

# LC_ALL=C
# export LC_ALL
# yum update

とします。こうすると、英語がちゃんと ??????? だったところに表示されるようになります。 yumで複数の操作をする場合は、入れておくのが良さそうです。

yumのFailedメッセージについて

(多分恒久的に設定を有効にする方法があるはずだけど、まだわからない。。。localeを設定しておくファイルとかがどこかにある?)

yumphpの7.1をバージョン指定できない

(前提として、AmazonLinuxのAMIを使いました。)

よーし、PHPインストールするぞー! となった時、

yum install php

でいいんだっけ? と思ったら、バージョン指定する必要があった。(開発環境に合わせたバージョンを指定する必要があったため)

こちらの方が、綺麗にまとめてくださっていたのをまず参照しました。

Amazon Linux に php7.1 をインストール | // sakura note

さらに、OSがCentOSで違うのですが、初心者にはコマンドがいちいち理解できていなかったので、こちらのサイトで丁寧に説明してくださっていたのを読みながら、上の方のコマンドを理解していきました。

「yum install epel-release」や「--enablerepo=remi」の意味,本当に理解して使ってますか? - akamist blog

タイトルが難解なので、エラーの解決方法を探しているときにたまたま見つけたのですが、PHP7.1をインストールする方法を懇切丁寧に、ちゃんと理解できるように説明してくださってます。(ただしCentOS

その途中、流れの通りやっていたのに、epelが使えない! ということで、詰まってしまいました。

これについては、公式のこちらのページを見て、それぞれのOSに依存したコマンドを打って、epelを有効化しました。

Amazon EC2 での EPEL の有効化

さらに、Amazon Linuxだからか、amzn2-core というrepoがかなり強力に主張してくるようでしたので、--enablerepo=remi-php71 --disablerepo=amzn2-core としなければ、php7.1になってくれませんでした!

これでやっとこさPHPインストール! 結構これだけで時間かけてしまったw

PHPだけじゃなくて、Laravelをインストールするために必要なphpのモジュールがインストールできない!

長くなり別記事で書いたので、リンクはります。

上でphp71というモジュールをインストールしましたが、Laravelインストールするためには、phpの関連モジュールというのをいくつも入れないといけないということがわかりました。 この時に、依存関係のあるモジュールを色々と入れないとインストールがうまく進まず、単純なことなのですが、かなり苦しみました。 特に、エラーメッセージで出てくる、「必要なモジュール」のスペリングそのままではググっても出てこないし、repoの中で検索してもないということで詰まりました。 C言語?などに詳しい人ならば、読み替えて別のスペリングのモジュールをスムーズにインストールできるらしいのですが・・・。最後は人に聞きました。

その顛末をまとめたのが以下になります。 tacosvilledge.hatenablog.com

Laravelのインストールのためのcomposerでエラー

別記事で書いたので、貼ります。 vendorフォルダが生成できない! とでました。結果は、書き込み権限がなかったことが原因でした。

tacosvilledge.hatenablog.com

php artisan migrate ができない①

[PDOException]: Could not Find Driver

これが出ちゃいました。 結論としては、 php-mysql などの必要なモジュールがなかった、ということなのですが、インストールするときにバージョンやrepoを合わせて入れるのがコツのようでした。 詳しくは、以下記事で。

tacosvilledge.hatenablog.com

php artisan migrateができない②

上記対応で、driverは入れられたので、mysqlが動作するようにはなったのだが、次はSQLのエラーこーどがついたエラーが出るようになったしまった。

なんとなく、 utf8mb4 とか、 collation とかいう文言がエラーに入っているあたりからして、文字コードや称号順序(collation)の設定がおかしいっぽかった。 さらに、updated_at とか、 created_at とかの、timestampをdefaultで入れて欲しいカラムの名前もエラーコードに上がっていた。

いずれも、MySQLの設定を、設定ファイル /etc/my.cnf でちゃんとやってあげる必要があったようだ。 (これは、忘れがちなので、今後環境構築をする際に、よく覚えていないといけないと思った)

実際のmy.cnfに加えた設定は以下に書いた。 これで、無事 php artisan migrate が通って、データベースが作成されるまで行き着くことができた。 tacosvilledge.hatenablog.com