ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

EC-CUBE4をAWSのUbuntu18.04上で独自ドメインで動かす

f:id:twx:20200103202217p:plain
ECCUBE4をAWSのUbuntu18.04上で独自ドメインで動かす

目次


はじめに

この記事ではEC-CUBE4をAWSのUbuntu18.04上で独自ドメインで動かす方法を紹介します。なお、動作検証を行った環境は以下の組み合わせでです。他の環境では試しておりませんのでご了承ください。

  • EC-CUBE 4.0.2
  • PHP 7.2.24
  • Apache 2.4.29
  • Ubuntu 18.04

作業自体は10分くらいで終わるので、あまり難しく考えずサクッと独自ドメイン運用をはじめちゃいましょう。

01. 独自ドメインの取得/設定

EC-CUBE4を独自ドメインで運用するにはドメインを「お名前.com」などで取得している必要があります。

www.onamae.com

ここで好きなドメインを取得してください。この記事では、example.com というドメインを取得したという想定で話を進めます。記事中の example.com の部分はご自身のドメインで読み替えていただければと思います。

ドメインを作成したら、まずはルーティングをAWSのネームサーバに変更します。

そのため、まずはAWSのコンソールを開き、Route 53のページを開いてください。

https://console.aws.amazon.com/route53/home

独自ドメインのホストゾーンを作成すると、4つのネームサーバーを画面上に現れます。

f:id:twx:20200119160515p:plain
Route 53

この4つのサーバ名を後で使います。この画面は、このまま置いておいてください。

次にお名前.comのネームサーバの設定を行います。

https://www.onamae.com/domain/navi/menu/domain

以下の画面で「他のネームサーバーを利用」を選択し、ネームサーバー情報を入力するボックスに先程のRoute 53のネームサーバ4つを記入し、保存してください。

f:id:twx:20200119163734p:plain
お名前.com Navi

これで、example.com にAWSのネームサーバが登録されました。

変更が適用されたかどうかを確認するには以下のコマンドを実行してください。上述の4つのネームサーバ名が返ってくれば、反映が完了したということになります。最大で72時間ほどかかるので、反映されない場合は3日間待ちましょう…

nslookup -type=ns example.com

上記の設定が完了したら、再びAWS Route53の画面に戻りましょう。次は http://example.com でアクセスした際に、そのHTTPリクエストがEC-CUBEをインストールするEC2に飛ばされるようにAレコードの設定を行います。

https://console.aws.amazon.com/route53/home

下図のように、「レコードセットの作成」ボタンを押し、右側にHTTPリクエストの送信先を記述します。

f:id:twx:20200119164742p:plain
Aレコードの作成

ここでは、やり方は2つあって、

  • ロードバランサを経由してEC2に転送するパターン
  • EC2に直接転送するパターン

があります。ロードバランサを使うほうが、HTTPS化なども簡単に行うことができるのでおすすめです。

ロードバランサを使う場合は以下の記事を参考にロードバランサの設定を行った上で、上図の右側の赤丸の中にある「エイリアス」を「はい」にし、選択ボックスの中から該当のロードバランサをクリックしてください。

【参考記事】

www.mahirokazuko.com

EC2に直接転送する場合は、「エイリアス」は「いいえ」にし、EC2のIPアドレスを値に入力してください。

これで独自ドメインの設定は終了です。

02. ECCUBE4側の設定

EC-CUBE側では、実はやることはほとんどありません。

まず、以下の記事を参考にして、AWS上でEC-CUBEの開発環境が立ち上がるところまで確認してください。

www.mahirokazuko.com

EC-CUBEが立ち上がりブラウザからアクセスできることを確認したら、「開発モード」から「本番モード」に変更して、本番用として起動できるようにしましょう。

EC-CUBE4では .envを2行だけ書き換えるだけでOKです。

.envを開き、ファイル上部の2行を以下のように書き変えてください。

APP_ENV=prod
APP_DEBUG=0

これでEC-CUBE側の設定は終了です。

03. Apache側の設定

最後に、Apacheの設定を行います。

やるべきことは大きく2つあります。

1つは、http://example.com に対するHTTPリクエストをEC-CUBE4に受け渡せるようにすること。

もう一つは、PHPを実行できるようにすること。

以上の2点です。 順番にやっていきましょう。

まず、Apacheの設定ファイルを作成します。

UbuntuのApache2.4では、etc/apache2/sites-available/ 配下に複数のコンフィグファイルを持つことが出来ます。そして、どのコンフィグを有効/無効にするかをetc/apache2/sites-enabled/ で制御します。

有効にしたいetc/apache2/sites-available/ 配下のコンフィグファイルに対して、etc/apache2/sites-enabled/の中にシンボリックリンクを張ることで有効化されます。

ここでは、001-example-com.confというコンフィルファイルを作って、そのシンボリックリンクをetc/apache2/sites-enabled/内に生成します。

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-example-com.conf

sudo ln -snf  /etc/apache2/sites-available/001-example-com.conf /etc/apache2/sites-enabled/001-example-com.conf

ファイルが作成できたら、この 001-example-com.conf を編集していきましょう。(シンボリックリンクを貼っているのでどっちを編集しても同じです)

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.

        ServerName example.com
        ServerName www.example.com
        DocumentRoot /home/ubuntu/work/hogehoge/ec
        ServerAdmin info@example.com
        AddType application/x-httpd-php .php

        <Directory /home/ubuntu/work/hogehoge/ec>
            AllowOverride All
            Require all granted
            Options +FollowSymLinks +SymLinksIfOwnerMatch
        </Directory>


        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        # Include conf-available/serve-cgi-bin.conf
</VirtualHost>

注意点はここです↓。

        ServerName example.com
        ServerName www.example.com
        DocumentRoot /home/ubuntu/work/hogehoge/ec
        ServerAdmin info@example.com

ServerName example.com には独自ドメインを設定してください。

ServerAdmin は連絡先となるメールアドレス。

DocumentRootはEC-CUBEをインストールしたフォルダパスを設定してください。

AddType application/x-httpd-php .php はPHPが動作するようにするオマジナイです。

また、次のブロックについても少し解説します。

        <Directory /home/ubuntu/work/hogehoge/ec>
            AllowOverride All
            Require all granted
            Options +FollowSymLinks +SymLinksIfOwnerMatch
        </Directory>

/home/ubuntu/work/hogehoge/ec の部分は、ご自身のEC-CUBEのインストール先のパスにしてくだい。

            AllowOverride All
            Require all granted
            Options +FollowSymLinks +SymLinksIfOwnerMatch

の部分はそのまま。オマジナイと思ってください。

以上で設定は終了です。

もしエラーが出た場合、mod-phpというパッケージが足りていない可能性があります。以下のコマンドでインストールすることで解決します。

sudo apt install libapache2-mod-php7.2

再起動に成功したら、ブラウザを開いてhttp://example.com にアクセスしてみましょう。あなたのEC-CUBEサイトが表示されれば成功です!!

表示されない場合、EC-CUBEのルートディレクトリ配下の .htaccessをチェックしてみましょう。

以下の記載がもしなかったら追記してみてください。問題が解決できるかもしれません。

    RewriteEngine On
    RewriteBase /

以上です。お疲れさまでした!!


以上、EC-CUBE4をAWSのUbuntu18.04上で独自ドメインで動かす方法に関する記事でした!

良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリック、Twitterのフォローをお願いします!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu