Dockerで開発したLaravelの本番環境移行 覚書
構成について
- amazon EC2
- amazon RDS
nginxをリバースプロジェクトとして使い、リクエストを受けそれをphp-fpmに渡してphpを実行する。
リバースプロキシとは?
外部のネットワークから内部へのネットワークの通信を中継する仕組み。
リバースプロキシを設定することで、セキュリティや負荷分散なと様々なメリットがサーバーサイドに期待できるらしい。
参考
https://wa3.i-3-i.info/word1755.html
1.EC2インスタンスを作成し、ssh接続を行う。(EC2のパブリックIPv4アドレスが必要。)
2.パッケージを最新バージョンに更新する。
$ sudo yum update
3.nginxをインストールする。
→普通の環境なら(また今度試してみる)
$ sudo yum install -y nginx
→今回はEC2なので、インストールの前にnginxを有効にする必要がある。
$ sudo amazon-linux-extras enabled nginx1
このコマンドにより、nginxがavailableだったものをenabledに変更。
$ sudo yum install nginx -y
-yコマンドによって、途中の[Yes/No]をスキップ可能。
コマンド実行後
`$ sudo systemctl status nginx
これで確認可能。
4.phpとphp-fpm、必要パッケージ群をインストールする。
$ sudo amazon-linux-extras install -y php8.0
$ sudo yum install php-mbstring
$ sudo yum install php-dom
phpの後ろはバージョンを指定。今回は8.0とする。
このコマンドで同時にphp-fpmもインストールされる。
5.composer をインストールする。
https://getcomposer.org/download/公式サイト参照
下記手順でやれば可能。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
PATHが通っているところに移動させることで、composerコマンドをどこからでも使用可能にしている。
6.php-fpmの設定
$ sudo vim /etc/php-fpm.d/www.conf
設定ファイルを開く。
userとgroupが初期設定ではapacheになっているのをnginxに変更。またlisten.関係も変更。
user = nginx group = nginx listen.owner = nginx listen.group = nginx
また左端の";"がコメントアウトなので、消して変更した値を反映する。
7.nginxを設定する
laravelの公式サイト参照
https://readouble.com/laravel/8.x/ja/deployment.html
上記の設定例をコピペして設定ファイルを作成
sudo vim /etc/nginx/conf.d/laravel.conf
設定箇所
server { listen 80 default_server; listen [::]:80; server_name example.com; root /var/www/laravelproject/public; fastcgi_pass unix:/run/php-fpm/www.sock;
8.設定したフォルダ内にてlaravelprojectをclone
ここで、laravelprojectを配置するフォルダの権限を変更する。
$ sudo chown ec2-user:ec2-user /var/www
ユーザー名とグループ名を指定可能。のちにclone
さらに、laravelの構成ディレクトリのstorageに関して、書き込み許可を与える必要がある。
sudo chmod -R 777 storage/
vendorに必要なライブラリをインストールする
composer install
9.システムを起動する。
sudo systemctl start nginx
sudo systemctl start php-fpm
この後はいつも通りlaravelの.env修正
Laravelでのポートフォリオ作成4~Middlewareについて~
Laravelでログイン認証を作るのに、Middlewareが便利だということ学んだので覚書。
参考資料
・Middlewareとは?
コントローラーの処理の前後に割り込みさせたい処理を追加することができる。すべてのコントローラーに適応させたり、特定のコントローラーに適応させたり、ミドルウェアをグループ化し、特定のルートに一括処理をさせるような処理をさせることができる。
・今回役に立った点
ログインをした後、セッションがタイムアウトした場合にページ遷移や更新を行った際にログインフォームにリダイレクトする処理をさせるのに役立った。
またこれからログインにおいて管理者と一般ユーザーの振り分けも実装する予定なのでそこらへんでも使えそう。
Laravelでのポートフォリオ作成3
本番環境についてのメモ
レンタルサーバーはConoha VPS
1.サーバーを作る。
この際にSSH keyを生成しないとなぜかログインできなかった。謎
2.rootでSSHログインをして、一般ユーザーを作成し、sudoグループに追加
#useraddではなくadduser でないとhomeディレクトリが作成されないらしい adduser username #-aGを指定することで、上書きではなく追加となる usermod -aG sudo username
3.teratermにてSSH鍵生成を行い、SCPにてサーバーへ公開鍵を送る。
※このとき、rootフォルダ直下にて送られる
4.一般ユーザーにてログインを行い、一般ユーザーのHomeディレクトリに.sshフォルダを作成する。
5..sshフォルダの権限を変更する(所有者のみが読み書き実行可能)。
6..sshフォルダ内の公開鍵の名前を変更する。
7.変更した鍵の権限を変更する。(所有者のみが読み書き可能)。
Laravelでのポートフォリオ作成2(随時更新)
とりあえずのDB設計
よく分らんけどこんな感じでまずは作ってみる