0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

サンプルデータを使用するため、あえてMagento2.3.5をインストールする

Last updated at Posted at 2022-11-25

Magentoを勉強し始めたのですが、どうやらMagento2.3とMagento2.4の間にインストール方法が変わったらしいです(サンプルデータを確認したかったのですが2.4ではうまくいきませんでした)。なのであえてちょっと古いMagento2.3.5をインストールします。公式の2.3系Installation Guideをもとに作業を進めていきます。

準備作業

必要なソフトウェア

image.png

以下が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で展開するときにメモリを結構消費するので、以下の構成としました。

image.png
image.png

お約束の

sudo apt update; sudo apt upgrade

を行っておきます。

Apache

sudo apt install apache2

動作確認まで行っておきます。
image.png

/etc/apache2/sites-available/000-default.confの更新

赤枠の部分を追加します。この設定を行っておかないとMagento2が動きません。

image.png

        <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

以下の画面が表示されるので順次選択します。
image.png
image.png
また以下の画面に戻るので、「OK」を選択します。
image.png

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*

image.png

インストール出来たら、コマンドラインからログインできるか確認してみます。

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.namenode.nameの文頭の#を外し、node.nameを'My First Node'に変更しました。

image.png

次にnetwork.hosthttp.portの行を有効にします(Un-commentする)。network.hostはどこからでもアクセスできるように0.0.0.0に変更します(Google cloudなのでこうしておかないとローカルPCからアクセスできない)
image.png

また、以下も変更します。

image.png

elasticsearch.service

sudo vi /usr/lib/systemd/system/elasticsearch.service

TimeoutStartSec900に変更。
image.png

ここまでの設定が終わったら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.

中身が空っぽですが表示されました。

image.png

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を付与すると管理画面に入ることができます。

image.png

サンプルデータのインストール

これを行うためにあえてMagento 2.3.5を入れました。できるでしょうか。

developer modeへの変更

image.png
とあるので、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

結果

こんな画面が出ます。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?