成果物
ソースコード
準備
なぜこのようなことをしたのか
以前からLaravelやdockerを触っていたのですが、上手く扱えている気がしていませんでした。
それ以前にLinuxやCLIに慣れた方がいいのでは?と思い、Linuxを積極的に使うことにしました。
あとLinuxを触ると同時に、AWSの基本も理解しようと、デプロイ先はAWSにしました。
目的
以下の基本を理解し、CLI操作を慣れる。
- Linux
- Apache
- MariaDB
- PHP
- AWS
開発環境
- Ubuntu 20.04.4 LTS
- Apache 2.4.41
- MariaDB 10.3.34
- PHP 7.4.3
「犬・猫 どちら派掲示板」を作ろうと思った理由
大好きな犬と猫のことを、語り合える場を作りたかったから。
要件定義
頭の中のイメージをノートに書きます。
これがないと、何を作ればいいか全くわかりません。重要です。
各々ページの設計図
画面遷移図
ER図
書き出したイメージの図から、どういったデータベースが必要か書き出します。
投稿者と投稿記事のデータが保存できればいいので、以下のように作ります。
成果物の詳細
本番環境
- Amazon Linux 2
- Apache 2.4.52
- MariaDB 10.3.34
- PHP 7.4.28
AWSアーキテクチャ
Route53とApplicationLoadBalancerで、独自ドメインとSSL/TLSに対応させました。
投稿者と投稿記事のデータはRDSに保存しています。
毎日1回バックアップを取るようにし、1週間前までデータを復元できるようにしています。
作成したテーブル
members
カラム名 | データ型、オプション | 説明 |
---|---|---|
id | INT PRIMARY KEY AUTO_INCREMENT | 投稿者ID |
name | VARCHAR(30) | 名前 |
VARCHAR(50) UNIQUE | Eメールアドレス | |
password | VARCHAR(255) | パスワード |
animal | VARCHAR(10) | 犬派か?猫派か? |
posts
カラム名 | データ型、オプション | 説明 |
---|---|---|
id | INT PRIMARY KEY AUTO_INCREMENT | 投稿記事ID |
message | TEXT | 記事内容 |
created_by | INT FOREIGN KEY (created_by) REFERENCES members(id) | 投稿者ID(FK) |
created | DATETIME | 作成日時 |
image | VARCHAR(100) | 画像ファイル名 |
各々ページ紹介
TOP画面
会員登録画面
ログイン後、記事を投稿できます。
投稿者自身の記事のみ削除できます。
ページング
CSRF対策
まとめ
成果物をデプロイできた時には、当初の目的のLinuxのCLIに慣れるという目的は達成できました。
AWSを触り始めた時は、VPC?サブネットマスク??というネットワークの基礎もよくわかっていませんでしたが、今では理解できました。
今後はLaravelを使い、作業を効率化します。