Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】⚙️ How to Set Up a LEMP Server at Home (Step-by-Step Guide)

2025年10月05日に「Dev.to」が公開したITニュース「⚙️ How to Set Up a LEMP Server at Home (Step-by-Step Guide)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

LEMPサーバー(Linux、Nginx、MySQL、PHP)を自宅に構築する手順を解説。Nginxで高性能なウェブサーバーを、MySQLでデータベースを、PHPで動的なサイトを実現する。これにより、自分のウェブサイトやアプリをホストでき、実用的なウェブ開発の基礎を学べる。

ITニュース解説

ウェブサイトやウェブアプリケーションを自宅のコンピューターで動かすための強力な基盤であるLEMPサーバーの構築方法について解説する。LEMPとは、Linux、Nginx(エンジンエックス)、MySQL、PHPという四つのオープンソースソフトウェアの頭文字を取ったもので、これらを組み合わせることで、高速で効率的、そして拡張性の高いウェブサーバーを構築できるのだ。この技術スタックは、多くの開発者やウェブ管理者に利用されており、システムエンジニアを目指す者にとって、その仕組みを理解し、実際に構築する経験は非常に価値がある。

まず、LEMPスタックの各要素がどのような役割を果たすのかを理解しよう。Linuxは、サーバーを動かすためのオペレーティングシステムであり、WindowsやmacOSのように、コンピューターの基本的な管理を行う。この記事では特にUbuntuというLinuxディストリビューションを使用する。Nginxはウェブサーバーソフトウェアで、ユーザーがウェブブラウザからウェブサイトにアクセスした際、そのリクエストを受け取り、ウェブサイトのコンテンツをユーザーに届ける役割を担う。従来のウェブサーバーであるApacheと比較して、Nginxは多数の同時アクセスをより効率的に処理できる特性があり、現代の高性能なウェブアプリケーションに適していると言える。MySQLはデータベース管理システムで、ウェブサイトのあらゆるデータ、例えばユーザーのアカウント情報、記事の内容、商品の情報などを保存し、必要に応じて取り出したり更新したりする役割を持つ。最後にPHPはサーバーサイドのスクリプト言語であり、ウェブサイトの動的な部分、例えばユーザーがログインしたり、コメントを投稿したりする際の処理を担う。PHPがなければ、ほとんどの現代的なウェブサイトは単なる静的な情報表示に留まるだろう。

LEMPサーバーを自宅で構築するには、いくつかの準備が必要だ。Ubuntuをインストールしたコンピューター、あるいはホームサーバーが必要となる。また、コマンドラインから操作するためのターミナルへのアクセスと、システム設定を変更できるsudo権限を持つユーザーアカウントも不可欠だ。安定したインターネット接続も当然必要になる。もし自宅のサーバーをインターネット経由で外部に公開したい場合は、ダイナミックDNSサービス(No-IPなど)の利用も検討すると良いだろう。

準備が整ったら、構築の手順に進む。最初に、システムのパッケージ情報を最新の状態に更新し、既存のソフトウェアをアップグレードする。これは、セキュリティの確保と、新しいソフトウェアをインストールする際の互換性問題を避けるために重要な作業だ。sudo apt update && sudo apt upgrade -yというコマンドを実行することで、この作業を一括で行うことができる。

次に、Nginxウェブサーバーをインストールする。sudo apt install nginx -yコマンドでNginxを導入した後、sudo systemctl enable nginxでシステムの起動時にNginxが自動的に立ち上がるように設定し、sudo systemctl start nginxでNginxサービスを開始する。sudo systemctl status nginxでNginxが正しく動作しているか確認し、ウェブブラウザでhttp://localhostまたはサーバーのローカルIPアドレスにアクセスすると、Nginxのウェルカムページが表示されるはずだ。これは、Nginxが正常に機能している証拠である。

続いて、MySQLデータベースサーバーをインストールする。sudo apt install mysql-server -yコマンドを実行することでMySQLが導入される。インストール後、sudo mysql_secure_installationコマンドを実行し、セキュリティ設定を行うことが非常に重要だ。この手順では、データベースのrootユーザーのパスワード設定、匿名ユーザーの削除、rootユーザーのリモートログインの禁止、テストデータベースの削除などを行い、データベースの安全性を高める。これらの設定を終えたら、sudo mysql -u root -pでrootユーザーとしてMySQLにログインし、CREATE DATABASE test_db;のようなコマンドでテストデータベースを作成してみると良い。

次に、PHPをインストールする。NginxがPHPファイルを処理できるように、PHP-FPM(FastCGI Process Manager)とMySQLと連携するためのPHPモジュールも一緒にインストールする。sudo apt install php-fpm php-mysql -yコマンドでこれらを導入する。インストール後、php -vコマンドでPHPのバージョンを確認できる。

PHPのインストールが完了したら、NginxがPHPファイルを正しく処理できるように設定を変更する必要がある。Nginxは直接PHPのコードを実行できないため、PHP-FPMという別のプロセスにPHPファイルの処理を依頼する形になる。Nginxのデフォルトのサーバーブロック設定ファイル(通常は/etc/nginx/sites-available/default)をテキストエディタで開き、PHPファイルを処理するための設定を追加する。具体的には、.phpで終わるファイルへのリクエストが来た際に、PHP-FPMに処理を渡すlocation ~ \.php$ブロックと、PHP-FPMが利用するソケットファイル(例:unix:/run/php/php8.3-fpm.sock)のパスを正しく記述する。設定変更後は、sudo nginx -tコマンドで設定ファイルの構文にエラーがないかを確認し、エラーがなければsudo systemctl reload nginxコマンドでNginxを再起動し、新しい設定を適用する。

NginxとPHPの連携が正しく行われているかを確認するため、PHPのテストファイルを作成する。echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.phpコマンドを実行し、/var/www/html/info.phpというファイルにPHPの情報を表示するコードを書き込む。その後、ウェブブラウザでhttp://localhost/info.phpにアクセスすると、PHPの設定情報が詳細に表示されるページが見えるはずだ。これが表示されれば、NginxとPHPが完全に連携して動作していることを意味する。

オプションとなるが、サーバーのセキュリティを高めるために基本的なファイアウォールを設定することも推奨される。UFW(Uncomplicated Firewall)を有効にし、Nginxが使用するHTTP(ポート80)とHTTPS(ポート443)、そしてSSH(リモートアクセス用)のトラフィックを許可するように設定する。sudo ufw allow 'Nginx Full'sudo ufw allow OpenSSHsudo ufw enablesudo ufw statusというコマンドでこれらの設定を行うことができる。

さらに、構築したLEMPサーバーをインターネット経由で外部に公開したい場合もあるだろう。そのためには、まずNo-IPのようなダイナミックDNSサービスに無料のホスト名を登録する。次に、自宅のルーターでポートフォワーディングを設定し、HTTP(ポート80)とHTTPS(ポート443)のトラフィックをLEMPサーバーのIPアドレスに転送するように設定する必要がある。これにより、登録したドメイン名(例:http://myhomeserver.ddns.net)を使って、インターネット上のどこからでも自分のウェブサイトにアクセスできるようになる。

以上の手順を踏むことで、自宅にLEMPサーバーを構築することができる。このサーバーがあれば、自分でウェブサイトやブログをホストしたり、WordPressのような人気のCMSを手動でデプロイしたり、PHPベースのプロジェクトをローカルで実験したりと、様々なことができるようになる。この経験は、将来的にSSL証明書を導入してHTTPS化したり、Ansibleのようなツールでサーバー構築を自動化したり、さらに高度なデータベースやNginxの設定を学ぶための貴重な第一歩となるだろう。LEMPスタックは軽量で信頼性が高く、ウェブホスティングの現実的な仕組みを学ぶのに最適な環境である。手動でサーバーを構築する経験は、クラウド環境でのデプロイメントにも自信を持って取り組むための基礎となるものだ。

関連コンテンツ

関連IT用語

関連ITニュース