はじめに

Amazon LightsailはAWSが提供するVPSです。LightsailではLAMP環境が構築されたものも簡単に導入できるのですがPHPのバージョンは7.4系となっています。

「Laravel9も出たし早速サーバーで使いたい」となった場合、自身でPHP8を導入する必要があります(自動化したい場合はLaravel forgeなどのツールを使えば簡単に導入はできます)。

そこで今回は公式ドキュメントを参考に、UbuntuのサーバーにPHP8.1のLAMP環境の構築をご紹介します。

LAMP環境

  • Ubuntu 20.04
  • Apache 2.4.41
  • MariaDB 10.5.15
  • PHP 8.1

LightSailサーバーの作成

はじめにAWS Lightsailのコンソールからサーバー(インスタンス)を作成します。

ホームの「インスタンスの作成」を押下します。

プラットフォームの選択で「Linux/Unix」を選択。

設計図の選択で今回はOSのみで「Ubuntu 20.04 LTS」を選択してみます。

インスタンスプランは最小の512MBのサーバーでやってみました。

リソース名を適当に入力し、「インスタンスの作成」を押下します。

Lightsailインスタンスの作成2

これでインスタンスの作成は完了です。

ブラウザからSSH接続して操作していきます。

※使い慣れているターミナルから操作したい場合は下記の記事を参考にしてください。
Amazon LightsailのインスタンスにSSH接続する方法

Apacheの導入

はじめにApacheをインストールします。

$ sudo apt update -y
$ sudo apt install apache2 -y

インストールが完了したら、下記のコマンドでインストールできたかどうか確認してみましょう。

$ apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2022-03-16T16:52:53

PHP8.1の導入

今回はPHPバージョン8.1をインストールします。

Ubuntuの公式リポジトリ(PHPなどのパッケージをインストールするところ)でサポートされているPHPのバージョンは7.4です。

PHP8系は現在ほとんどのディストリビューションでサポートされていません。そのため、サードパーティのリポジトリを有効にする必要があります。

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php

この状態でPHP8.1がインストール可能かどうか確認してみます。

$ sudo apt show php8.1
Package: php8.1
Version: 8.1.3-1+ubuntu20.04.1+deb.sury.org+1
Priority: optional
Section: php
Maintainer: Debian PHP Maintainers <team+pkg-php@tracker.debian.org>
Installed-Size: 58.4 kB
Provides: php
Depends: libapache2-mod-php8.1 | php8.1-fpm | php8.1-cgi, php8.1-common
Download-Size: 23.1 kB
APT-Manual-Installed: yes
APT-Sources: http://ppa.launchpad.net/ondrej/php/ubuntu focal/main amd64 Packages
Description: server-side, HTML-embedded scripting language (metapackage)
 This package is a metapackage that, when installed, guarantees that you
 have at least one of the four server-side versions of the PHP interpreter
 installed. Removing this package won't remove PHP from your system, however
 it may remove other packages that depend on this one.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.

上記のように表示されればインストール可能です。

それでは実際にPHP8.1をインストールしましょう。

$ sudo apt-get update -y

$ sudo apt install php8.1 php8.1-{fpm,mysql,curl,gd,mbstring,mysql,xml,mcrypt,zip,ldap} libapache2-mod-php8.1 -y

$ php -v
PHP 8.1.3 (cli) (built: Feb 21 2022 14:48:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.3, Copyright (c), by Zend Technologies

これでPHPのインストールは完了です。

PHP-FPM モジュールを有効にする

PHP-FPMとは一言でいうと、「PHP スクリプトの実行を高速化するモジュール」です。※詳細こちら

下記のコマンドを1つ1つ実行してください。

$ sudo a2enmod proxy_fcgi setenvif
$ sudo a2enconf php8.1-fpm
$ sudo a2dismod php8.1
$ sudo systemctl enable php8.1-fpm
$ sudo service apache2 restart;sudo service php8.1-fpm restart

ちゃんと設定されていることを確認したい場合は以下のようにしてください。

$ sudo sh -c " echo '<?php phpinfo(); ?>' > /var/www/html/info.php"

http://<サーバIP>/info.phpにアクセスしてみましょう。下記のようにFPM/FastCGIとなっていれば適切に設定されています。

FPMの設定

MariaDB をインストールする

MariaDBのリポジトリを使用してMariaDBをインストールします。

$ curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.5"
$ sudo apt install mariadb-server -y
$ mysqld --version
mysqld  Ver 10.5.15-MariaDB-1:10.5.15+maria~focal for debian-linux-gnu on x86_64 (mariadb.org binary distribution)

次のコマンドを実行して MariaDB セキュアインストールを完了し、ルートパスワードを設定します。

$ sudo mysql_secure_installation

質問を聞かれるので下記のようにすすめてください。

$ sudo mysql_secure_installation

Enter current password for root (enter for none): # 初期はパスワードがないためそのままEnter。
Switch to unix_socket authentication [Y/n] N # N を押して unix_socket 認証に切り替えます。
Change the root password? [Y/n] Y #Y キーを押してパスワードを設定し、安全なパスワードを 2 回入力します。
Remove anonymous users? [Y/n] Y # Y を押して、匿名ユーザーアカウントを削除します。
Disallow root login remotely? [Y/n] Y # Y を押して、リモートルートログインを無効にします。
Remove test database and access to it? [Y/n] Y # Y を押して、テストデータベースを削除します。
Reload privilege tables now? [Y/n] Y # Y を押して、権限テーブルをリロードし、変更を保存します。

ログインユーザーにプロジェクトルートへのアクセス権限を付与する

ログイン中のユーザー(デフォルトではubuntu)に /var/www ディレクトリへのアクセス権限を付与します。

次のコマンドを実行してください。

$ sudo usermod -a -G www-data ubuntu

一度ログアウトします。

ログアウトしたらディレクトリのオーナーとパーミッションを変更します。

sudo chown -R ubuntu:www-data /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;

これでLAMP環境の構築は完了です。

まとめ

今回構築した環境にLaravel環境を構築する記事はこちら↓

LAMP Bitnami環境にLaravelプロジェクトを導入する記事はこちら↓

参考

【公式】自分の Lightsail インスタンスに LAMP スタックを手動でインストールするにはどうすればよいですか?

この記事をシェアする

Laravel開発のお悩み相談・学習サポートはこちら

じゅのきちメンターサービス

じゅのきちメンターサービス