Ubuntu Server 26.04 LTS は、2026年4月23日にリリースされた長期サポート版です。Linuxカーネル7.0の採用により幅広いハードウェアに対応するとともに、TPMベースのフルディスク暗号化やRust製ユーティリティによるセキュリティ強化、そして5年間(各種追加サポートプランの組み合わせにより最長15年間)の長期サポートなど、サーバー運用に求められる信頼性と堅牢性を備えています。本記事では、この安定した基盤の上に、Webアプリケーション開発の定番構成であるLAMP環境(Linux・Apache・MySQL・PHP)を構築する手順を解説します。
マシン構成
システム要件
Ubuntu Server の公式ドキュメントで推奨されているシステム要件は次の通りです。
- RAM:3GB以上
- ディスク:25GB以上
今回のマシン構成
今回は、VirtualBox の仮想マシンに Ubuntu Server 26.04 をインストールします。
○仮想マシン構成
CPU:4コア
メモリ:4096MB
HDD:100GB
○ネットワークデバイス
アダプター1:NAT
アダプター2:ホストオンリーネットワーク
○ネットワーク構成
ホスト名: ubuntu2604
ネットワークアドレス:192.168.56.0/24
IPアドレス:192.168.56.10
DNSサーバー(プライマリ):1.1.1.1
DNSサーバー(セカンダリ):8.8.8.8
Ubuntu Server 26.04 LTS のインストール
インストーラーのダウンロードと仮想マシンの起動
Ubuntu のダウンロードページ から Ubuntu Server 26.04 LTS(Long Term Support = 長期サポート版の略称です)をダウンロードします。(ページ上部にある Ubuntu Desktop と間違わないように注意してください)
ISOイメージファイル「ubuntu-26.04-live-server-xxx.iso」(「xxx」はアーキテクチャ名)がダウンロードされます。ダウンロードが完了したら、VirtualBoxの仮想マシンにISOイメージファイルをマウントし、仮想マシンを起動します。
仮想マシンが起動すると、最初に以下のような黒い画面(ブートローダ画面)が表示されます。キーボードの矢印キーで「Try or Install Ubuntu Server」を選択し、Enterキーを押します。
インストール
■インストーラーの基本操作
Ubuntu Server のインストーラーはマウスを使用せず、キーボードのみで操作します。
- 項目の移動:矢印キーまたはTabキーを使用します。Shift+Tabキーで逆方向に移動できます
- 項目の決定:Enterキーを押します
- 選択・チェック:スペースキーを押します
Ubuntu Server のインストーラーが起動したら、最初に言語を選択します。インストーラーは日本語に対応していないため、「English」(またはお好みの言語)を選択してEnterキーを押します。
以下のような画面が表示されたら(表示されない場合もあります)、「Update to the new installer」を選択してEnterキーを押します。
キーボードレイアウトの設定です。「Layout」に移動してEnterキーを押すと選択ウィンドウが表示されますので、「Japanese」を選択します。選択したら「Done」に移動してEnterキーを押します。
「Ubuntu Server」にチェックが入っていることを確認して、Enterキーを押します。(下の「minimized」は、コンテナやクラウドインスタンスなど、リソースを最小限に抑えたい環境や、人間が直接操作することを想定しないサーバーに向いています。)
ネットワークの設定です。ここでは2つのネットワークアダプターが表示されています。
- enp0s8:アダプター1(NAT)です。IPアドレスは自動で割り当てられるため、設定変更は不要です
- enp0s9:アダプター2(ホストオンリーネットワーク)です。固定IPアドレスを手動で設定します
「enp0s9」に移動してEnterキーを押し、「Edit IPv4」を選択してください。
IPv4 Methodで「Manual」を選択します。各項目に以下の値を入力してください。
- Subnet:ネットワークアドレスを入力します(サブネットマスクではありません)
- Address:アダプター2(enp0s9)に設定するIPアドレスを入力します
- Gateway:入力しないでください。設定するとアダプター1経由のインターネット通信ができなくなります
- Name servers:DNSサーバーのIPアドレスを入力します。複数ある場合はカンマ(,)で区切ります
入力が完了したら「Save」に移動してEnterキーを押します。
設定したIPアドレスが表示されていることを確認し「Done」に移動してEnterキーを押します。
プロキシーサーバーの設定です。必要がなければそのままEnterキーを押します。
パッケージなどのダウンロード元となるミラーサーバーの設定です。少し待つと自動で近くのミラーサーバーが設定されますので、そのままEnterキーを押します。
HDDなどのストレージの設定です。必要に応じて暗号化やパーティションを手動で設定できます。特にこだわりがなければ、そのまま「Done」に移動してEnterキーを押します。
ストレージの設定の確認画面です。内容を確認して問題がなければそのままEnterキーを押します。
「ストレージのデータが消えますが、本当によろしいですか?」という確認メッセージが表示されます。問題がなければ「Continue」に移動してEnterキーを押します。
ユーザーアカウントとホスト名の設定です。「Your servers name」がホスト名、「Pick a username」がユーザー名です。ユーザー名は「admin」や「adm」などのありがちな名前は設定できないようになっていますので、オリジナルのユーザー名を設定しましょう。
Ubuntu Pro(エンタープライズ向けの有償サポート)に関する設定です。利用しない場合はそのままEnterキーを押します。
SSHの設定です。スペースキーを押して「Install OpenSSH server」にチェックを入れ、「Done」に移動してEnterキーを押します。
インストールするパッケージの選択画面です。今回は何もインストールしませんので、何も選択せずにそのまま「Done」に移動してEnterキーを押します。(この操作の後にインストールが開始します)
インストールが終わるまでしばらく待ちます。
インストールが完了すると画面下部に「Reboot Now」が表示されますので、「Reboot Now」に移動してEnterキーを押します。
「インストールメディアを取り外してから、Enterキーを押してください」と表示されますが、VirtualBoxでは起動中にISOイメージファイルを取り外すことができないため、そのままEnterキーを押してください。
再起動できない場合や再度インストーラーが起動してしまう場合は、一度仮想マシンの電源をオフにして、仮想マシンに追加したISOイメージファイルを取り外してから仮想マシンを起動してください。
以下の画面が表示されていれば起動完了です。(表示されない場合はEnterキー押してみてください)
ホストマシンから SSHでログインできることを確認してください。
rootユーザーの利用について
コマンドラインで Ubuntu Server の各種設定やミドルウェアのインストールを行いますが、ほとんどの操作には root権限が必要なため、コマンドの先頭に「sudo」を付ける必要があります。
そのため、以下のコマンドで root になって作業を進めます。都度「sudo」を入力しなくて済むので便利なのですが、ログにコマンド履歴が残らないというデメリットもあります。本番運用が始まったら、root権限での作業ではなく都度「sudo」を使うことをおすすめします。
パッケージのアップデート
インストール済みのパッケージを、最新版にアップデートします。
apt upgrade
OSを再起動します
ufw(ファイアウォール)設定
初期状態では ufw(ファイアウォール)が無効になっていますので、許可するポートを設定してから有効にします。
Status: inactive ←無効
SSH(22)と WEBアクセス(80 と 443)ポートを許可します。
ufw allow 80
ufw allow 443
ufw を有効化します。「SSH接続ができなくなるかもよ!」と聞いてくれます。SSH(22)ポートは許可していますので「y」を入力してください。
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ufw が有効になっていることを確認します。
ufw status Status: active ←有効 To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
日時設定(Chrony)
タイムゾーンを日本に変更します。
必要に応じて参照するNTPサーバーを変更してください。(これまでUbuntuではNTPクライアントとして「systemd-timesyncd」が標準でしたが、Ubuntu Server 26.04では「Chrony」が標準になっています)
vi /etc/chrony/sources.d/ubuntu-ntp-pools.sources
pool 2.ntp.ubuntu.com iburst maxsources 1 nts prefer
pool 3.ntp.ubuntu.com iburst maxsources 1 nts prefer
pool 4.ntp.ubuntu.com iburst maxsources 1 nts prefer
↓
pool ntp.nict.jp iburst
chronyd を再起動します。
設定したNTPサーバーと同期していることを確認します。(以下のような表示であればOKです)
chronyc sources -v (略) MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- ntp-nts-1.ps5.canonical.> 2 6 377 28 +1206us[+1206us] +/- 118ms ^+ ntp-b3.nict.go.jp 1 6 377 28 -596us[ -596us] +/- 3608us ^* ntp-a2.nict.go.jp 1 6 377 29 -17us[ -89us] +/- 4121us ^+ ntp-b2.nict.go.jp 1 6 377 28 +26us[ +26us] +/- 4022us ^- ntp-k1.nict.jp 1 6 377 28 -551us[ -551us] +/- 7968us
メール送信設定(Gmail経由)
サーバーから Gmail 経由でメールを送信できるように設定します。(必要がなければこの設定は不要です)
Postfix のインストール
メールサーバーの Postfix をインストールします。
Postfixをどのように構成するか聞かれます。初期値の「Internet Site」で構いませんので、そのままTabキーで「OK」に移動して、Enterキーを押してください。
送信元に表示されるメールアドレスのドメイン名の設定です。そのままTabキーで「OK」に移動して、Enterキーを押します。(本来はメッセージの通りFQDNである必要がありますが、Gmailを経由する場合は送信元メールアドレスがGmailのメールアドレスに書き換えられますので、そのままで構いません)
Postfix の設定
Googleアカウントの設定、および Postfix の設定手順は以下の記事をご参照ください。
PostfixからGmail経由でメールを送信するための設定メモ
メール送信確認
mail コマンドをインストールします。
以下のコマンドでメールが送信できることを確認します。
Apache・PHP・MySQL のインストール
※バージョンは2026年7月2日時点のものです。
Apache(2.4.66)
PHP(8.5.4)
apt install php-dev
apt install php-mysql
apt install php-mbstring
apt install php-gd
apt install php-curl
apt install php-intl
apt install php-zip
MySQL(8.4.10)
Apache の設定
Ubuntu での Apache の設定は Debian から引き継いだ独特の作法があります。はじめて Ubuntu を扱う方は公式ドキュメントを確認しておきましょう。
参考資料:Web Servers - Apache | Server documentation | Ubuntu
セキュリティ関連設定
CGIを使わない場合は、CGI設定を無効にします。
ファイルの一覧を表示しないように Indexes オプションを外しておきます。
vi /etc/apache2/apache2.conf (170行目付近)
<Directory /var/www/>
Options Indexes FollowSymLinks
↓
Options FollowSymLinks
UTF-8 以外の文字エンコーディングを使わない場合は、AddDefaultCharset ディレクティブで UTF-8 を指定します。
vi /etc/apache2/conf-available/charset.conf
↓
AddDefaultCharset UTF-8
その他のセキュリティ設定を行います。
vi /etc/apache2/conf-available/security.conf
↓
ServerTokens Prod
ServerSignature On
↓
ServerSignature Off
#Header set X-Content-Type-Options: "nosniff"
↓
Header set X-Content-Type-Options: "nosniff"
#Header set Content-Security-Policy "frame-ancestors 'self';"
↓
Header set Content-Security-Policy "frame-ancestors 'self';"
#(↓以下を追加)クロスサイトスクリプティング(XSS)対策
Header set X-XSS-Protection "1; mode=block"
ブラウザキャッシュ設定
ブラウザキャッシュの設定ファイルを作成します。キャッシュさせるファイルの種類や期限はコンテンツの内容に合わせて設定してください。
vi /etc/apache2/mods-available/expires.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
#ExpiresByType text/css "access plus 1 year"
#ExpiresByType text/js "access plus 1 year"
#ExpiresByType text/javascript "access plus 1 year"
</IfModule>
SSL/TLS設定
SSL/TLS関連の設定です。
vi /etc/apache2/mods-available/ssl.conf
SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
SSLSessionCacheTimeout 300
↓
SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(1024000)
SSLSessionCacheTimeout 3600
SSLCipherSuite HIGH:!aNULL
↓
SSLCipherSuite "\
ECDHE-ECDSA-AES128-GCM-SHA256 \
ECDHE-ECDSA-CHACHA20-POLY1305 \
ECDHE-ECDSA-AES256-GCM-SHA384 \
ECDHE-ECDSA-AES128-SHA \
ECDHE-ECDSA-AES256-SHA \
ECDHE-ECDSA-AES128-SHA256 \
ECDHE-ECDSA-AES256-SHA384 \
ECDHE-RSA-AES128-GCM-SHA256 \
ECDHE-RSA-CHACHA20-POLY1305 \
ECDHE-RSA-AES256-GCM-SHA384 \
ECDHE-RSA-AES128-SHA \
ECDHE-RSA-AES256-SHA \
ECDHE-RSA-AES128-SHA256 \
ECDHE-RSA-AES256-SHA384 \
DHE-RSA-AES128-GCM-SHA256 \
DHE-RSA-CHACHA20-POLY1305 \
DHE-RSA-AES256-GCM-SHA384 \
DHE-RSA-AES128-SHA \
DHE-RSA-AES256-SHA \
DHE-RSA-AES128-SHA256 \
DHE-RSA-AES256-SHA256"
#SSLHonorCipherOrder on
↓
SSLHonorCipherOrder on
#(↓以下を追加)
SSLCompression off
SSLUseStapling On
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/run/httpd/stapling_cache(128000)
#(↑追加ここまで)
バーチャルホスト設定
バーチャルホストの設定です。サーバー証明書は、自動で生成される自己署名の証明書 ssl-cert-snakeoil.pem を使っていますが、実際に Webサイトを公開する場合は Let's Encrypt など正規の認証局が発行したサーバー証明書を使いましょう。
関連記事:Let's Encrypt サーバー証明書の取得と自動更新設定メモ
デフォルトのバーチャルホストを無効にします。
バーチャルホストの設定ファイルを作成します。ServerName に指定するドメイン名は、ご自分が所有しているドメインに書き換えてください。
vi /etc/apache2/sites-available/www.example.com.conf
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
SSLEngine on
Header always set Strict-Transport-Security "max-age=31536000"
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" nolog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!nolog
</VirtualHost>
作成したバーチャルホストを有効化します。
モジュールの有効化と Apache の再起動
必要なモジュールを有効化します。
a2enmod expires
a2enmod ssl
a2enmod http2
a2enmod proxy_fcgi setenvif
a2enconf php8.5-fpm.conf
Apache を再起動します。
動作確認
確認用の PHP ファイルを作成します。
vi /var/www/html/test.php
phpinfo();
作成した test.php がブラウザで実行されることを確認します。
http://www.example.com/test.php
【補足】
自己署名のサーバー証明書の場合は警告が表示され、接続できない場合があります。FireFox で「危険性を承知で続行」ボタンを押して接続するか、Google Chrome の場合は「thisisunsafe」とタイプすると接続できます。
確認がおわったら PHP ファイルは削除しておきましょう。
PHP の設定
PHP の設定です。
vi /etc/php/8.5/fpm/php.ini
↓
date.timezone = 'Asia/Tokyo'
設定が終わったら php-fpm を再起動します。
MySQL の設定
MySQL の設定です。
vi /etc/mysql/mysql.conf.d/mysqld.cnf
log_timestamps=SYSTEM
(設定の詳細)
log_timestamps=SYSTEM
標準ではMySQLのログの出力時間がUTCになるため、サーバーのタイムゾーンと同じになるように設定します。運用ポリシーでUTCに統一している場合は、設定不要です。
設定が終わったら mysql を再起動します。
mysql_secure_installation の実行
mysql_secure_installation を実行して不要なユーザーやDBを削除します。
mysql_secure_installation --use-default
MySQL の root パスワード設定
Linux の root権限があれば、パスワード無しで MySQL に root ユーザーとして接続できます。
sudo mysql
必要に応じて ALTER USER コマンドで MySQL の rootユーザーにパスワードを設定してください。
自動起動の設定確認
各種サービスが自動起動に設定されていることを確認します。
systemctl list-unit-files | grep -e apache2.service -e php8.5-fpm.service -e mysql.service -e 'UNIT FILE' -----(STATE列がすべて「enabled」であればOKです)----- UNIT FILE STATE VENDOR PRESET apache2.service enabled enabled mysql.service enabled enabled php8.5-fpm.service enabled enabled
一度OSを再起動して、各種サービスが起動していることを確認しましょう。
shutdown -r now (再起動後に以下を実行) ps aux | grep -e apache2 -e php-fpm -e mysqld
以上です。設定お疲れ様でした!


























コメント