LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

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

成果物

ソースコード

準備

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

以前から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を使い、作業を効率化します。

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
What you can do with signing up
1