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です。このガイドを通じて得た知識を活用し、自分だけのウェブサイトを構築してみてください。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

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

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

関連記事