EC-CUBE メモリ不足解消!?

会社の研修でEC-CUBEを扱うことがありました。
その時にメモリ不足によるエラーが出て、解決方法を探すのに時間が掛かったので手順をまとめておこうと思います。

・環境について
  
EC2 t2.micro
        apache
        php7.2
        mariaDB
        EC-CUBE 4.0.5

環境構築についてはこちらの記事を参考にしました。

wget するときに4.0.5とすれば最新版をインストールできます。
※ここでは環境がもうすでにできてる人向けに話します。

結論から言うと、

オーナーズストアからプラグインをインストールする時に、メモリ不足でインストールができない。
そのため、php.iniとLinuxのswapのメモリ確保をしてやる。

php.iniファイルを変更

これは効果あるのかイマイチわかりませんが、一応していきましょう。
まず、sshでEC2内に接続しましょう。(ここでは省きます。)

$ php --ini

# phpコマンドのオプションに ini をつけると iniファイル がどこにあるのか pathを出してくれる。

メモリを増やしてあげる

$ sudo vim /etc/php/ini

/memory_limit と入力するとカーソルが勝手に移動してくれる。

memory_limit = 512Mとなっているところを
memory_limit = 2Gと変える。

管理画面からキャッシュをクリアして再度プラグインをインストール。
できません。まだメモリが足りないみたいです。

SWAP領域を確保する

SWAP とは、物理メモリを使い切った場合に、その物理メモリの代わりに使われるメモリ領域のこと。

設定をしていく

※今回は、EC2内での環境なのでSwapを確保していますが、実環境ではしっかり調べてからしないと故障の元になるかもしれないので気をつけてください。

$ free -m

mem: 物理メモリ
Swap: Swapメモリ

最初は設定をしていないため「0」だと思います。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

dd: 指定サイズのからファイルを作成。
mkswap: 作成したファイルをSwap領域として使用できるようにする
swaponswSwap領域を有効化

dd」コマンドはファイルをブロック単位で読み出し、指定通り変換して出力します ※1。入力と出力にデバイスを指定できるため、HDDのパーティションをコピーする、USBメモリやCD-ROMのバックアップを取る、といった使い方が可能です。
処理するブロック数を指定でき、任意のサイズのファイルを作成するといった用途にも役立ちます。

これでインストールができるようになってるかと思います。

また、ec-cubeのルートディレクトリで下記コマンド

$ bin/console eccube/plugin/install --code <Plugin Code>
$ bin/console eccube/plugin/enable --code <Plugin Code>

プラグインのインストールと有効化を行うことができます。

以上です。
EC-CUBEについてはまだまだ研究の余地があるかと思いますが
色々なエラーで時間が取られている状況です。

この記事が気に入ったらサポートをしてみませんか?