目次
はじめに
OroCommerceは、B2B向けに設計されたオープンソースのeコマースプラットフォームです。
今回は、私がいつもMagento2の環境構築ツールとして使用しているWardenでOroCommerce用のDocker Imageが追加されていたため、「WardenでOroCommerceの環境構築」をしてみました。
本記事執筆時点ではまだ開発中のようなので、色々と補完する部分は有りましたが、構築には成功したので備忘録として残そうと思います。
環境
Version | |
---|---|
Warden | 0.15.0 |
OroCommerce | 6.0.3 |
Wardenのインストール
Wardenのインストールに関しては、WSL2+WardenでMagento2の環境構築をする方法の備忘録で紹介しています。
OroCommerceの環境構築
1.プロジェクトの初期化
warden env-init [projectname] [environment type]
[projectname]:プロジェクトの名前を自由に決めます。(今回は「oro」)
[environment type]:ドキュメントにあるタイプの中から一つ選びます。執筆時点では「OroCommerce」がまだ無いため、「Symfony」をベースに作成します。
2.環境設定
.envファイルが生成されるので、各種ミドルウェアのバージョン等を設定します。
今回OroCommerce 6.0.3用に作成した.envファイルは下記の通りです。
WARDEN_ENV_NAME=oro
WARDEN_ENV_TYPE=symfony
WARDEN_WEB_ROOT=/src
TRAEFIK_DOMAIN=oro.test
TRAEFIK_SUBDOMAIN=app
WARDEN_DB=1
WARDEN_REDIS=1
WARDEN_RABBITMQ=0
WARDEN_ELASTICSEARCH=0
WARDEN_ELASTICHQ=0
WARDEN_VARNISH=0
ELASTICSEARCH_VERSION=8.11
MYSQL_DISTRIBUTION=postgres
MYSQL_DISTRIBUTION_VERSION=16
NODE_VERSION=20.10.0
COMPOSER_VERSION=2
PHP_VERSION=8.3
WARDEN_SVC_PHP_VARIANT=-orocommerce
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.12
REDIS_VERSION=7.2
VARNISH_VERSION=7.5
OroCommerce用のイメージを使用するために、「WARDEN_SVC_PHP_VARIANT」を指定しています。将来的にはOroCommerce用のEnvironment Typeが作られると思います。
RabbitMQやElasticSearchは、Enterprise Editionでしか使用できないため、今回はオフにしています。(今回はCommunity Editionをインストールします。)
3.各種コンテナ調整
.warden/warden-env.ymlファイルを作成し、下記の通り記述します。
services:
nginx:
volumes:
- ./.warden/nginx/orocommerce.conf:/etc/nginx/available.d/orocommerce.conf
environment:
NGINX_TEMPLATE=orocommerce.conf
db:
environment:
- POSTGRES_DB=oro
- POSTGRES_USER=oro
- POSTGRES_PASSWORD=oro
.warden/nginx/orocommerce.confファイルを作成し、下記の通り記述します。
location / {
try_files $uri /index.php$is_args$args;
}
location /ws {
proxy_pass http://php-fpm:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
proxy_send_timeout 86400;
}
location ~ ^/(index|index_dev|config|install)\.php(/|$) {
fastcgi_pass $fastcgi_backend;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_buffers 64 64k;
fastcgi_buffer_size 128k;
internal;
}
location ~* ^[^(\.php)]+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
access_log off;
expires 1h;
add_header Cache-Control public;
}
gzip on;
gzip_proxied any;
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/xml+rss
image/svg+xml;
gzip_vary on;
# Deny access to other "sensitive" locations / scripts
location ~* (\.php$|\.htaccess$|\.git) {
deny all;
}
location /ws {}
の部分を追加しています。
WebSocketを使用して様々な通知をリアルタイムで受け取る機能がありますので、そのための設定です。
dbにはPostgreSQL用の初期設定を追加しています。
4.SSL証明書の作成
warden sign-certificate oro.test
5.プロジェクトの環境を立ち上げ、php-fpmコンテナに入る
warden env up
warden shell
6.OroCommerce Community Edition(6.0.3)をダウンロード
composer create-project oro/commerce-crm-application . 6.0.3
7.パラメータ調整
.env-appをコピーし、.env-app.localとして下記設定を追加します。
ORO_DB_URL=postgres://oro:oro@db:5432/oro?sslmode=disable&charset=utf8&serverVersion=16
ORO_MAILER_DSN=smtp://mailhog:1025
ORO_WEBSOCKET_SERVER_DSN=//0.0.0.0:8080
ORO_WEBSOCKET_FRONTEND_DSN=//*:443/ws
ORO_WEBSOCKET_BACKEND_DSN=tcp://127.0.0.1:8080
ORO_REDIS_URL=redis://redis:6379
ORO_SESSION_DSN=${ORO_REDIS_URL}/0
# ORO_SESSION_DSNはORO_REDIS_URLの下に移動させる必要があります。
redisの設定を有効にするため、下記コマンドを実行します。
composer set-parameters redis
8.OroCommerceをインストールする
php bin/console oro:install --env=prod --timeout=2000
Application URL (http://localhost): https://app.oro.test
9.php-fpm再起動
SupervisorでMessage QueueとWebSocket Serverが自動起動していますが、パラメータを調整するまではエラーで落ちているかと思います。一度コンテナを再起動しておきましょう。
warden env restart php-fpm
10.ブラウザで表示確認
https://app.oro.test (フロントエンド)
https://app.oro.test/admin (管理画面)
おわりに
WardenでOroCommerce用のEnvironment Typeが開発されればもっとスムーズにいくとは思いますが、ひとまず環境構築ができました。
Wardenの更新や、設定値等の調査が進み次第、記事もアップデートしていこうと思います。