Laravel 6をCentOS7のDockerに構築する【PHP7.3+Nginx+SSL化】

ギークフィードエンジニアの君島です。自己紹介にもある通り、Laravelも始めています。

 

ギークフィードでは全社的にLaravelを使用した開発を推進しています。

自社サービスのYouWireもLaravelを採用しています。

最近(2019年9月)LTSのLaravel 6がリリースされました。

今後利用する可能性が高いので、Dockerコンテナ上に構築した手順をまとめておきます。

WebサーバにはNginxを使用し、HTTPS通信できるように設定します。

 

Dockerだけ使いたい、あるいはLaravel 6をCentOS7に構築したいという場合には抜粋して確認してください。

 

ホストサーバ環境

ホストOS CentOS 7.6
Docker 19.03.2

 

Dockerコンテナ起動

CentOS7イメージの取得

ホストサーバにて以下のコマンドを実行して、centos7のイメージを取得します。

 

コンテナ起動

続いてコンテナを起動するために以下のコマンドを実行します。

 

オプションについて説明します。

-pオプションで、ホストサーバの8443ポートへの通信をコンテナの443ポートへフォワードします。これはSSL化のためです。

実際はiptablesに設定追加していることがわかります。

 

–privileged, /sbin/initはsystemctlコマンドを使用するためです。何も指定しないとsystemctl実行時にFailed to get D-Bus connection: Operation not permittedというエラーが出て実行できないと思います。

 

それでも実行できない場合は、–security-opt seccomp=unconfinedを追加して、secomp(Secure computing mode)のプロファイルを無視したコマンドも試してください。この設定は、セキュリティ上、dev環境に限定した方が良いとは思います。

 

その他のオプションについても、列挙しておきます。

  • –rm はクリーンアップ、コンテナ終了時にファイルシステムから削除します。
  • -dはデタッチモードで起動、ルートプロセス終了時にコンテナも終了します。
  • -itはコンテナの標準出力に入るiと、疑似ターミナルを割り当てるtオプションの混合です。

 

上記コマンド実行後、コンテナを起動できているかを確認します。

 

コンテナが起動していることがわかりました。

 

それでは、コンテナに接続して操作を行っていきます。

以下のコマンドを実行してコンテナのコンソールに入ります。{CONTAINER_ID}には、例えばc5f88da7ae07 のようなCONTAINER IDを入力してください。

 

Laravel 6インストール

PHP7.3インストール

ここからはコンテナ上での作業となります。

 

Laravel 6はPHP7.2以上が要求されているので、まずはPHP7.3をインストールします。

関連して必要なモジュールも合わせてインストールしておきます。

 

Laravel 6インストール

Composerをインストールします。ここではComposerの公式を参考に進めていきます。

 

以下のコマンドを実行してバージョンが表示されたならば成功です。

 

Composerへのパスを通します。

 

Composerを使ってLaravelのインストーラをダウンロードします。

 

Laravelプロジェクトを開発する場所に移動して、新しいプロジェクトを作成します。

 

新しくblogというディレクトリができあがっているはずです。

この中にLaravel 6のプロジェクトが入っています。

 

ログやキャッシュの書き込みでPermission Deniedとならないように、パーミッションを変更しておきます。

 

後でユーザとグループの設定を行いますが、先にWebサーバのインストールに進んでいきます。

 

Nginxのインストールと各種設定

Nginxインストール

今回Webサーバには、Nginxを使用します。

まずはNginxをインストールします。

 

サービスの起動と有効化をしておきます。

 

Permission Deniedとならないように、Laravelプロジェクトのユーザとグループも変更しておきます。

 

php-fpm設定

NginxでPHPを使用する場合には、必要なアプリケーションサーバです。

 

既にPHPのインストールと同時に入れていますので、php-fpmの設定を書き換えましょう。

/etc/php-fpm.d/www.confを、以下のように書き換えます。変更箇所のみ記載しています。

 

こちらもサービスの起動と有効化をしておきます。

 

HTTPS通信

SSL化するには、適切に証明書をインストールする必要があります。

今回はHTTPSで通信したいだけなので、mod_sslをインストールした際に作られる証明書、鍵ファイルだけを使用します。

 

できあがった証明書と鍵ファイルを適当なパスにコピーしましょう。

 

Nginx設定

/etc/nginx/nginx.confのデフォルトではコメントアウトされているHTTPS設定を以下のように編集します。

 

設定が終わったら、Nginxを再起動します。

 

以上で設定は完了となります。

 

アクセス確認

https://{Host Server IP}:8443にブラウザからアクセスするとLaravelのTOP画面が起動しているはずです。

 

表示されない場合は、上記で設定したNginxのアクセスログや、ポート設定、パーミッションを確認してみましょう。

 

Laravel 6をCentOS7のDockerに構築するのまとめ

Laravel 6をCentOS7のDockerコンテナ上に構築した手順を紹介しました。

WebサーバをNginxとし、PHP7.3でLaravelが動作するように各種設定を行いました。

 

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
君島翔
君島翔
セクションマネージャー/エンジニア株式会社ギークフィード
Java, .NET系の言語が得意。Laravel始めました。 エディタはvim派。 自分が楽するためにテストやビルド、デプロイを自動化させたい。 AWSもよく触ってます。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ