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

Elastic Compute Service:UbuntuインスタンスでLAMPスタックを構築する

最終更新日:Aug 27, 2024

LAMPは、Linuxオペレーティングシステム、Apache HTTP Server、MySQLリレーショナルデータベース管理システム、およびPHPプログラミング言語のコンポーネントの名前の頭字語です。 LAMPスタックは、Webサイトの構築に一般的に使用されます。 LAMPは、広範なコミュニティサポートと豊富なリソースを備えており、さまざまなサイズのwebアプリケーションの開発、展開、および保守に適しています。 LAMPスタックは柔軟性が高く、サーバーを変更およびカスタマイズできます。 ビジネス要件に基づいてLAMPスタックコンポーネントを構成し、パフォーマンスとセキュリティを最大化できます。 このトピックでは、Ubuntuを実行するElastic Compute Service (ECS) インスタンスでLAMPスタックを構築する方法について説明します。

前提条件

LAMPスタックのデプロイに使用されるECSインスタンスが作成されます。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

インスタンスは次の要件を満たしています。

  • インスタンスには、システムによってパブリックIPアドレスが割り当てられるか、EIP (elastic IP address) に関連付けられます。 EIPをインスタンスに関連付ける方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。

  • インスタンスはUbuntu 22.04またはUbuntu 20.04を実行します。

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

ステップ1: Apacheのインストール

  1. 次のコマンドを実行して、Ubuntuソフトウェアパッケージを更新します。

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

    sudo apt-get -y install apache2
  3. 次のコマンドを実行して、Apacheのバージョンを確認します。

    apache2 -v

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

    image.png

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

    sudo systemctl start apache2
    sudo systemctl enable apache2
  5. 次のコマンドを実行して、Apacheのステータスを確認します。

    sudo systemctl status apache2

    次のようなコマンド出力は、Apacheが開始されたことを示します。

    image.png

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

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

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

      sudo apt -y install mysql-server
    2. 次のコマンドを実行して、MySQLのバージョンを確認します。

      mysql -V

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

      image.png

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

    sudo systemctl start mysql
  3. 次のコマンドを順番に実行して、MySQLをシステム起動時に開始するように設定します。

    sudo systemctl enable mysql
    sudo systemctl daemon-reload
  4. MySQLを設定します。

    1. 次のコマンドを実行してMySQLにアクセスします。

      sudo mysql
    2. 次のコマンドを実行して、rootユーザーのパスワードを設定します。

      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

      この例では、パスワードはMysql @ 1234です。 サンプルコマンド:

      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
    3. 次のコマンドを実行してMySQLを終了します。

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

      sudo mysql_secure_installation
    5. コマンドラインの指示に従って、次の設定を順番に設定します。

      1. rootユーザーのパスワードを入力します。 この例では、Mysql @ 1234を入力します。

        ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation
        
        Securing the MySQL server deployment.
        
        Enter password for user root: 
        説明

        データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。

      2. Yを入力してパスワード強度ポリシーを設定します。

        VALIDATE PASSWORD COMPONENT can be used to test passwords
        and improve security. It checks the strength of password
        and allows the users to set only those passwords which are
        secure enough. Would you like to setup VALIDATE PASSWORD component?
        
        Press y|Y for Yes, any other key for No: Y
      3. パスワード強度値を指定します。

        この例では、2が使用される。

        There are three levels of password validation policy:
        
        LOW Length >= 8
        MEDIUM Length >= 8, numeric, mixed case, and special characters
        STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
        
        Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

        と入力してください

      4. ルートユーザーのパスワードを変更するには、Yと入力します。

        Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
      5. rootユーザーの新しいパスワードを入力します。

        New password:
        
        Re-enter new password:
        
        Estimated strength of the password: 100
      6. 設定した新しいパスワードを使用するには、Yと入力します。

        Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
      7. MySQLに付属の匿名ユーザーアカウントを削除するには、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
      8. ルートユーザーによるMySQLへのリモートアクセスを拒否するには、Yと入力します。

        Normally, root should only be allowed to connect from
        'localhost'. This ensures that someone cannot guess at
        the root password from the network.
        
        Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
      9. testという名前のデータベースを削除するには、Yと入力します。

        By default, MySQL comes with a database named 'test' that
        anyone can access. This is also intended only for testing,
        and should be removed before moving into a production
        environment.
        
        
        Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 
      10. 権限テーブルをリロードするには、Yと入力します。

        Reloading the privilege tables will ensure that all changes
        made so far will take effect immediately.
        
        Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

        設定が完了すると、すべて完了! がコマンド出力に表示されます。

  5. MySQLにログインできるかどうかを確認します。

    1. 次のコマンドを実行してMySQLにログインします。

      sudo mysql -uroot -p
    2. Enter password: プロンプトで、MySQLに設定したパスワードを入力します。

      説明

      データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。

      次のサンプルコマンド出力は、MySQLにログオンしていることを示しています。

      ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql -uroot -p
      Enter password:
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 15
      Server version: 8.0.29-0ubuntu0.20.04.3 (Ubuntu)
      
      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>
    3. 次のコマンドを実行してMySQLを終了します。

      exit;
  6. (オプション) リスニング設定を変更します。

    デフォルトでは、MySQLはポート3306をリッスンし、ローカルIPアドレス127.0.0.1からの接続要求のみを受け付けます。 MySQLが任意のIPアドレスからの接続を受け入れることを許可するには、リスニングIPアドレスを0.0.0.0に変更する必要があります。

    重要

    0.0.0.0をリッスンするようにMySQLを設定すると、データベースは不正アクセスに対してより脆弱になる可能性があります。 任意のIPアドレスからの接続を許可するようにMySQLを設定する前に、関連するセキュリティの脅威を認識していることを確認し、脅威から保護するために、VPNとファイアウォールのデプロイやアカウント権限管理の強化などの必要な保護対策を講じてください。

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

      sudo vim /etc/mysql/my.cn f
    2. Iキーを押してInsertモードに入り、次のコンテンツを追加します。

      [mysqld]
      bind-address = 0.0.0.0 

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

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

      sudo systemctl restart mysql

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

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

    1. 次のコマンドを実行して、software-properties-commonソフトウェアパッケージをインストールします。

      sudo apt-get install -y software-properties-common
    2. 次のコマンドを実行してOndrej PPAを追加します。

      PHPの最新バージョンはOndrej PPAに含まれています。

      sudo add-apt-repository ppa:ondrej/php

      次の図に示すメッセージが返されたら、Enterキーを押します。

      image

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

      説明

      この例では、PHP 8.3がインストールされています。 別のバージョンをインストールする場合は、コマンドのphp8.3をインストールするバージョンに置き換えます。

      sudo apt-get install -y php8.3 php8.3-fpm libapache2-mod-php8。3
    4. 次のコマンドを実行して、PHPのバージョンを確認します。

      php -v

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

      image.png

  2. 次のコマンドを実行して、Apache設定ファイルをバックアップします。

    sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
  3. ApacheがPHPをサポートできるように、Apache設定ファイルを変更します。

    重要

    PHPのサポートを追加しないと、webブラウザを使用してページにアクセスすると、PHPページを表示できません。

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

      sudo vim /etc/apache2/apache2.conf
    2. Iキーを押して挿入モードに入ります。

    3. 次の設定を追加します。

      DirectoryIndex index.html index.php
      <FilesMatch \.php$>
          SetHandler application/x-httpd-php
      </FilesMatch>
    4. [Esc] キーを押して :wqと入力し、[enter] キーを押して設定ファイルを保存して閉じます。

  4. Apache Webサイトのルートディレクトリで、テストWebページを作成します。

    1. 次のコマンドを実行して、Apache Webサイトのルートディレクトリを表示します。

      sudo cat /etc/apache2/sites-available/000-default.conf

      コマンド出力のDocumentRoot /var/www/html行は、Webサイトのルートディレクトリが /var/www/htmlであることを示しています。

      image

    2. 次のコマンドを実行して、WebサイトのルートディレクトリにテストWebページを作成し、phpinfo() 関数をWebページに追加します。

      phpinfo() 関数は、PHPのすべての設定情報を表示するために使用されます。

      sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
  5. 次のコマンドを実行してApacheを再起動します。

    sudo systemctl restart apache2
  6. コンピューターのwebブラウザーのアドレスバーにhttp:// <ECSインスタンスのパブリックIPアドレス>/phpinfo.phpと入力し、Enterキーを押します。

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

    image

  7. LAMPスタックの構築後、次のコマンドを実行してphpinfo.phpファイルを削除し、データリークを防ぐことを推奨します。

    sudo rm -rf <Website root directory>/phpinfo.php

    この例では、Webサイトのルートディレクトリ /var/www/htmlが使用されています。 次のコマンドを実行して、テストファイルを削除します。

    sudo rm -rf /var/www/html/phpinfo.php