LoginSignup
1
1

More than 1 year has passed since last update.

Laravel?docker?漢ならPHPのみっしょ!!

Last updated at Posted at 2022-03-20

成果物

ソースコード

準備

なぜこのようなことをしたのか

以前から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

「犬・猫 どちら派掲示板」を作ろうと思った理由

大好きな犬と猫のことを、語り合える場を作りたかったから。

要件定義

頭の中のイメージをノートに書きます。
これがないと、何を作ればいいか全くわかりません。重要です。

各々ページの設計図

TOP画面の設計図 ログイン画面、会員登録画面の設計図

画面遷移図

画面遷移図

ER図

書き出したイメージの図から、どういったデータベースが必要か書き出します。
投稿者と投稿記事のデータが保存できればいいので、以下のように作ります。
犬猫ER図.jpg

成果物の詳細

本番環境

  • Amazon Linux 2
  • Apache 2.4.52
  • MariaDB 10.3.34
  • PHP 7.4.28

AWSアーキテクチャ

Route53とApplicationLoadBalancerで、独自ドメインとSSL/TLSに対応させました。
投稿者と投稿記事のデータはRDSに保存しています。
毎日1回バックアップを取るようにし、1週間前までデータを復元できるようにしています。
AWSアーキテクチャ.jpg

作成したテーブル

members

カラム名 データ型、オプション 説明
id INT PRIMARY KEY AUTO_INCREMENT 投稿者ID
name VARCHAR(30) 名前
email 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画面

TOP画面

会員登録画面

会員登録画面

バリデーションで、誤入力を防ぎます。
バリデーション

ログイン後、記事を投稿できます。

ログイン

↓ログイン
記事の投稿

投稿者自身の記事のみ削除できます。

記事の削除前

↓「削除」ボタンを押す。

ページング

2ページ目

CSRF対策

なりすましの送信を防ぎます。
CSRF対策

まとめ

成果物をデプロイできた時には、当初の目的のLinuxのCLIに慣れるという目的は達成できました。
AWSを触り始めた時は、VPC?サブネットマスク??というネットワークの基礎もよくわかっていませんでしたが、今では理解できました。
今後はLaravelを使い、作業を効率化します。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1