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化

長いからこっちの記事にまとめた

VPS x Docker x Nginxの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があったら見直す

とかだと思われる。

Conoha Wing

爆速で表示されるこのブログのサーバーはConoha Wingです。
詳細は下記!!

おすすめの記事