はじめに
こんにちは、天方です。
前回、Magento2のインストールについて紹介しましたが、今度はインストールしたMagento2のフォルダ構造について解説してみようと思います。
フォルダの構造がわかると、運用する上でも開発をする上でもMagentoに対する理解が深まります。
Magento1を利用されていた方はフォルダ構造が変わって少し戸惑うかもしれません。今回はMagento1からの変更点にていても触れておきたいと思います。
フォルダの概要(第一階層)
まず、第一階層のフォルダについて説明します。
フォルダ名 | 説明 |
---|---|
app | モジュール、テーマ、言語パッケージ、設定ファイル等が配置される |
bin | magento CLIコマンドが配置される |
dev | テストコード、開発ツールが配置される |
lib | サードパーティー製のライブラリ、Magento2のライブラリが配置される |
phpserver | ビルトインのphpのサーバが配置される。このサーバはオプション |
pub | 公開フォルダ。画像、静的コンテンツ、エンドポイントのphpプログラム、エラー画面表示のプログラムなど静的ファイルが配置される |
setup | セットアップウィザードが配置される |
var | フルページキャッシュ、ページ以外のキャッシュ、セットアップウィザードの中間成果物、Magento2によって自動生成されたクラス、DI設定のコンパイル結果、圧縮されたテンプレートと、コンパイルされたless、テンポラリ、レポートファイル、ログファイルなどの動的に変更されるファイルが配置される |
vendor | composerでインストールされたモジュールファイルが配置される。composerでMagento2をインストールした場合、appディレクトリではなくこちらにmagento2のファイルも配置される |
今回大きくかわったのは、pubフォルダではないかと思います。Magento1では、アプリケーションのルートフォルダを公開しなければなりませんでしたが、Magento2では、アプリケーションのルートフォルダを公開するか、pubフォルダ以下を公開するかのいずれでも大丈夫になっています。実際の運用をする際には、よりセキュアなpunフォルダ以下を公開するのがよいでしょう。
フォルダの概要(第二階層)
それでは、第一階層で紹介した各フォルダについて詳細に見て行きましょう。 bin、phpserver、vendorフォルダについては特に追加の説明がないので省略しています。
appフォルダ
フォルダ名 | 説明 |
---|---|
app/code | モジュールが配置される |
app/design/frontend | ストアフロントのテーマが配置される |
app/design/adminhtml | 管理画面のテーマが配置される |
app/i18n | 言語パッケージが配置される |
app/etc | 設定ファイルが配置される |
appフォルダの中でmagento1から名前や内容が大きくかわったのはi18nフォルダでしょうかMagento1ではlocaleという名前でした。またモジュールなどの内部構造は大きく変わっています。こちらの内容についてはまた別の機会に説明したいと思います。
devフォルダ
フォルダ名 | 説明 |
---|---|
dev/tests | phpunitのテストコードが配置される |
dev/tools | 開発ツールが配置される。マイグレーションツールなどもここに配置される |
libフォルダ
フォルダ名 | 説明 |
---|---|
lib/internal | サーバサイドのライブラリが配置される。Magentoのコアのライブラリやサードパーティのライブラリも含まれる |
lib/web | クライアントサイドのライブラリが配置される。 |
pubフォルダ
フォルダ名 | 説明 |
---|---|
pub/errors | エラー画面、メンテナンス画面等もこの処理が利用される |
pub/media | 商品画像、ダウンロードファイル、CMSのアップロード画像、テーマのカスタム画像などが配置される |
pub/opt/magento/var | pub/get.phpの設定が配置される |
pub/static/frontend | ストアフロントのスキンとjsが配置される |
pub/static/adminhtml | 管理画面のスキンとjsが配置される |
pubフォルダはMagento2の変更の最も大きなポイントだと思います。 静的ファイルについてはすべてこのpubフォルダ配下にまとまるようになりました。 この変更のおかげでMagento2では比較的簡単にCDN(コンテンツ・デリバリ・ネットワーク)を使えるよになりました。
varフォルダ
フォルダ名 | 説明 |
---|---|
page_cache | フルページキャッシュが配置される |
cache | ページキャッシュを除くキャッシュ可能なオブジェクトのキャッシュが配置される(Redis等のキャッシュストレージを使う場合には空になる) |
composer_home | セットアップウィザードの中間生成物が配置される |
generation | Magento2によって自動生成されたクラスファイルが配置される |
di | すべてのモジュールのコンパイルされたDI設定が配置される |
view_preprocessed | 圧縮されたテンプレートと、コンパイルされたless(less,css,htmlの集合)が配置される |
tmp | テンポラリファイルが配置される |
report | レポートファイルが配置される |
log | ログファイルが配置される |
varフォルダは基本的にはMagento1と同じですが、フルページキャッシュが標準で追加されたこと、自動生成されたクラスやdiの生成結果がキャッシュとは別に追加されるようになりました。
まとめ
早足で見てきましたが、いかがでしたでしょうか。 また機会があれば、モジュールやテーマ、言語パッケージなどのフォルダ構造についても解説してみたいと思います。