さくらのVPSにnginx + PHP-FPM + MariaDB を入れてLAMP構成するメモ

さくらのVPS(Debian 12)にnginx + PHP-FPM + MariaDBを入れて、Laravelが動くLEMP環境を構築した手順メモ。毎回調べ直すのが面倒なのでまとめておく。

パッケージのインストール

apt update && apt upgrade -y

# nginxとMariaDB
apt install -y nginx mariadb-server

# PHP 8.3(ondrej/phpリポジトリを使う)
apt install -y lsb-release apt-transport-https ca-certificates wget
wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt update
apt install -y php8.3-fpm php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl 
               php8.3-zip php8.3-mysql php8.3-intl php8.3-bcmath

MariaDBの初期設定

mysql_secure_installation

対話式でrootパスワードの設定、匿名ユーザーの削除、リモートrootログインの無効化などを行う。全部「Y」で基本的にはOK。

# データベースとユーザーを作成
mysql -u root -p

CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp'@'localhost';
FLUSH PRIVILEGES;
EXIT;

PHP-FPMの設定

デフォルトの /etc/php/8.3/fpm/pool.d/www.conf を確認する。

# Unixソケット方式に変更(TCP portより高速)
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

# プロセス数(1GBプランの場合)
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
systemctl restart php8.3-fpm
systemctl enable php8.3-fpm

nginxの設定

/etc/nginx/sites-available/myapp を作成する。

server {
    listen 80;
    server_name example.com www.example.com;
    root /home/yamazaki/myapp/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /.ht {
        deny all;
    }
}
# シンボリックリンクを張って有効化
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

# 構文チェック
nginx -t

# リロード
systemctl reload nginx

パーミッションの設定

chown -R www-data:www-data /home/yamazaki/myapp/storage
chown -R www-data:www-data /home/yamazaki/myapp/bootstrap/cache
chmod -R 755 /home/yamazaki/myapp/storage

動作確認

# PHP-FPM確認
systemctl status php8.3-fpm

# nginx確認
systemctl status nginx

# MariaDB確認
systemctl status mariadb

# phpinfoで動作確認(テスト後は必ず削除すること)
echo "<?php phpinfo();" > /home/yamazaki/myapp/public/info.php

まとめ

Debian 12 + nginx + PHP 8.3-FPM + MariaDB の組み合わせは、さくらのVPSで問題なく動く。PHP 8.3のインストールにはsury.orgのリポジトリ追加が必要な点だけ注意。Laravelを動かす場合はこの構成に加えてcomposer installとphp artisan系のコマンドを実行すれば動く。SSL化(Let's Encrypt)は次回の記事にまとめる予定。

読んで頂いて有り難うございます!