はじめに(この記事の目的)
「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設定ファイルの更新
-
プロバイダの定義
main.tf
ファイルを作成し、AWSプロバイダをap-northeast-1
リージョンに設定します。provider "aws" { region = "ap-northeast-1" }
-
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の所有者 }
-
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 }
-
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" } }
-
セキュリティグループの設定
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" } }
-
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のインストール
-
WordPressのダウンロード
EC2インスタンスにSSH接続またはSSMセッションを開始した後、以下のコマンドを実行して最新版のWordPressをダウンロードし、解凍します。
wget https://wordpress.org/latest.tar.gz tar -xzvf latest.tar.gz
-
WordPressファイルの移動
解凍したWordPressディレクトリ内のファイルをApacheのドキュメントルート(
/var/www/html
)に移動します。sudo cp -r wordpress/* /var/www/html/
-
必要なパーミッションの設定
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 {} \;
データベースの設定
-
MySQL/MariaDBにログイン
mysql -u root -p
-
WordPress用のデータベース作成
CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT;
'password'
は実際のパスワードに置き換えてください。 -
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の動作確認
-
Apacheの再起動
設定変更を適用するために、Apacheを再起動します。
sudo systemctl restart httpd
-
ブラウザからのアクセス
Webブラウザを使用して、EC2インスタンスのパブリックIPアドレスまたはDNS名にアクセスします。WordPressの設定画面が表示されれば、インストールが成功しています。
まとめ
この記事では、Amazon Linux 2023を実行するEC2インスタンス上にWordPressをインストールし、基本的な設定を行うプロセスを説明しました。Terraformを使用してインフラをコードとして管理し、セキュリティグループとIAMロールでセキュリティを強化しつつ、LAMPスタックを構築してWordPressを運用する基盤を整えました。
WordPressはその柔軟性と拡張性から、ブログ、企業サイト、eコマースサイトなど、さまざまな用途で利用できる強力なCMSです。このガイドを通じて得た知識を活用し、自分だけのウェブサイトを構築してみてください。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.11.28
AWS API Gateway入門 TerraformとPythonを使った簡単なハンズオン
この記事は、AWSやAPIゲートウェイに関する基本的な知識があまりないエンジニア初心者の方、またはこれからAPIゲートウェイを使ってみたいと考えている開発者を対象としています。
- AWS
2023.04.07
【Linux】仮想化ソフトUTMを用いてM1 MacにCentOS7を導入する方法
今回はCentOS(Linux)と仮想化ソフト「UTM」を用いてM1 Mac上に仮想マシンの構築を行います。
- Linux
2024.06.30
ログデータ急増に対応!新人エンジニアがSyslog論理ボリューム拡張に挑戦
Aさんは先輩エンジニアのBさんのサポートを受けながら、syslogの論理ボリュームを拡張し、ディスク容量不足の問題を解決することを目指します。
- Linux