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

Elastic Compute Service:LAMP スタックを手動でデプロイする

最終更新日:Apr 08, 2025

LAMP は、元の 4 つのコンポーネント、Linux オペレーティングシステム、Apache HTTP Server、MySQL リレーショナルデータベース管理システム、および PHP プログラミング言語の頭字語です。ほとんどの場合、LAMP スタックは Web サイトの構築に使用されます。このトピックでは、Elastic Compute Service(ECS)インスタンスに LAMP スタックを手動でデプロイする方法について説明します。

説明

[Terraform Explorer] に移動して、Terraform コードを表示および実行できます。これにより、ECS インスタンスの LAMP 環境を自動的に構築できます。

前提条件

  • パブリック IP アドレスは ECS インスタンスに自動的に割り当てられます。または、Elastic IP アドレス(EIP)が ECS インスタンスに関連付けられています。パブリック帯域幅を有効にする方法については、「パブリック帯域幅を有効にする」をご参照ください。

  • インバウンドルールは、ポート 22 と 80 を開くために ECS インスタンスのセキュリティグループに追加されます。セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。

  • ECS インスタンスには、少なくとも 4 GiB のメモリが必要です。

LAMP スタックをデプロイする

Alibaba Cloud Linux 3 または CentOS 8

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

    # Apache サーバーをインストールします。
    sudo dnf install -y httpd
    # インスタンスの起動時に Apache サーバーを自動的に起動します。
    sudo systemctl enable httpd
    # Apache サーバーを起動します。
    sudo systemctl start httpd
  2. MySQL をインストールします。

    説明

    インスタンスで Alibaba Cloud Linux 3 を実行している場合は、以前のバージョンの OpenSSL ライブラリと互換性のある compat-openssl10 をインストールする必要があります。

    sudo yum install -y compat-openssl10
    # 公式の MySQL リポジトリを追加します。
    sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm
    # MySQL をインストールします。
    sudo dnf install -y mysql-server
    # MySQL を起動し、システム起動時に MySQL が自動的に起動するように構成します。
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    1. ルートユーザーのデフォルトの初期パスワードをクエリします。

      • インスタンスで Alibaba Cloud Linux 3 を実行している場合は、次のコマンドを実行します。

        echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)
      • インスタンスで CentOS 8 を実行している場合、ルートユーザーには初期パスワードがありません。

    2. MySQL のルートユーザーの新しいパスワードを指定します。次のコマンドで、<oldpwd> を初期パスワードに、<newpwd> を新しいパスワードに置き換えます。インスタンスで CentOS 8 を実行している場合は、<oldpwd> を空の文字列に置き換え、パスワードの入力を求められたら Enter キーを押して次の行にスキップします。

      重要

      パスワードは 8 文字以上で、大文字、小文字、数字、特殊文字をそれぞれ 1 つ以上含める必要があります。

      sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
  3. PHP をインストールします。

    説明

    この例では、PHP 8.4 を使用しています。別の PHP バージョンが必要な場合は、インストールする PHP バージョンに基づいてモジュール名を変更します。たとえば、PHP 8.1 をインストールする場合は、モジュール名を php:remi-8.1 に変更します。

    # remi リポジトリを指定し、php:remi-8.4 モジュールを有効にします。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm  --nodeps
    sudo sed -i "s/\$releasever/8/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo
    sudo dnf install -y yum-utils && sudo dnf module enable -y php:remi-8.4
    # PHP、PHP FastCGI Process Manager(PHP-FPM)、および MySQL 拡張機能をインストールします。
    sudo dnf install -y php php-fpm php-mysqlnd
    # PHP-FPM を起動し、システム起動時に PHP-FPM が自動的に起動するように構成します。
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
  4. LAMP スタックを確認します。

    1. 構成ファイルで PHP-FPM のデフォルトのリスニングアドレスをクエリします。

      sudo grep 'listen =' /etc/php-fpm.d/www.conf
    2. /etc/httpd/conf.d/php-fpm.conf 構成ファイルを作成し、ファイルに php-fpm ルールを構成します。

      重要

      PHP-FPM のリスニングアドレスが 127.0.0.1:9000 の場合、SetHandler パラメーターを proxy:fcgi://127.0.0.1:9000 に設定します。

      sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF'
      <FilesMatch \.php$>
          SetHandler "proxy:unix:/run/php-fpm/www.sock;"
      </FilesMatch>
      EOF
    3. 構成を有効にするには、httpd を再起動します。

      sudo systemctl restart httpd
    4. /var/www/html/ ディレクトリに test.php ファイルを作成し、次のコンテンツをファイルに追加します。<username> を MySQL ユーザー名に、<password> を対応するパスワードに置き換えます。

      sudo tee /var/www/html/test.php <<-'EOF'
      <?php
      $servername = "localhost";
      $username = "<username>";
      $password = "<password>";
      
      $conn = new mysqli($servername, $username, $password);
      
      if ($conn->connect_error) {
      die("fail: " . $conn->connect_error);
      }
      echo "success\n";
      ?>
      EOF
    5. オンプレミスマシンの Web ブラウザーのアドレスバーに http://<ECS インスタンスのパブリック IP アドレス>/test.php と入力します。success が返された場合、PHP プロキシを使用して MySQL に接続されています。

Alibaba Cloud Linux 2 または CentOS 7

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

    # Apache サーバーをインストールします。
    sudo yum install -y httpd
    # インスタンスの起動時に Apache サーバーを自動的に起動します。
    sudo systemctl enable httpd
    # Apache サーバーを起動します。
    sudo systemctl start httpd
  2. MySQL をインストールします。

    # 公式の MySQL リポジトリを追加します。
    sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm
    # MySQL をインストールします。
    sudo yum install -y mysql-server
    # MySQL を起動し、システム起動時に MySQL が自動的に起動するように構成します。
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    1. ルートユーザーのデフォルトの初期パスワードをクエリします。

      echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)
    2. MySQL のルートユーザーの新しいパスワードを指定します。次のコマンドで、<oldpwd> を初期パスワードに、<newpwd> を新しいパスワードに置き換えます。

      重要

      パスワードは 8 文字以上で、大文字、小文字、数字、特殊文字をそれぞれ 1 つ以上含める必要があります。

      sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
  3. PHP をインストールします。

    # remi リポジトリを指定し、remi-php83 モジュールを有効にします。
    sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-7.rpm  --nodeps
    sudo sed -i "s/\$releasever/7/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo
    sudo yum install -y yum-utils && sudo yum-config-manager --enable   remi-php83
    # PHP、PHP-FPM、および MySQL 拡張機能をインストールします。
    sudo yum install -y php php-fpm php-mysqlnd
    # PHP-FPM を起動し、システム起動時に PHP-FPM が自動的に起動するように構成します。
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
  4. LAMP スタックを確認します。

    1. 構成ファイルで PHP-FPM のデフォルトのリスニングアドレスをクエリします。

      sudo grep 'listen =' /etc/php-fpm.d/www.conf
      • ソケットファイルのアドレスが返された場合、PHP-FPM はソケットファイルをリッスンします。

      • 127.0.0.1:9000 が返された場合、PHP-FPM はローカルポート 9000 をリッスンします。

    2. /etc/httpd/conf.d/php-fpm.conf 構成ファイルを作成し、ファイルに php-fpm ルールを構成します。

      重要

      PHP-FPM のリスニングアドレスがソケットファイルのアドレスである場合、proxy:fcgi://127.0.0.1:9000proxy:unix:<path>; に変更します。<path> をソケットファイルのアドレスに置き換えます。

      sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF'
      <FilesMatch \.php$>
          SetHandler "proxy:fcgi://127.0.0.1:9000"
      </FilesMatch>
      EOF
    3. 構成を有効にするには、httpd を再起動します。

      sudo systemctl restart httpd
    4. /var/www/html/ ディレクトリに test.php ファイルを作成し、次のコンテンツをファイルに追加します。<username> を MySQL ユーザー名に、<password> を対応するパスワードに置き換えます。

      sudo tee /var/www/html/test.php <<-'EOF'
      <?php
      $servername = "localhost";
      $username = "<username>";
      $password = "<password>";
      
      $conn = new mysqli($servername, $username, $password);
      
      if ($conn->connect_error) {
      die("fail: " . $conn->connect_error);
      }
      echo "success\n";
      ?>
      EOF
    5. オンプレミスマシンの Web ブラウザーのアドレスバーに http://<ECS インスタンスのパブリック IP アドレス>/test.php と入力します。success が返された場合、PHP プロキシを使用して MySQL に接続されています。

Ubuntu 20.04 以降

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

    # Apache サーバーをインストールします。
    sudo apt update -y && sudo apt install -y apache2
    # インスタンスの起動時に Apache サーバーを自動的に起動します。
    sudo systemctl enable apache2
    # Apache サーバーを起動します。
    sudo systemctl start apache2
  2. ソフトウェアパッケージリストを更新し、MySQL サーバーをインストールします。

    sudo apt update -y && sudo apt install -y mysql-server
  3. MySQL サーバーの root ユーザーが使用するパスワードと身元認証プラグインを変更します。次のコマンドの <newpwd> を実際のパスワードに置き換えます。

    重要

    ルートユーザーが使用するデフォルトの身元認証プラグインは auth_socket です。コマンドを実行すると、パスワードの入力を求められます。Enter キーを押して次の行にスキップします。

    sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;"
  4. PHP をインストールします。

    説明

    sudo apt search php コマンドを実行して、インストールできるすべての PHP バージョンをクエリします。別の PHP バージョンをインストールする場合は、次のコマンドのバージョン番号を実際のバージョン番号に置き換えます。たとえば、PHP 8.1 をインストールする場合は、sudo apt install -y php8.1 php8.1-fpm php8.1-mysql コマンドを実行します。

    # software-properties-common パッケージをインストールし、ppa:ondrej/php Personal Package Archive(PPA)リポジトリを追加します。
    sudo apt update && sudo apt install -y software-properties-common && sudo add-apt-repository -y ppa:ondrej/php
    # PHP 8.4 と関連コンポーネント(PHP-FPM と MySQL 拡張機能を含む)をインストールします。
    sudo apt install -y php8.4 php8.4-fpm php8.4-mysql
  5. LAMP スタックを確認します。

    1. 構成ファイルで PHP-FPM のデフォルトのリスニングアドレスをクエリします。<version> を実際の PHP バージョンに置き換えます。たとえば、PHP 8.4 を使用している場合は、<version> を 8.4 に置き換えます。

      sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.conf
      • ソケットファイルのアドレスが返された場合、PHP-FPM はソケットファイルをリッスンします。

      • 127.0.0.1:9000 が返された場合、PHP-FPM はローカルポート 9000 をリッスンします。

    2. /etc/apache2/conf-available/php-fpm.conf 構成ファイルを作成し、ファイルに PHP 転送ルールを構成します。<listen> を PHP-FPM の実際のリスニングアドレスに置き換えます。

      • ソケットファイルのアドレスが PHP-FPM のリスニングアドレスとして使用されている場合、<listen>unix:<path>; に、<path> をソケットファイルのアドレスに置き換えます。

        重要

        ソケットファイルをリッスンするには、アカウントにソケットファイルに対する読み取りおよび書き込み権限が必要です。sudo chmod 666 <path> コマンドを実行して、上記の権限を付与できます。<path> をソケットファイルの実際のアドレスに置き換えます。

      • 127.0.0.1:9000 が PHP-FPM のリスニングアドレスとして使用されている場合、<listen>fcgi://127.0.0.1:9000 に置き換えます。

      sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF'
      <FilesMatch \.php$>
          SetHandler "proxy:<listen>"
      </FilesMatch>
      EOF
    3. 構成ファイルのシンボリックリンクを作成します。

      sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/
    4. proxy_fcgi モジュールと setenvif モジュールを有効にして、Apache が PHP リクエストを PHP-FPM に転送できるようにします。次に、PHP-FPM の構成ファイルを有効にします。

      sudo a2enmod proxy_fcgi setenvif
      sudo a2enconf php8.4-fpm
    5. 構成を有効にするには、httpd を再起動します。

      sudo systemctl restart apache2
    6. /var/www/html/ ディレクトリに test.php ファイルを作成し、次のコンテンツをファイルに追加します。<username> を MySQL ユーザー名に、<password> を対応するパスワードに置き換えます。

      sudo tee /var/www/html/test.php <<-'EOF'
      <?php
      $servername = "localhost";
      $username = "<username>";
      $password = "<password>";
      
      $conn = new mysqli($servername, $username, $password);
      
      if ($conn->connect_error) {
      die("fail: " . $conn->connect_error);
      }
      echo "success\n";
      ?>
      EOF
    7. オンプレミスマシンの Web ブラウザーのアドレスバーに http://<ECS インスタンスのパブリック IP アドレス>/test.php と入力します。success が返された場合、PHP プロキシを使用して MySQL に接続されています。

よくある質問

test.php ページがホストされている ECS インスタンスのパブリック IP アドレスを使用してページにアクセスできないのはなぜですか?

考えられる原因と解決策:

ECS インスタンスのセキュリティグループでポート 80 が開いていないか、ECS インスタンスでシステムファイアウォールが有効になっているか、ポート 80 が別のサービスで使用されています。

上記の原因に基づいて問題のトラブルシューティングを行う方法については、「インスタンスにデプロイされたサービスにアクセスできない場合はどうすればよいですか?」をご参照ください。

MySQL へのリモートアクセスを許可するにはどうすればよいですか?

ルート以外のアカウントを作成し、そのアカウントを使用して MySQL へのリモートアクセスを許可します。詳細については、「Linux インスタンスに MySQL をデプロイする」をご参照ください。