すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ECSインスタンスでMagento eコマースWebサイトを手動で構築する

最終更新日:Aug 29, 2024

MagentoはPHPで書かれたオープンソースのeコマースプラットフォームです。 その拡張可能でモジュラーアーキテクチャは、大規模および中規模のWebサイトを構築するのに最適です。 Magentoは5.6から7.1までのPHPバージョンをサポートしています。 MySQLデータベースを使用してデータを保存します。 このトピックでは、CentOS 7オペレーティングシステムを実行するElastic Compute Service (ECS) インスタンス上にMagento eコマースWebサイトを構築する方法について説明します。

前提条件

  • Alibaba Cloud アカウントが作成済みであること。 Alibaba Cloudアカウントを作成するには、[Alibaba Cloudに登録] ページに移動します。

  • ECSインスタンスのセキュリティグループにインバウンドルールが追加され、ポート80と3306のトラフィックが許可されます。 詳細については、「セキュリティグループルールの追加」をご参照ください。

    説明

    ほとんどのクライアントはLAN内に配置され、プライベートIPアドレスをパブリックIPアドレスにマッピングして外部リソースと通信できます。 したがって、ipconfigまたはifconfigコマンドによって返されるIPアドレスは、クライアントの実際のパブリックIPアドレスではない可能性があります。 クライアントがMagento Webサイトの構築後にアクセスできない場合は、クライアントのパブリックIPアドレスを確認します。

    ルールの方向

    Action

    プロトコルタイプ

    ポート範囲

    権限付与タイプ

    権限付与オブジェクト

    インバウンド

    許可

    HTTP (80)

    80/80

    IPv4 CIDR block

    CIDRブロックには、Magento Webサイトにアクセスする必要があるすべてのクライアントのパブリックIPアドレスが含まれています。 CIDRブロックはコンマ (,) で区切ります。

    すべてのクライアントがMagento Webサイトにアクセスできるようにするには、承認オブジェクトとして0.0.0.0/0を指定します。

    インバウンド

    許可

    MySQL (3306)

    3306/3306

    IPv4 CIDR block

    CIDRブロックには、MySQLデータベースサービスにアクセスする必要があるすべてのクライアントのパブリックIPアドレスが含まれています。 CIDRブロックはコンマ (,) で区切ります。

    すべてのクライアントがサービスにアクセスできるようにするには、承認オブジェクトとして0.0.0.0/0を指定します。

背景情報

このトピックでは、次の設定を持つECSインスタンスが使用されます。

  • インスタンスタイプ: ecs.c6.large

  • オペレーティングシステム: CentOS 7.2 64ビットパブリックイメージ

  • CPU: 2 vCPU

  • メモリ: 4 GiB

    説明

    Magentoサーバーを構築する場合、選択したインスタンスタイプのメモリは少なくとも2 GiBである必要があります。

  • ネットワークタイプ:Virtual Private Cloud (VPC)

  • IPアドレス: パブリックIPアドレス

サンプル手順では、次のソフトウェアバージョンが使用されます。

  • Apache HTTPサーバー: 2.4.6

  • MySQL: 5.7

  • PHP: 7.0

  • コンポーザ: 1.8.5

  • Magento: 2.1

前のバージョンとは異なるバージョンのソフトウェアを使用している場合は、コマンドとパラメーター設定を調整する必要があります。

手順

次の手順を実行して、Alibaba Cloud ECSインスタンスにMagento e-commerce Webサイトを構築します。

手順1: Apache HTTPサーバーのインストールと設定

  1. Apacheをインストールします。

    1. 次のコマンドを実行してApacheをインストールします。

      yum install httpd -y
    2. 次のコマンドを実行して、Apacheがインストールされているかどうかを確認します。

      httpd -v

      次のコマンド出力は、Apacheがインストールされていることを示します。 magento_1

  2. Apacheを設定します。

    1. 次のコマンドを実行して、Apacheの設定ファイルを開きます。

      vim /etc/httpd/conf/httpd.conf
    2. LoadModule rewrite_module modules/mod_rewrite.soInclude conf.mo dules.d/*.confの下に追加します。 次の手順を実行します。

      1. Include conf.mo dules.d/*.conf行の下の行の先頭にポインターを移動します。

      2. Iキーを押して編集モードに入ります。

      3. LoadModule rewrite_module modules/mod_rewrite.soと入力します。

      追加されたコンテンツを次の図に示します。 local_module

    3. 次のコンテンツのAllowOverride NoneAllowOverride Allに置き換えます。

      # AllowOverride controls what directives may be placed in .htaccess files.
      # It can be "All", "None", or any combination of the keywords:
      # Options FileInfo AuthConfig Limit
      #
      # Add a number sign (#) at the beginning of the line to comment out this line.
      #AllowOverride None
      
      # Add the following content:
      AllowOverride All

      置換結果を次の図に示します。 allowoverride_all

    4. [Esc] キーを押して :wqと入力し、enterキーを押して設定ファイルを保存して閉じます。

  3. 次のコマンドを実行してApacheを起動します。

    systemctl start httpd
  4. 次のコマンドを実行して、システム起動時にApacheを実行するように設定します。

    systemctl enable httpd

ステップ2: MySQLのインストールと設定

  1. MySQLをインストールします。

    1. 次のコマンドを実行して、MySQL YUMリポジトリを追加します。

      rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
    2. 次のコマンドを実行してMySQLをインストールします。

      yum -y install mysql-community-server -- nogpgcheck
  2. 次のコマンドを実行してMySQLを起動します。

    systemctl start mysqld
  3. 次のコマンドを実行して、システム起動時にMySQLを実行できるようにします。

    systemctl enable mysqld
  4. MySQLを設定します。

    1. 次のコマンドを実行して、/var/log/mysqld.logファイルを確認し、rootユーザーの初期パスワードを取得して記録します

      grep 'temporary password' /var/log/mysqld.log

      次のコマンド出力が返されます。

      2016-12-13T14:57:47.535748Z 1 [Note] A temporary password is generated for root@localhost: p0/G28g>lsHD
      説明

      この初期パスワードは、rootユーザーのパスワードをリセットするときに使用します。

    2. 次のコマンドを実行して、MySQLのセキュリティ設定を構成します。

      mysql_secure_installation

      次の操作を実行します。

      1. rootユーザーのパスワードを設定します。

        Enter password for user root: # Enter the initial password that you obtained in the previous step.
        The 'validate_password' plugin is installed on the server.
        The subsequent steps will run with the existing configuration of the plugin.
        Using existing password for root.
        Estimated strength of the password: 100 
        Change the password for root ? (Press y|Y for Yes, any other key for No) : Y # Enter Y to change the password of the root user.
        New password: # Enter a new password that is 8 to 30 characters in length. The password must contain uppercase letters, lowercase letters, digits, and special characters. Supported special characters include ( ) ` ~ ! @ # $ % ^ & * - + = | { } [ ] : ; ‘ < > , . ? /
        Re-enter new password: # Enter the new password again.
        Estimated strength of the password: 100 
        Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
      2. 匿名ユーザーを削除するには、Yと入力します。

        By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
        Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y  # Enter Y to delete the anonymous user.
        Success.
      3. ルートユーザーによるリモートアクセスを拒否するには、Yと入力します。

        Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y # Enter Y to deny remote access by the root user.
        Success.
      4. Yと入力して、テストデータベースとデータベースのアクセス許可を削除します。

        Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y # Enter Y to delete the test database and the access permissions on the database.
        - Dropping test database...
        Success.
      5. 権限テーブルをリロードするには、Yと入力します。

        Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y # Enter Y to reload privilege tables.
        Success.
        All done!

      詳細については、「MySQLドキュメント」をご参照ください。

ステップ3: PHPのインストールと設定

  1. PHPをインストールします。

    1. 次のコマンドを実行して、IUSリポジトリを追加します。

      yum

      install \
      https:// repo.ius.io/ius-release-el7.rpm \
      https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
    2. 次のコマンドを実行してWebtaticリポジトリを追加します。

      rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    3. 次のコマンドを実行して、PHP 7と必要なすべての拡張機能をインストールします。

      yum -y install php70w php70w-pdo php70w-mysqlnd php70w-opcache php70w-xml php70w-gd php70w-mcrypt php70w-devel php70w-intl php70w-mbstring php70w-bcmath php70w-json php70w-iconv
    4. 次のコマンドを実行して、PHPのバージョンを確認します。

      php -v

      次のコマンド出力は、PHPがインストールされていることを示します:

      PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )
      Copyright (c) 1997-2017 The PHP Group
      Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
          with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies                        
  2. PHPを設定します。

    1. 次のコマンドを実行して、PHP設定ファイルを開きます。

      vim /etc/php.ini
    2. ポインタを最後の行の末尾に移動します。 次の操作を実行します。

      1. :$ と入力し、Enterキーを押してポインタをファイルの最後の行に移動します。

      2. $キーを押してポインタを行末に移動します。

    3. Iキーを押して編集モードに入ります。

    4. ファイルの末尾にメモリ制限とタイムゾーンの設定を追加します。

      ; The maximum memory value allowed for the PHP script. You can increase or decrease the memory limit.
      memory_limit = 1024M
      ; Set the time zone to Shanghai.
      date.timezone = Asia/Shanghai

      以下の図に結果を示します。 magento_2

    5. [Esc] キーを押して :wqと入力し、enterキーを押して設定ファイルを保存して閉じます。

    6. Apacheを再起動します。

      systemctl restart httpd

ステップ4: Magentoデータベースを作成する

  1. 次のコマンドを実行して、rootユーザーのアカウントとパスワードでMySQLにログインします。

    mysql -u root -p
  2. 次のコマンドを実行して、magentoデータベースを作成します。

    mysql> CREATE DATABASE magento; # Replace magento with the name of database that you want to create.
  3. 次のコマンドを順番に実行して、magentoデータベースのユーザーを作成します。

    mysql> GRANT ALL ON magento.* TO <YourUser>@localhost IDENTIFIED BY '<YourPass>'; # Replace <YourUser> with the account that you want to create and <YourPass> with the password that you want to set.
    mysql> FLUSH PRIVILEGES;

    たとえば、magentoUserという名前のアカウントを作成し、そのパスワードをmagentoUser1 @ 3に設定するには、次のコマンド

    mysql> GRANT ALL ON magento.* TO magentoUser@localhost IDENTIFIED BY 'magentoUser1@3';
    mysql> FLUSH PRIVILEGES;
  4. Enter exitを入力し、Enterキーを押してMySQLを終了します。

  5. オプション: 新しいMagentoデータベースとアカウントが利用可能かどうかを確認します。 次の手順を実行します。

    1. 次のコマンドを実行して、新しいアカウントとパスワードでMySQLにログインします。

      mysql -u <YourUser> -p   # Replace <YourUser> with the account that you created.
    2. 次のコマンドを実行して、新しいmagentoデータベースを表示します。

      mysql> show databases;
      +--------------------+
      | Database           |
      +--------------------+
      | information_schema |
      | magento            |
      +--------------------+
      2 rows in set (0.00 sec)
    3. 次のコマンドを実行し、Enterキーを押してMySQLを終了します。

      mysql> exit

ステップ5: Composerのインストールと設定

ComposerはPHPの依存関係管理ツールです。 Composerは、プロジェクトの基礎として使用されるコードリポジトリを識別できます。 プロジェクトの依存コードリポジトリをインストールするためにも使用できます。

  1. 次のコマンドを実行してComposerをインストールします。

    curl -sS https://getcomposer.org/installer | php
  2. 次のコマンドを実行してComposerを設定します。

    mv /root/composer.phar /usr/bin/composer
  3. composer -vコマンドを実行して、Composerのバージョンを確認します。

    次のコマンド出力は、Composerがインストールされていることを示します。

      / ____/___  ____ ___  ____  ____  ________  _____
     / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
    / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
    \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                        /_/
    Composer version 1.8.5 2019-04-09 17:46:47
                            
    説明

    最新のComposerバージョンはMagentoと互換性がありません。 したがって、Magentoと互換性のあるバージョンのComposerをインストールする必要があります。 次のコマンドを実行して、最新のComposerバージョンをMagentoと互換性のあるComposer 1.8.5などのバージョンに変換します。

    composer self-update 1.8.5

ステップ6: Magentoのインストールと設定

さまざまな方法でMagentoをインストールし、サンプルデータをインストールするかどうかを判断できます。

  • テスト目的でのみMagentoをインストールする場合は、サンプルデータをインストールできます。

  • 本番向けにMagentoをインストールする場合は、Magentoをインストールして最初から設定することをお勧めします。

この例では、Gitを使用してMagentoをダウンロードし、Composerを使用してMagentoをインストールします。

  1. ダウンロードMagento.

    1. 次のコマンドを実行してGitをインストールします。

      yum -y install git
    2. webサーバーのデフォルトのルートディレクトリに移動します。

      cd /var/www/html/
    3. ダウンロードMagento.

      git clone https://github.com/magento/magento2.git
  2. オプション: 次のコマンドを実行して、Magentoを安定バージョンに切り替えます。

    cd magento2&git checkout tags/2.1.0 -b 2.1.0

    次のコマンド出力が返されます。

    Switched to a new branch '2.1.0'

    に切り替え

    説明

    デフォルトでは、Gitは最新のMagentoバージョンをダウンロードしてインストールします。 本番環境でMagentoを使用する場合は、Magentoを安定したバージョンに切り替えることを推奨します。 そうしないと、将来Magentoをアップグレードしてインストールするときに問題が発生する可能性があります。

  3. 次のコマンドを実行して、インストールファイルをwebサーバーのルートディレクトリに移動します。

    shopt -s dotglob nullglob && mv /var/www/html/magento2/* /var/www/html/ && cd ..
    説明

    このコマンドを実行すると、https:// <ECSインスタンスのパブリックIPアドレス> を使用してMagento Webサイトにアクセスできます。 それ以外の場合は、https:// <ECSインスタンスのパブリックIPアドレス>/magento2を使用してのみ、Magento Webサイトにアクセスできます。

  4. 次のコマンドを順番に実行して、Magentoファイルに適切な権限を設定します。

    chown -R :apache /var/www/html

    find /var/www/html -type f -print0 | xargs -r0 chmod 640

    find /var/www/html -type d -print0 | xargs -r0 chmod 750

    chmod -R g + w /var/www/html /www/html/{pub,var}

    chmod -R g + w /var/www/html/{app/etc,vendor}

    chmod 750 /var/www/html/bin/magento
  5. composer installコマンドを実行してMagentoをインストールします。

手順7: Magentoクライアントの設定

  1. ブラウザを開きます。

  2. ブラウザーのアドレスバーに、http:// <ECSインスタンスのパブリックIPアドレス> と入力します。

    次のページは、Magentoがインストールされていることを示します。 magento_3

  3. [Agree and Setup Magento] をクリックしてMagentoの設定を開始します。 次の手順を実行します。

    1. 準備状況を確認します。

      1. [準備チェックの開始] をクリックします。

      2. チェックが完了したら、[次へ] をクリックします。

      magento-check

    2. データベースを追加します。

      1. 作成したデータベースのアカウントとパスワードを入力します。 この例では、ユーザーアカウントはmagentoUserで、パスワードはmagentoUser1 @ 3です。

      2. 作成したデータベースの名前を入力します。 この例では、データベース名はmagentoです。

      3. [次へ] をクリックします。

      config-db

    3. webアクセスの設定を完了し、[次へ] をクリックします。

      config-web

    4. カスタムストア情報を入力し、[次へ] をクリックします。

    5. 管理者アカウント情報を入力し、[次へ] をクリックします。

    6. [今すぐインストール] をクリックしてMagentoをインストールします。

次のページは、Magentoが設定されていることを示します。 magento_4

ステップ8: cronジョブを追加する

cronジョブを追加するには、次の手順を実行します。

  1. crontab -u apache -eコマンドを実行して、cronが操作するジョブを設定します。

  2. Iキーを押して編集モードに入ります。

  3. 次の設定を入力します。

    */10 * * * * php -c /etc /var/www/html/bin/magento cron:run
    */10 * * * * php -c /etc /var/www/html/update/cron.php
    */10 * * * * php -c /etc /var/www/html/bin/magento setup:cron:run
  4. [Esc] キーを押して :wqと入力し、enterキーを押して設定ファイルを保存して閉じます。

Magentoでcronジョブを使用する方法の詳細については、「cronの設定と実行」をご参照ください。

よくある質問

ブラウザにhttp:// <ECSインスタンスのパブリックIPアドレス>/adminを入力してMagento Webサイトに接続した場合、「1つ以上のインデクサーが無効な場合」 Magento cronジョブが実行中であることを確認します。エラーメッセージが返され、次の操作を実行します123

  1. Magentoサーバーに接続します。 詳細については、「接続方法の概要」をご参照ください。

  2. 次のコマンドを実行して、PHPインストールパスから /usr/sbin/phpディレクトリへのシンボリックリンクを作成します。

    ln -s /usr/local/php/bin/php /usr/sbin/php
  3. 次のコマンドを実行してインデックスを更新します:

    cd /var/www/html
    php bin/magento indexer:reindex

    次のようなコマンド出力は、インデックスが更新されたことを示します。

    [root@iZbp1h2mquu8nb0jz99**** wwwroot]# php bin/magento indexer:reindex
    Design Config Grid index has been rebuilt successfully in 00:00:00
    Customer Grid index has been rebuilt successfully in 00:00:00
    Category Products index has been rebuilt successfully in 00:00:00
    Product Categories index has been rebuilt successfully in 00:00:00
    Product Price index has been rebuilt successfully in 00:00:00
    Product EAV index has been rebuilt successfully in 00:00:00
    Stock index has been rebuilt successfully in 00:00:00
    Catalog Rule Product index has been rebuilt successfully in 00:00:00
    Catalog Product Rule index has been rebuilt successfully in 00:00:00
    Catalog Search index has been rebuilt successfully in 00:00:00

    で正常に再構築されました

  4. ページを更新し、[キャッシュ管理] をクリックします。 daad

  5. [キャッシュタイプ] 列に [無効化] が表示されているキャッシュを選択し、[送信] をクリックします。 456次のようなコマンド出力は、問題が修正されたことを示します。 455

次のステップ

  • http:// <ECSインスタンスのパブリックIPアドレス> にアクセスして、次のデフォルトのホームページに移動します。 luma

  • http:// <ECSインスタンスのパブリックIPアドレス>/adminにアクセスし、インストール時に設定したユーザー名とパスワードを入力します。 管理コンソールにログインすると、次のページが表示されます。 dashboard