1. ホーム
  2. 記事一覧
  3. AmazonLinux2023にWordPressをインストールする

2024.03.18

AmazonLinux2023にWordPressをインストールする

はじめに(この記事の目的)

「WordPressを使って、自分だけのオリジナルサイトを作りたいけど、難しそう…」そんな方におすすめなのが、Amazon Linux 2023とWordPressの組み合わせです。

この記事では、初心者でもわかるように、Amazon Linux 2023にWordPressをインストールして、ブログやサイトを立ち上げるまでの手順を丁寧に解説します。

クラウドコンピューティングやWeb開発に興味があるエンジニア志望者や学生はもちろん、初めてWordPressに挑戦する方でも、このガイドを参考に、自分の手でオリジナルサイトを作ることができます。

AmazonLinux2023とは?

Amazon Linux 2023は、Amazon Web Services (AWS) が提供する最新のLinuxディストリビューションです。Linuxディストリビューションについて知りたい方はこちらの記事をご覧ください。

https://envader.plus/article/7

Amazon Linux 2023は、クラウド環境で使いやすいように設計されており、初心者でも簡単にサーバーを構築できます。また、セキュリティやパフォーマンスにも優れているので、安心してWordPressを運用できます。

WordPressとは?

WordPressは、世界中で最も人気のあるCMS(ブログ・サイト作成ツール)です。専門知識がなくても簡単に使えるため、初心者にもおすすめです。豊富なデザインテーマや機能拡張プラグインが用意されているので、思い通りのサイトを作ることができます。

この記事でできること

この記事では、以下の手順を解説します。

  • Amazon EC2インスタンスの作成
  • LAMPスタックの構築
  • WordPressのインストール
  • WordPressの設定
  • 動作確認

必要なもの

  • パソコン
  • インターネット接続
  • AWSアカウント (無料)

AWSアカウントの作成方法については、次の記事を参考にしてください。

https://aws.amazon.com/jp/register-flow/

EC2(Amazon Linux 2023)の作成

このセクションでは、Terraformを使用してAmazon Linux 2023をインストールされたEC2インスタンスをAWS上に作成する方法を紹介します。

AWSの東日本リージョン(ap-northeast-1)を対象とし、SSM(AWS Systems Manager)を使用してEC2インスタンスに接続する設定を含めたTerraform設定を更新します。また、Amazon Linux 2023の最新版AMIを動的に選択するようにします。

Terraform設定ファイルの更新

  1. プロバイダの定義

    main.tfファイルを作成し、AWSプロバイダをap-northeast-1リージョンに設定します。

    provider "aws" {
      region = "ap-northeast-1"
    }
  2. Amazon Linux 2023のAMI選択

    最新のAmazon Linux 2023 AMIを自動的に選択するために、aws_amiデータソースを使用します。

    data "aws_ami" "amazon_linux_2023" {
      most_recent = true
    
      filter {
        name   = "name"
        values = ["amzn-ami-2023.*"]
      }
    
      filter {
        name   = "architecture"
        values = ["x86_64"]
      }
    
      owners = ["amazon"] # Amazon Linux AMIの所有者
    }
  3. IAMロールの作成

    iam.tfファイルを作成し、次のコードを記述します。

    # IAMロールの作成
    resource "aws_iam_role" "ec2_ssm_role" {
    name = "EC2RoleForSSM"
    
    assume_role_policy = jsonencode({
        Version = "2012-10-17"
        Statement = [
        {
            Action = "sts:AssumeRole"
            Effect = "Allow"
            Principal = {
            Service = "ec2.amazonaws.com"
            }
        },
        ]
    })
    }
    
    # AWS管理ポリシー「AmazonSSMManagedInstanceCore」をIAMロールにアタッチ
    resource "aws_iam_role_policy_attachment" "ssm_core" {
    role       = aws_iam_role.ec2_ssm_role.name
    policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
    }
    
    # EC2インスタンスプロファイルの作成
    resource "aws_iam_instance_profile" "ec2_ssm_profile" {
    name = "EC2InstanceProfileForSSM"
    role = aws_iam_role.ec2_ssm_role.name
    }
  4. EC2インスタンスのリソース定義(SSM接続を含む)

    SSMを介して接続するためには、EC2インスタンスに適切なIAMロールを割り当てる必要があります。ここでは、事前に作成されたIAMロール(EC2RoleForSSMなど)を使用すると仮定しています。このロールはAWS管理ポリシーAmazonSSMManagedInstanceCoreをアタッチしておく必要があります。 ec2.tfを作成し、次のコードを記述。

    resource "aws_instance" "my_ec2" {
      ami           = data.aws_ami.amazon_linux_2023.id
      instance_type = "t2.micro"
      iam_instance_profile = aws_iam_instance_profile.ec2_ssm_profile # SSM接続に必要なIAMインスタンスプロファイル
    
      tags = {
        Name = "My Amazon Linux 2023 Instance"
      }
    }
  5. セキュリティグループの設定

    ec2.tfの下部にEC2インスタンスのセキュリティグループを定義して、HTTP (80) とHTTPS (443) のアクセスを許可します。

    resource "aws_security_group" "allow_web" {
    name        = "allow_web_traffic"
    description = "Allow Web inbound traffic"
    vpc_id      = "vpc-123456" # デフォルトや作成したものなど、適切なVPC IDに置き換えてください
    
    ingress {
        from_port   = 80
        to_port     = 80
        protocol    = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    
    ingress {
        from_port   = 443
        to_port     = 443
        protocol    = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    
    egress {
        from_port   = 0
        to_port     = 0
        protocol    = "-1"
        cidr_blocks = ["0.0.0.0/0"]
    }
    
    tags = {
        Name = "allow_web_traffic"
    }
    }
  6. Terraformの実行

    Terraformプランを生成し、インフラストラクチャのデプロイを行います。

    terraform init
    terraform plan
    
    # yesを入力しapplyを実施すると、実際にコードに基づいたリソースが作成されます。
    # 無料のものを除いて課金が発生します。
    terraform apply

LAMPを構成する

LAMPとは?

LAMPは、Linuxオペレーティングシステム、Apache HTTPサーバー、MySQLまたはMariaDBデータベース、そしてPHPプログラミング言語の頭文字を取ったもので、ウェブサーバー環境を構築するためのオープンソースソフトウェアスタックです。LAMPスタックは、動的なウェブサイトやアプリケーションを開発、運用するための堅牢で信頼性の高いプラットフォームを提供します。その柔軟性と拡張性により、小規模なウェブサイトから大規模な企業向けアプリケーションまで、あらゆる規模のプロジェクトに適しています。

LAMPスタックのコンポーネントは以下の通りです。コンポーネントとは、ソフトウェアやシステムを構成する独立した部品のことです。

  • Linux

    オペレーティングシステムとしての基盤を提供し、他のコンポーネントが動作する環境を提供します。

  • Apache

    ウェブサーバーとして動作し、ウェブページのリクエストに応答してコンテンツをユーザーに配信します。

  • MySQL/MariaDB

    データベース管理システムとして機能し、ウェブサイトのデータを格納、管理します。

  • PHP

    サーバーサイドスクリプト言語として、ウェブページの動的コンテンツ生成を担います。

LAMP導入手順

以下は、Amazon Linux 2023にLAMPスタックをインストールするための実際の手順です。EC2にSSM接続するなどしてターミナルを開き、以下のコマンドを実行してください。

Apache Webサーバーのインストール

sudo dnf install -y httpd

Apacheの起動と自動起動の設定

sudo systemctl start httpd
sudo systemctl enable httpd

MariaDBのインストール

sudo dnf install -y mariadb-server

MariaDBの起動と自動起動の設定

sudo systemctl start mariadb
sudo systemctl enable mariadb

MariaDBのセキュリティ強化

sudo mysql_secure_installation

このスクリプトは、パスワードの設定、匿名ユーザーの削除、リモートルートログインの無効化、テストデータベースの削除など、いくつかのセキュリティ関連の設定を促します。

PHPのインストール

sudo dnf install -y php php-mysqlnd

ApacheとPHPの連携確認

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php

これにより、phpinfo.phpファイルが作成されます。ブラウザからhttp://<Your-EC2-Instance-PublicDNS-or-IP>/phpinfo.phpにアクセスして、PHPの設定情報が表示されるか確認します。このページが正しく表示されれば、Apache WebサーバーとPHPが正常に連携して動作していることが確認できます。

システムの再起動

すべての設定が完了した後、システムを再起動して、全てのサービスが正常に起動することを確認します。

sudo systemctl restart httpd
sudo systemctl restart mariadb

これで、Amazon Linux 2023にLAMPスタックが正しくインストールされ、設定されました。これは、WordPressや他のPHPベースのアプリケーションをホスティングするための基盤となります。

動作確認

LAMPスタックが正しくインストールされていることを確認した後、基本的なApacheサーバーの動作テストを行うことができます。デフォルトで、Apacheは/var/www/htmlディレクトリをWebルートとして使用します。このディレクトリにHTMLファイルを配置し、Webブラウザを通じてアクセスすることで、Apacheサーバーが正常に動作しているかテストできます。

Apacheサーバーのテストページ作成

echo "<html><body><h1>Hello, LAMP!</h1></body></html>" | sudo tee /var/www/html/index.html

ブラウザからのアクセステスト

Webブラウザを開き、http://<Your-EC2-Instance-Public-DNS-or-IP>/にアクセスします。"Hello, LAMP!"というメッセージが表示されれば、Apache Webサーバーが正常に動作していることが確認できます。

これらの手順を完了することで、Amazon Linux 2023上にLAMP環境が正しく構築され、Webサーバーがクライアントからのリクエストに応答できる状態になります。

WordPressを構成する

WordPressのインストールと初期設定を行う手順を説明します。

WordPressのインストール

  1. WordPressのダウンロード

    EC2インスタンスにSSH接続またはSSMセッションを開始した後、以下のコマンドを実行して最新版のWordPressをダウンロードし、解凍します。

    wget https://wordpress.org/latest.tar.gz
    tar -xzvf latest.tar.gz
  2. WordPressファイルの移動

    解凍したWordPressディレクトリ内のファイルをApacheのドキュメントルート(/var/www/html)に移動します。

    sudo cp -r wordpress/* /var/www/html/
  3. 必要なパーミッションの設定

    WordPressファイルとディレクトリに適切なパーミッションを設定します。

    sudo chown -R apache:apache /var/www/html
    sudo find /var/www/html -type d -exec chmod 755 {} \;
    sudo find /var/www/html -type f -exec chmod 644 {} \;

データベースの設定

  1. MySQL/MariaDBにログイン

    mysql -u root -p
  2. WordPress用のデータベース作成

    CREATE DATABASE wordpress;
    GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    EXIT;

    'password'は実際のパスワードに置き換えてください。

  3. WordPressの設定ファイル編集

    /var/www/html/wp-config-sample.phpファイルをwp-config.phpとしてコピーし、データベース設定を編集します。

    cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
    vi /var/www/html/wp-config.php

    データベース名、ユーザー名、パスワードを先ほど作成したものに合わせて編集します。

WPの動作確認

  1. Apacheの再起動

    設定変更を適用するために、Apacheを再起動します。

    sudo systemctl restart httpd
  2. ブラウザからのアクセス

    Webブラウザを使用して、EC2インスタンスのパブリックIPアドレスまたはDNS名にアクセスします。WordPressの設定画面が表示されれば、インストールが成功しています。

まとめ

この記事では、Amazon Linux 2023を実行するEC2インスタンス上にWordPressをインストールし、基本的な設定を行うプロセスを説明しました。Terraformを使用してインフラをコードとして管理し、セキュリティグループとIAMロールでセキュリティを強化しつつ、LAMPスタックを構築してWordPressを運用する基盤を整えました。

WordPressはその柔軟性と拡張性から、ブログ、企業サイト、eコマースサイトなど、さまざまな用途で利用できる強力なCMSです。このガイドを通じて得た知識を活用し、自分だけのウェブサイトを構築してみてください。

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事