Dockerで開発したLaravelの本番環境移行 覚書

構成について

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.phpphp-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が便利だということ学んだので覚書。

 

参考資料

hara-chan.com

 

・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.変更した鍵の権限を変更する。(所有者のみが読み書き可能)。

参考資料
www.yottanote.com
ayame.space
qiita.com

Laravelでのポートフォリオ作成1(随時更新)

webエンジニアとして転職すべくポートフォリオを作成する。

 

 

 

 

ポートフォリオの概要(随時更新)

業務などにおける進捗管理が可能なアプリ。

多人数が同時に更新可能であり、リアルタイムに更新状況が反映される。

並び替えやソート、検索機能。

また、だれがいつ更新を行ったかの履歴も保存。

 

 

・なぜこれを作ろうと決めたのか?

現在の業務において進捗管理をエクセルで行っており、多人数での更新や表示速度の遅さが進捗を管理する上で不便に感じていたため。

 

 

・なぜPHPで作るのか?

常識言語は何でもよかった

学習コストが比較的低そう?

また東京以外でも求人が多いため。

 

 

・使用技術

随時記載