CakePHP5入門【CakePHP5実用編⑯】本番環境へのデプロイ

B美

C菜

A子
(【CakePHP5応用編⑩】を参照)
まず開発環境側での準備だけど…
1.mysqldumpでデータベースのバックアップを取ったら、それを加工してデータベースの定義ファイルを作成する
2.キャッシュクリアを実行する 3.SCPを使って、本番環境へのアップロードを実行する |
で、本番環境側での処理がこうだね
4.SSH接続してから、データベースを作成する(定義ファイルを読み込む)
5.「config/app_local.php」の中にあるデータベースパスワードを書き換える 6.「config/const.php」の内容を本番環境に合わせて書き換える 7.「logs」ディレクトリ及び「webroot/personal」ディレクトリ内のファイルを削除する(ただし「default.png」は削除しない) 8.「webroot/personal」ディレクトリのオーナーを「www-data」に変更する 9.WebSocketサーバの自動起動設定を行う(+サーバ起動) 10.ブラウザから(httpsで)アクセスし、動作確認を行う |

B美
その手順で大丈夫だから、A子とC菜の二人でやってみなさい
(実は、6番では定数を一つ追加しないといけないんだけど…)

C菜
まずは
1.mysqldumpでデータベースのバックアップを取ったら、それを加工してデータベースの定義ファイルを作成する |
ですねぇ~

A子
mysqldump -u root -p chatdb > chatdb_backup.sql[Enter] |


C菜
(ただし、テーブル定義の末尾にある「AUTO_INCREMENT=○」だけは削除しておきます~)
あと、先頭に以下の二行を追加するです~
create database chatdb;
use chatdb; |




B美
上記の「chatdb_backup.sql」だけど、「users」テーブルの定義を一番上に移動してね

C菜

B美
先に外部キー参照の記述があると、エラーになるかもしれない…
(ならないかもしれない…よく分からん(苦笑))




A子
んじゃ、次…
2.キャッシュクリアを実行する |
これは簡単だね
cd html/authapp[Enter]
bin/cake cache clear_all[Enter] |


C菜
3.SCPを使って、本番環境へのアップロードを実行する |
「gFTP」を使って「authapp」ディレクトリを本番環境のドキュメントルートへアップロードしますね~
(【CakePHP5応用編⑩】を参照)
これは少し時間がかかりますよ~


A子
(ドキュメントルートじゃなくて、ユーザホームへ)
んで、アップロードが終われば、いったん接続を切って…っと
よし!
ここからは本番環境上での作業だね
4.SSH接続してから、データベースを作成する(定義ファイルを読み込む) |
「MATE端末」を開いて
ssh -i .ssh/sakura.pem -p nnnn xxxx@friction-river.jp[Enter] |
を入力すれば良いんだよね?
(「nnnn(ポート番号)」と「xxxx(ユーザ名)」の部分はもちろん伏字)

C菜
mysql -u root -p < chatdb_backup.sql[Enter] |


A子
確認してみたけど、問題なくデータベース自体もその中のテーブルも作られてた…
5.「config/app_local.php」の中にあるデータベースパスワードを書き換える |
これは、さくっと完了したよ
6.「config/const.php」の内容を本番環境に合わせて書き換える |
これは少し面倒くさいね(汗)
define("ADMIN_ID", "********"); //管理者ID
define("ADMIN_PASS", "********"); //管理者パスワード define("WEBSOCKET_IP", "friction-river.jp"); //WebSocketサーバのIPアドレス define("CERT_FILE", "/********/server.crt"); //サーバ証明書 define("PK_FILE", "/********/server.key"); //秘密鍵 define("MAIL_URL", "https://friction-river.jp/authapp/applicants/welcome/"); //メール中に記載するURLの中でトークン以外の部分 |
もちろん「*」の箇所は伏字だよ
(「サーバ証明書」と「秘密鍵」の場所はB美に聞いたんだけど、セキュリティ上明かせません(苦笑))

B美
(これはWebSocketの仕様みたい…)
でもクライアントからはドメイン名でアクセスしないといけないから、定数を一つ(「WEBSOCKET_NAME」を)追加しなさいね
define("WEBSOCKET_IP", "49.212.186.238"); //WebSocketサーバのIPアドレス
define("WEBSOCKET_NAME", "friction-river.jp"); //WebSocketサーバのドメイン名 |
…ってこと
あと、「templates/Chat」の中にある「index.php」のJavaScript部分に存在する「WEBSOCKET_IP」の箇所を「WEBSOCKET_NAME」に変更してね

A子
開発環境だと、どっちもIPアドレスでOKだったのに…

C菜
7.「logs」ディレクトリ及び「webroot/personal」ディレクトリ内のファイルを全て削除する(ただし「default.png」は削除しない) |
cd html/authapp[Enter]
cd logs[Enter] rm -f *[Enter] cd ../webroot/personal[Enter] rm -f *[Enter] |
このあと「webroot/personal」の中に「default.png」だけ、もう一度アップロードするです~
(個別に削除するのが面倒くさかったので…)


C菜
8.「webroot/personal」ディレクトリのオーナーを「www-data」に変更する |
cd[Enter]
cd html/authapp/webroot[Enter] su[Enter] chown www-data:www-data personal[Enter] exit[Enter] |
あ、「default.png」をアップロードする前にオーナー変更しちゃダメですよ~


A子
さーて、問題は9番だね
9.WebSocketサーバの自動起動設定を行う(+サーバ起動) |

C菜
(【補足④】を参照)
su -[Enter]
cd /etc/systemd/system[Enter] vi websocket-server.service[Enter] |
「nano」ではなく「vi」を勉強してみたので、ちょっと使ってみました~

↓


A子
systemctl daemon-reload[Enter]
systemctl enable websocket-server[Enter] |
で良いんだよね?


C菜
systemctl start websocket-server[Enter]
systemctl status websocket-server --no-pager[Enter] |
ばっちりです~
起動したみたいですよ~


B美
んで、最初のユーザ(管理者)として私を登録してみるわね


B美
とりあえず、アイコン画像だけは変更してみたわ
あとは「ユーザ管理」画面でA子とC菜のアカウントを作ってみたから、各自ログインして「パスワード」と「アイコン画像」を変更しておきなさいね

↓


A子
ログイン後「パスワード」と「アイコン画像」を変更してから、いったんログアウトしたよ

C菜


B美
んじゃ、チャットルームを一つ作って、三人で会話してみましょうか…


A子


B美
(下記画面の左から右への順番)
まずは私が発言してみたわ

↓


A子


C菜


B美


C菜

B美
左から「Edge」「Chrome」「Firefox」だからね
(どのブラウザソフトでも問題なく動いたってこと)