どうも、今年はなるべく有休を消化するようにしたいムラタです。
突然ですが日本国内でECサイトのオープンソースCMSの「鉄板」といえばEC-CUBEですよね。(あくまで個人的な感想です)
でも日本以外の海外だと一体なにが「鉄板」となっているのでしょうか。
世界中の様々なweb上のデータを解析しているDatanyzeより「使用しているECサイトプラットフォーム」の統計によると「Magento(マジェント)」が18.98%のシェア率を誇り一番使われているようです。(2017年12月現在)
ちなみに2位は「IBM Websphere Commerce」で12.05%でした。
正直1位も2位も初めて聞きました。自分が無知なだけで割と有名なんでしょうか。
というわけで今回は堂々1位となった「Magento」とは何なのかを調べながら実際にインストールするところまでのお話です。
※あくまでインストールする話がメインなので機能面の話はほとんどありません。
Magentoとは
最初にMagentoってなに?というところからですが、
アメリカのロサンゼルスにあるMagento.Incが開発しているECサイトオープンソースCMSで、およそ世界中で25万以上のECサイトで利用されているそうです。
特長
Magentoはグローバル展開に強い特徴があり、多言語や多通貨・税管理機能がデフォルトで備わっているようです。いわゆる越境ECサイトの構築に適しているようです。
他にもクーポン機能や1つのMagentoで複数の異なるドメイン名のサイトを運用できるマルチサイト機能などもあるようです。
拡張性についても高いようで、EC-CUBEのプラグインと同じように「エクステンション」と呼ばれる拡張機能を追加すること可能です(ものによっては有償)。
世界中で高いシェア率を誇るだけあり、困った時に検索すると結構な数の記事がヒットするのも嬉しいですね。ただし、記事のほとんどが英語なので英語が苦手だと翻訳だけで結構な時間がかかってしまいます。
選べる3つのエディション
またMagentoには3つのエディションが用意されていて、サイトの規模に合わせて自由に選択することができます。
■Open Source
基本無料で使える一番基本的なエディションです。有償版に比べると使えない機能もありますが、前述のエクステンションがあるのでそれらを使うことで補うこともできそうです。小規模サイトであればこちらで十分でしょう。
■Commers
無償版の機能を拡張・強化した有償版です。複数台のデータベースサーバーを併用して不可の分散を行なえたり、任意のタイミングで自動的にコンテンツを差し替えることができるコンテンツステージング機能など他にも多種多様な機能が搭載されているようです。
また公式からのサポートも受けることができるのでもしもの時も安心です。
■Commers Cloud
上記Commers版の進化版といえる最上位エディション。その名の通りクラウドサービスを利用してAmazon Web Service(AWS)との組み合わせによるサービスになるようです。CDNによる負荷分散や表示の高速化、ファイルのバージョン管理、モニタリングサービスによるサーバーの負荷状況や読み込みに時間がかかっているページの解析なども行えるようです。
バージョン
Magentoは現在(2017年12月時点)Ver2となりますが、Ver1と2ではかなり変化があったようです。エクステンションについては完全に1と2は別物となっており、互換性はないようです。
この辺はEC-CUBEの2系と3系を彷彿とさせますね。
参照サイト
ここまでざっくりとMagentoについて書きましたが詳しい内容は「カゴヤのサーバー研究室」さんや、日本のMagentoパートナー企業の「ベリテワークス」さんのサイトに詳しく掲載されています。
インストールするバージョンとサーバーの決定
Magentoの事が分かってきたところで、実際にインストールをしていきたいと思います。
まずインストールMagentoのバージョンとその要件に合うサーバーを決めましょう。
今回インストールするMagentoのバージョン
今回インストールするバージョンは2017年12月時点での最新Verとなる「2.2.2」とします。
ちなみに2.2.2からAmazonの「ワンクリック購入」の特許が切れたことでMagentoでもその機能が実装されたようです。
というか特許あったんですねあの機能…初めて知りました。
ver2.2.2の動作要件
Magento2.2.xのバージョンでは以下の動作環境を推奨しています。
OS | Linux (RHEL)、CentOS、Ubuntu、Debianなど |
---|---|
メモリ | 2GB以上 |
Webサーバー | Apache…2.2もしくは2.4 nginx…1.x |
Composer | 最新の安定版。 別にインストールされていなくてもいい模様 |
データベース | MySQL…5.6、5.7 |
PHP | 7.0.2 7.0.4 7.0.6-7.0.x 7.1.x |
上記以外にも細かい要件はありますが、とりあえずこの辺をインストールする予定のサーバーがクリアしているかどうかをチェックしておくとしましょう。
要件の詳細はMagentoの下記のページで確認できます。
今回使用するサーバー
テストで構築するだけなのに新しくサーバーを借りるのもお金がかかるし嫌なので今回は個人的にテストサーバーとして契約しているロリポップ(スタンダードプラン)を使用します。
ロリポップのサーバーの仕様ページを見る限り「メモリ」に関しての表記がないのでそこだけ不明ですが、それ以外に関しては概ね大丈夫そうな感じですね。
インストール
Magentoのインストール方法
Magentoはインストールするにあたって下記の3つのパターンがあるようです。
- Magento公式サイトからzipアーカイブをDLしてFTP経由でインストール
- composerを使ってインストール
- githubからcloneしてインストール
1番が一番簡単そうではあるのですが、アップに滅茶苦茶時間がかかるという記事があったのと、zipアーカイブがどこのページにあるのか全くたどり着けなかったので今回は2番のcomposerを使ってインストールしようと思います。
※DLページは後日見つけました
composerのインストール
そもそも今まで業務で触ったこともなかった「composer」ってなに?って感じなんですが、ざっくりいうとPHPのパッケージを賢くインストールしてくれるツールみたいですね。分かったような分からないような…。
とにかくcomposerでインストールすることで下記の恩恵を受けられるようです。
- 最新版のMagentoのソースと関連するライブラリをDLできる
- サイト全体をcomposerが管理するようになる。アップデートが容易に?
- FTPでアップしたりなんだの余計な手間がかからない
ただし、デメリットとしてcomposerがコマンドラインでの作業になるためそれに慣れていない人にはハードルが相当高いのと、使用するサーバーのメモリが小さいと実行できないなどもあるようです。
では実際にロリポップにcomposerのインストールをしていきましょう。
SSHの有効化とPHPのVerの確認
まずはSSHが有効である必要があるのでロリポップの管理画面からSSHが有効になっているか確認するのですが、ついでにPHPのバージョンも7.1になっているか確認しておきましょう。
管理画面メニューの「サーバーの管理・設定」より「PHP設定」を選択。
該当ドメインのバージョンが「7.1」になっているか確認します。なっていないようなら変更しておきます。
次にメニューの同じく「サーバーの管理・設定」より「SSH」を選択。
こちらも有効になっているかを確認し、なっていないなら有効に変更しておきます。
またSSHサーバーやアカウントパスワードなども控えておきましょう。
SSHでログイン
上記の情報を基にお好きなSSHクライアントでサーバーにログインします。
ログインが完了したら以下のコマンドでインストーラーをダウンロードします。
1 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
何の反応もないですがファイルはコピーされているようです。
次に以下のコマンドを実行します。
1 |
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" |
ハッシュの確認?をしているようです。
問題なければコンソール画面に「Installer verified」と表示されます。
逆に何か問題があれば「Installer corrupt」と表示されインストーラーは削除されます。
次のコマンドでインストーラーを実行します。
1 |
php composer-setup.php |
ダウンロードが完了すると画面に
1 |
Composer (version 1.5.6) successfully installed to: /home/users/0/xxxxx/composer.phar |
と表示されます。
インストールが完了したらインストーラーは不要なので削除しておきます。
1 |
php -r "unlink('composer-setup.php');" |
これで削除完了です。
最後にバージョン確認コマンドをしてちゃんとインストールがされているか確認します。
1 |
php composer.phar -V |
これでバージョン情報が表示されればcomposerのインストールは完了です。
composerを使ってMagentoファイルをダウンロード
ではいよいよMagentoのインストールに必要なファイル群をダウンロードしていきましょう。
Magentoアカウントの作成
composerを使ってダウンロードする場合、Magento公式サイトにてアカウントを登録する必要があるようなのでアカウントを作成しましょう。
Magentoのサイトが開いたら画面右上の「My Account」を選択します。
既にアカウントを持っている人用のログインフォームは左側に、新しくアカウントを作成する人用のリンクボタンが右側にあるので、右側の「Register」ボタンを選択します。
アカウント作成画面に遷移するので必須項目を全て入力して送信します。
送信が完了すると登録したメールアドレス宛に確認メールが届くので本文内の「Verify your email」リンクを選択し、認証完了させます。
登録完了後マイページにアクセスし、タブメニューより「Marketplace」を選択します。
画面遷移後、「My products」より「Access Key」を選択します。
「Create a New Access Key」ボタンを選択します。
すると「Create new access keys」という名前を入力するポップアップが表示されるので適当な名前を入力して「OK」を選択します。
前述の名前で公開鍵と秘密鍵が生成されるので2つともコピーしておきます。
Magentoファイルのダウンロード
SSHクライアントに戻り、次のコマンドをします。
1 |
php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition <インストールしたいディレクトリ> |
今回インストールする場所をルートディレクトリに「magento」というディレクトリを切ってMagentoのTOPページURLを「http://xxxx.com/magento/」としたかったので上記コマンドの「<インストールしたいディレクトリ>」部分を
「web/magento」としました。
実行するとユーザーネームとパスワードを順番に聞かれるので、
先ほど発行した公開鍵(Public Key)をユーザーネームに、秘密鍵(Private Key)をパスワードとして入力します。
無事通れば
「Do you want to store credentials for repo.magento.com in /<ホームディレクトリ>/.composer/auth.json ? [Yn]」
と聞かれるので「y」として実行します。
これでファイルのダウンロードが始まるので後は終わるまで待つだけ
…のはずが今回エラーが起きてしまいました。
赤背景のエラーメッセージには
「Your requirements could not be resolved to an installable set of packages.」
とあるので、どうもインストールに必要な要件を満たしていないためエラーとなっているようです。
確認する限りでは要件は満たしていたはずなのにおかしいですね…
詳細が下のメッセージに表示されているので確認したところ、
「magento/product-comunity-edition 2.2.2 requires php 7.0.2|7.0.4|~7.0.6|~7.1.0 -> your php version (5.5.35) does not satisfy that requirement.」
とあるのでどうもPHPのバージョンが低いと言われているようです。
再度ロリポップの管理画面でPHPのバージョンを確認するもやはり7.1であることは確かのようです。
ということはSSHでPHPを実行する際は管理画面で指定したものとは違うバージョンで実行されているということのようです。
調べてみると普通にロリポップに解決策が記載されていました。
どうやらSSHで任意のバージョンのPHPを使用する場合はパスを指定する必要があったようです。
再度PHP7.1を下記のように指定して実行します。
1 |
/usr/local/php7.1/bin/php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition <インストールしたいディレクトリ> |
長い・・・
しかも今度は違うエラーが出てきました。
「Project directory web/magento/ is not empty.」
とのことなので、ダウンロード先のディレクトリの中身が空じゃないので怒られているようです。
1回目の実行である程度ファイルが落ちていたようですね。
わざわざFTPに接続して該当ディレクトリの中身を消すのも面倒くさいのでこのままコマンドで削除してしまいましょう。
以下のコマンドで一旦「web/magento」をディレクトリごと削除します。
1 |
rm -r web/magento |
そしてもう一度実行します。
今度こそ無事成功したようで次々とファイルがダウンロードされてきます。
最後に「Writing lock file」「Generationg autoload files」とメッセージが出て動きが止まったので良く分からないのですが、とりあえず正常に終了したということで良さそうです。
Magentoのインストール
早速「http://xxxx.com/magento/」へアクセスしてみます。
するとセットアップ画面が表示されるので問題はなさそうです。このままインストール作業を進めましょう。
「Agree and Setup Magento」を選択します。
STEP1
最初のステップではインストールするサーバーが要件を満たしているかのチェックになるようです。
「Start Readiness Check」を選択してチェックを実行します。
全てのチェックに通ったので「Completed! you can now move on to the next step.」と表示されました。
言われた通り次に進みましょう。画面右上の「NEXT」ボタンより次に進みます。
STEP2
次のステップはデータベースの設定になるようです。
ロリポップの管理画面からデータベースの情報を調べて入力していきましょう。
STEP3
次はショップのURLと管理画面のURLの設定です。Wordpressと同じ感じですね。
今回はショップURLはそのままで管理画面のURLを「admin」としました。
「Advanced Options」をクリックするとSSLの設定などができるようですが、ちょっとよく分からなかったのでそのままにしています。
STEP4
STEP4はデフォルトのタイムゾーンや通貨、言語の指定になるようです。
なので、
Time Zone(タイムゾーン)を「Japan Standard Time(Asia/Tokyo)」
Currency(通貨)を「Japanese Yen(JPY)」
Language(言語)を「Japanese(Japan)」
と設定しました。
「Advance Modules Configurations」には拡張モジュールと思われるリストが表示されるのですがここも良く分からないのでそのままにしておきます。
STEP5
次に管理者アカウントの作成になります。
ユーザーネームやメールアドレス、パスワードを入力して次に進みます。
STEP6
特に何もないです、インストール準備の完了を知らせる画面のようです。
早速「Install Now」ボタンを選択してインストールを実行しましょう。
インストールが無事完了すると「Success」という画面に遷移し、管理画面のURLや管理者アカウントなど重要な情報が表示されるので忘れないように保管しておきましょう。
そして最後にセキュリティのため「インストールしたディレクトリ/app/etc」の書き込み権限を無効にしておきましょうとメッセージが出ているので、該当ディレクトリのパーミッションを変更しておきます。
もう一度「http://xxxx.com/magento/」にアクセスしてみるとちゃんとデフォルトテンプレートのTOPページが表示されているのが確認できます。
続いて「http://xxxx.com/magento/admin/」にアクセスすると管理画面へのログインページが表示されるのが確認できます。
先ほど設定して管理者アカウントでログインしましょう。
問題なくログインできたらとりあえずはインストール完了です。
長い道のりでした…
最後の調整
管理画面にアクセスすると画面上部に
「One or more indexers are invalid. Make sure your Magento cron job is running.」とメッセージが出ていると思います。
なんのこっちゃ分かりませんがとりあえず調べたところ以下の処理で対処できるようです。
まずコンソール画面に戻り、Magentoをインストールしたディレクトリまで移動します。今回なら「web/magento」ですね。
1 |
cd web/magento |
移動したら次のコマンドを実行します。
1 |
/usr/local/php7.1/bin/php bin/magento indexer:reindex |
これで再度管理画面に戻ると先ほどのメッセージは無くなっていたのですが、今度は別のメッセージが出るようになっていました。
「One or more of the Cache Types are invalidated: Page Cache. Please go to Cache Management and refresh cache types.」
ページキャッシュがどうのこうで、キャッシュ管理画面に行ってキャッシュタイプをリフレッシュしろ?ということなので、まずは「キャッシュ管理画面」とやらを探します。
今考えたらエラーメッセージに思いっきりリンクついてるっぽいんでこっから普通にアクセスできたと思うんですが、とりあえず場所は管理メニューの「SYSTEM」→「Cahce Management」にあります。
Cache Managementページ画面右上に「Flush Magento Cache」というボタンがあるのでそれを選択します。
「The Magento cache storage has been flushed.」
とメッセージが出ればOKなようです。
恐らくこれで何もメッセージは無くなったと思います。
ローカライズについて
管理画面内全てが英語で表示されるので、ここはさすがに日本語化したいところですよね。
日本語化エクステンションは有り難いことにベリテワークス株式会社さんが無償で提供していただいています。
それでは早速日本語化エクステンションの適用手順をご紹介・・・と言いたいところですが、ロリポップでは日本語化エクステンションの適用がどうにもうまくいかず今現在も手詰まり状態です。
もしうまく解消できたらまた記事にしますので、今回はインストールまでということでご容赦ください。
最後に
今回格安サーバーのロリポップにもインストールまではできるよということで備忘録も兼ねてご紹介させていただきましたが、本当にがっつりMagentoを使いたいという人はエクステンションの件もありますし、ちゃんとサーバーを吟味した方が良さそうですね。
またインストールのみで実際の機能の面などは分からず仕舞いだったので機会があればその辺の紹介も出来ればいいですね。
それではまた。