Laravel、Dockerを利用中。
ジャンプできる目次
サーバー構築
下記の記事を見て、GUIからサーバーを構築する。
ConoHa VPSでDockerを使う。アプリケーションの公開も試してみます。 | ガジェラン
SSHで接続できるようにkeyをダウンロードしておくこと。
なしだとうまくつながらないことがあった。
コマンド叩いたりとかはまだしなくていい。
データをアップロード
sshでサーバーに接続したら、git cloneする。
場所はsshで接続直後にいる位置「/root」直下で叩いていい。
その後クローンしたディレクトリにcdコマンドで移動したら
docker-compose up -d
を叩く。
もしno such service: mysql
などとエラーが出てしまう場合は、
no such service: mysqlエラー解消!docker-composeの修正法
この記事を参考にする。
修正版のリポジトリをローカルからgithubにpushした後は、
VPSサーバー上でgit pull と叩くだけで最新の状態にできる。
もしVPSサーバー上でdocker-compose up -d
を叩いたときに80番ポートがすでに使われている、みたいなエラーがコンテナ起動時に出るなら、下記の記事を参照
ポート80が既に利用中? Dockerのコンテナを立ち上げられない
Laravel関連のものを使えるようにする
基本設定
↓この記事の「環境の再構築」からを見るとわかりやすい
【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン - Qiita
クローンしたアプリのディレクトリ上で
docker-compose exec app bash
みたいなコマンドを叩いて、コンテナに入る。
その後コンテナ内で入力するのは、大体下記のコマンドになると思う。
chmod -R 777 storage bootstrap/cache
cp .env.example .env
php artisan key:generate
php artisan storage:link
php artisan migrate
php artisan db:seed
`
ドメイン設定
wing vps問わず、conohaで取得したドメインならここに出てくるはず。
サブドメインを切りたい場合は、
ドメイン > 取得済みのドメインを選択
ホスト設定 より、サブドメインになる文字列とVSPサーバーのグローバルIPおアドレスを入力する。
DNS >該当ドメイン選択 > 右の鉛筆ボタン
赤線を引っ張ってるAレコードみたいなやつを追加する。
値は先ほど同様、VPSサーバーのグローバルIPアドレス。
これはサブドメインじゃなくても同じ。
ただしサブとメインじゃなかったら、なんかいらん設定がいっぱい入ってるから上記のスクリーンショットにない設定は削除していい。
反映されるまでに時間がかかるとされている。
でもそもそもconoha内で取得したドメインならタイムラグもないのでは?
ってかんじ。
VPSサーバーシャットダウン
↓
1時間経過
↓
VPSサーバー起動
↓
コンテナ起動
とかごにょごにょしてたら、設定したサブドメインでウェブページが正常に表示されるようになった。
※もう1回別のドメインで試してみたら、1時間ぐらいたたないと無理だった
もし80番ポートがすでに使われている、みたいなエラーがコンテナ起動時に出るなら、下記の記事を参照
80番ポートが既に使われているとかのエラーでVPSサーバー上のwebサーバー(nginxなど)のコンテナが起動出来ない場合
認証システムに本番環境用のURLやIPを追加
Sanctumの認証を使っている場合のみ必要。
//backend\config\sanctum.php
return [
/*
|--------------------------------------------------------------------------
| Stateful Domains
|--------------------------------------------------------------------------
|
| Requests from the following domains / hosts will receive stateful API
| authentication cookies. Typically, these should include your local
| and production domains which access your API via a frontend SPA.
|
*/
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,localhost:8080,127.0.0.1,127.0.0.1:8000,127.0.0.1:8080,192.168.47.22:8080,192.168.47.22,192.168.20.6:80,192.168.20.6,118.27.16.27,118.27.16.27:80,118.27.16.27:443,portfolio.ketukara.com,portfolio.ketukara.com:80,portfolio.ketukara.com:443::1',
env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : ''
))),
//以下略
今回は、
118.27.16.27,118.27.16.27:80,118.27.16.27:443,portfolio.ketukara.com,portfolio.ketukara.com:80,portfolio.ketukara.com:443
を追加した。どこまで厳密に必要かわからないが、
- ポート番号なしのドメイン
- ポート番号80のドメイン
- ポート番号443のドメイン
- ポート番号なしのグローバルIPアドレス
- ポート番号80のグローバルIPアドレス
- ポート番号443のグローバルIPアドレス
を追記した。
ここまで書けば文句は言われないだろう。
SSL化
長いからこっちの記事にまとめた
phpmyadminに入れるように無条件に入られないようにパスワードをかける
もし、phpmyadminにパスワードなしで入れてしまうなら、
docker-compose.ymlのログイン情報を消せばいい。
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=db
# - PMA_USER=hogehoge
# - PMA_PASSWORD=fugafuga
これで自動ログインできなくなる。
他にやらないといけないこと
- mysqlのデータがあるならインポート
- 認証システムのガードがかかっていないapiがあったら見直す
とかだと思われる。