Magentoを勉強し始めたのですが、どうやらMagento2.3とMagento2.4の間にインストール方法が変わったらしいです(サンプルデータを確認したかったのですが2.4ではうまくいきませんでした)。なのであえてちょっと古いMagento2.3.5をインストールします。公式の2.3系Installation Guideをもとに作業を進めていきます。
準備作業
必要なソフトウェア
以下がMagento以外にも必要となります(出展:Adobe Version2.3資料
- Composer(1)
- Elasticsearch(7.6)
- MySQL(5.6, 5.7)
- PHP(7.2, 7.3)
- Apache(2.4)
サーバの準備
手元に適当なLinuxサーバがなかったので、Google Cloud上に構築します。Composerで展開するときにメモリを結構消費するので、以下の構成としました。
お約束の
sudo apt update; sudo apt upgrade
を行っておきます。
Apache
sudo apt install apache2
/etc/apache2/sites-available/000-default.confの更新
赤枠の部分を追加します。この設定を行っておかないとMagento2が動きません。
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
Rewrite の有効化
Magento2を動作させるために設定します。。mod_rewriteを有効にします。
~$ sudo a2enmod
Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_fcgi authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cern_meta cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor http2 ident imagemap include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_prefork mpm_worker negotiation php8.1 proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_hcheck proxy_html proxy_http proxy_http2 proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
Which module(s) do you want to enable (wildcards ok)?
rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2
Apacheを再起動します。
sudo systemctl restart apache2
MySql
バージョンをきちんと指定してインストールしたいので、UbuntuでMySQL 5.7をインストールする方法を参照して作業を進めます。
$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
以下の画面が表示されるので順次選択します。
また以下の画面に戻るので、「OK」を選択します。
aptキーを追加します。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
sudo apt update
します。
$ sudo apt update
Repogitoryが追加されたか確認します。
$ sudo apt-cache policy mysql-server
mysql-server:
Installed: (none)
Candidate: 5.7.40-1ubuntu18.04
Version table:
5.7.40-1ubuntu18.04 500
500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages
5.7.40-0ubuntu0.18.04.1 500
500 http://asia-northeast1.gce.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
5.7.21-1ubuntu1 500
500 http://asia-northeast1.gce.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
5.7をインストールします。途中、Rootのパスワードを聞かれます。
$ sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*
インストール出来たら、コマンドラインからログインできるか確認してみます。
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.40 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MySQL上のDatabase設定、他
前の章から引き継ぎ、MySQLのなかでmagent2
というデータベースを作成します。
CREATE DATABASE magento2;
magentip
というユーザを作成します。ここでmagentip
のパスワードも設定します。
CREATE USER 'magentip'@'localhost' IDENTIFIED BY '<your_pssword>';
ALTER USER 'magentip'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your_pssword>';
magentip
に権限付与します。
GRANT ALL PRIVILEGES ON *.* TO 'magentip'@'localhost' WITH GRANT OPTION;
権限を変更したのでFLUSH PRIVILEGES
してからコンソールを抜けます。
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
PHP
Magento2.3.5で必要なPHPは7.2, 7.3です。apt install でインストールできるPHPのバージョンを確認します。
$ sudo apt-cache policy php
php:
Installed: (none)
Candidate: 1:7.2+60ubuntu1
Version table:
1:7.2+60ubuntu1 500
500 http://asia-northeast1.gce.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
よってそのままインストールします。
$ sudo apt install php
(途中略)
php -v
PHP 7.2.24-0ubuntu0.18.04.15 (cli) (built: Nov 2 2022 09:09:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.15, Copyright (c) 1999-2018, by Zend Technologies
7.2がインストールされました。
必要なモジュールをインストールします。
sudo apt install php7.2-bcmath php7.2-intl php7.2-soap php7.2-zip php7.2-gd php7.2-curl php7.2-cli php7.2-xml php7.2-xmlrpc php7.2-gmp php7.2-common php7.2-mbstring php7.2-mysql
Elasticsearch
あとで気づいたのですが、2.3.5では不要でした。
javaのインストール
まずjava(openjdkのほう)をインストールします。
以下のコマンドでインストールできるopenjdkのバージョンを確認します。
$ sudo apt search "^openjdk.*jdk$"
Sorting... Done
Full Text Search... Done
openjdk-11-jdk/bionic-updates,bionic-security 11.0.17+8-1ubuntu2~18.04 amd64
OpenJDK Development Kit (JDK)
openjdk-17-jdk/bionic-updates,bionic-security 17.0.5+8-2ubuntu1~18.04 amd64
OpenJDK Development Kit (JDK)
openjdk-8-jdk/bionic-updates,bionic-security 8u352-ga-1~18.04 amd64
OpenJDK Development Kit (JDK)
openjdk-17-jdk
がインストール可能です。
sudo apt update
sudo apt-get install openjdk-17-jdk
Javaのバージョンを確認します。
$ java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu118.04)
OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu118.04, mixed mode, sharing)
Elasticsearchのインストール
Elasticsearchのインストールを開始します。
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Elastic-7.x.listをsource.list.d
に加えます(そういう意味らしい)。
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Elasticsearchの本体をインストールします。
sudo apt update
sudo apt install elasticsearch
Elasticsearchをサービスとして登録します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable elasticsearch.service
Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.
elasticsearchの設定
以下ファイルの設定を行います(この辺りはこちらのサイトより引用)。
- elasticsearch.yml
- elasticsearch.service
elasticsearch.yml
sudo vi /etc/elasticsearch/elasticsearch.yml
cluster.nameとnode.nameの文頭の#を外し、node.nameを'My First Node'に変更しました。
次にnetwork.hostとhttp.portの行を有効にします(Un-commentする)。network.hostはどこからでもアクセスできるように0.0.0.0に変更します(Google cloudなのでこうしておかないとローカルPCからアクセスできない)
また、以下も変更します。
elasticsearch.service
sudo vi /usr/lib/systemd/system/elasticsearch.service
ここまでの設定が終わったらelasticserchサービスを開始します(コマンドプロンプトが返ってくるまで1~2分必要です)。
$ sudo systemctl daemon-reload
$ sudo systemctl start elasticsearch.service
$ sudo systemctl start elasticsearch.service
curlで http://localhost:9200 にアクセスして動作確認します。
$ curl -X GET 'http://localhost:9200'
{
"name" : "My First Node",
"cluster_name" : "my-application",
"cluster_uuid" : "_na_",
"version" : {
"number" : "7.17.7",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "78dcaaa8cee33438b91eca7f5c7f56a70fec9e80",
"build_date" : "2022-10-17T15:29:54.167373105Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
elasticsearchが動いていることを確認できました。
Magento
composerを使用してMagentoをダウンロードします。
composerのインストール
インストールに必要なファイルを取得します。
curl -sS https://getcomposer.org/installer -o composer-setup.php
カレントディレクトリはこういう状態になります。
~/tmp$ curl -sS https://getcomposer.org/installer -o composer-setup.php
:~/tmp$ ls
composer-setup.php
Magento 2.3.5ではcomposer 1が必要なのでオプション --1
を付けます。
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer --1
All settings correct for using Composer
Warning: You forced the install of Composer 1.x via --1, but Composer 2.x is the latest stable version. Updating to it via composer self-update --stable is recommended.
Downloading...
Composer (version 1.10.26) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
ちょっと怒られているけどインストール完了です。バージョンを確認します。
p$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.26 2022-04-13 16:39:56
Magento2.3.5
Magentoのアクセスキー
この後MagentoのAccess Keyが必要なのであらかじめ取得しておきます(ご本尊のAdobeのページに取得方法が記載されています)。取得したアクセスキーは
-Username: public Key
-Password: private Key
として使用します。
Magentoユーザ作成
このあたりから、参照する記事によって記載している内容が異なってきます。ここからはこちらの記事を参考にしています。
MagentoのCLI操作やCRON用のユーザを用意します(パスワードを聞かれるので用意しておいてください)。
$ sudo adduser magento_user
Adding user `magento_user' ...
Adding new group `magento_user' (1003) ...
Adding new user `magento_user' (1002) with group `magento_user' ...
Creating home directory `/home/magento_user' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for magento_user
Enter the new value, or press ENTER for the default
Full Name []: Magento2 User
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
デフォルトグループをwww-dataグループにします。
sudo usermod -g www-data magento_user
一応、sudoグループにも含めておきます。
sudo adduser magento_user sudo
Magento2.3.5のダウンロード
以降は先ほど作成したmagento_userで操作するのでsuコマンドで切り替えます。
su - magento_user
DocumentRootフォルダの所有者をmagento_userにします。DocumentRootは特に変更していないので/var/www/htmlです。
$ sudo chown magento_user:www-data /var/www/html -R
$ ls -all
total 20
drwxr-xr-x 2 magento_user www-data 4096 Nov 14 06:40 .
drwxr-xr-x 3 root root 4096 Nov 14 06:40 ..
-rw-r--r-- 1 magento_user www-data 10918 Nov 14 06:40 index.html
Magento2はhtmlコンテンツとしてインストールするので、インストールディレクトリにカレントを変更します(以下では/var/www/html直下に入れる)。なお、中身が空でないとインストール中エラーになるので、もともと入っていたindex.htmlは消します。
$ cd /var/www/html
$ rm index.thml
$ $ ls -all
total 8
drwxr-xr-x 2 magento_user www-data 4096 Nov 14 08:13 .
drwxr-xr-x 3 root root 4096 Nov 14 06:40 ..
ダウンロードを開始します。結構時間がかかります。
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.3.5 .
Creating a "magento/project-community-edition=2.3.5" project at "./"
Installing magento/project-community-edition (2.3.5)
- Installing magento/project-community-edition (2.3.5): Loading from cache
Created project in /var/www/html/.
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies (including require-dev)
Package operations: 471 installs, 0 updates, 0 removals
- Installing laminas/laminas-dependency-plugin (1.0.4): Downloading (100%)
- Installing psr/container (1.1.1): Downloading (100%)
(途中略)
Writing lock file
Generating autoload files
75 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
PHP CodeSniffer Config installed_paths set to ../../codeception,../../magento/magento-coding-standard,../../phpcompatibility/php-compatibility
Magentoのセットアップ
セットアップします。
$ bin/magento setup:install \
--base-url="http://<your url>/" \
--db-host=localhost \
--db-name=magento2 \
--db-user=magentip \
--db-password="<your password>"
Starting Magento installation:
File permissions check...
[Progress: 1 / 992]
Required extensions check...
[Progress: 2 / 992]
Enabling Maintenance Mode...
[Progress: 3 / 992]
Installing deployment configuration..
(途中略)
[Progress: 991 / 992]
Write installation date...
[Progress: 992 / 992]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_o9ymoa
Nothing to import.
最後にでている /admin_o9ymoa
がConfigページへのアクセス先となります(ランダムな文字列が表示される)。
ファイルのPermission変更
DocumentRoot配下に作成されたフォルダ・ファイルのオーナーとパーミッションを変更します。
$ cd /var/www/html
$ sudo chown -R magento_user:www-data .
$ find . -type d -exec chmod 770 {} \;
$ find . -type f -exec chmod 660 {} \;
$ chmod 770 bin/magento
Deploy
これを行わないとMagento上のコンテンツがコンパイルされません。
$ php bin/magento deploy:mode:set production
Enabling maintenance mode
Starting compilation
Compilation was started.
%message% 0/8 [>---------------------------] 0% < 1 sec 76.5 MiBProxies code generation... 0/8 [>---------------------------] 0% < 1 sec 76.5 MiB
Proxies code generation... 1/8 [===>------------------------] 12% 1 sec 78.5 MiB
Repositories code generation... 1/8 [===>------------------------] 12% 1 sec 78.5 MiB
Repositories code generation... 2/8 [=======>--------------------] 25% 16 secs 205.0 MiB
Service data attributes generation... 2/8 [=======>--------------------] 25% 16 secs 205.0 MiB
Application code generator... 3/8 [==========>-----------------] 37% 16 secs 205.0 MiB
Application code generator... 4/8 [==============>-------------] 50% 24 secs 227.0 MiB
Interceptors generation... 4/8 [==============>-------------] 50% 24 secs 227.0 MiB
Interceptors generation... 5/8 [=================>----------] 62% 38 secs 257.0 MiB
Area configuration aggregation... 5/8 [=================>----------] 62% 38 secs 257.0 MiB
Area configuration aggregation... 6/8 [=====================>------] 75% 45 secs 349.0 MiB
Interception cache generation... 6/8 [=====================>------] 75% 45 secs 349.0 MiB
Interception cache generation... 7/8 [========================>---] 87% 51 secs 349.0 MiB
App action list generation... 7/8 [========================>---] 87% 51 secs 349.0 MiB
App action list generation... 8/8 [============================] 100% 51 secs 349.0 MiB
Generated code and dependency injection configuration successfully.
Compilation complete
Starting deployment of static content
Deploy using quick strategy
frontend/Magento/blank/en_US 2345/2345 ============================ 100% 7 secs
adminhtml/Magento/backend/en_US 2438/2438 ============================ 100% 7 secs
frontend/Magento/luma/en_US 2362/2362 ============================ 100% 7 secs
Execution time: 25.704952001572
Deployment of static content complete
Disabling maintenance mode
Enabled production mode.
中身が空っぽですが表示されました。
Magento adminユーザの追加
Magento2のAdmin関係の設定をまだ行っていないため、設定を追加します。
$ $ php bin/magento admin:user:create
Admin user: admin
Admin password: <admin-password>
Admin email: <your-e-mail-address>
Admin first name: <your-first-name>
Admin last name: <your-last-name>
Created Magento administrator user named admin
管理画面
サイトのURLに先ほど出てきた管理画面用Path /admin_o9ymoa
を付与すると管理画面に入ることができます。
サンプルデータのインストール
これを行うためにあえてMagento 2.3.5を入れました。できるでしょうか。
developer modeへの変更
とあるので、developer modeに変更します。まず今のmodeを確認します。なおカレントディレクトリはMagento2がインストールされているディレクトリです。
$ php bin/magento deploy:mode:show
Current application mode: production. (Note: Environment variables may override this value.)
developer modeに変更します。こちらの手順に従います。
$ rm -rf ./generated/metadata/* ./generated/code/*
$ php bin/magento deploy:mode:set developer
$ php bin/magento deploy:mode:show
Current application mode: developer. (Note: Environment variables may override this value.)
切り替わりました。
サンプルデータのDeploy
$ php bin/magento sampledata:deploy
<warning>Warning from repo.magento.com: You haven't provided your Magento authentication keys. For instructions, visit https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html</warning>
Authentication required (repo.magento.com):
Username: <your public key>
Password: <your private key>
Do you want to store credentials for repo.magento.com in /var/www/html/var/composer_home/auth.json ? [Yn] Y
<warning>Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/</warning>
Info from https://repo.packagist.org: #StandWithUkraine
./composer.json has been updated
Loading composer repositories with package information
<warning>Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/</warning>
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies (including require-dev)
(途中省略)
Writing lock file
Generating autoload files
75 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
PHP CodeSniffer Config installed_paths set to ../../magento/magento-coding-standard,../../phpcompatibility/php-compatibility,../../codeception
続いて、以下のコマンドを発行します。
$ php ./bin/magento setup:upgrade
Cache types config flushed successfully
Cache cleared successfully
File system cleanup:
(途中省略)
Module 'Yotpo_Yotpo':
Enabling caches:
Current status:
Array
(
[layout] => 1
[block_html] => 1
[full_page] => 1
)
Nothing to import.
うまくいったようです。
cronの設定
本当はMagento2セットアップ時に行うのですが、前に実施したときサンプルデータインストール時にcron関係でエラーが出たのであえてここで行っています。
こちらの記事を参考にしました。
magento_userのcromとして登録するので、カレントユーザをmagento_userにしてから実行する必要があります。
$ cd /var/www/html/
$ php ./bin/magento cron:install --force
Crontab has been generated and saved
内容を確認してみます。
$ crontab -l
#~ MAGENTO START 69dd2b02e1f3a65918182048ea4e29979a849d8942e8f53ed20a4bf10e529b36
* * * * * /usr/bin/php8.1 /var/www/html/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/var/log/magento.cron.log
#~ MAGENTO END 69dd2b02e1f3a65918182048ea4e29979a849d8942e8f53ed20a4bf10e529b36