Linuxサーバ

【Apache2】Ubuntu 24.04でユーザーディレクトリ&サブドメインを設定する方法【自宅サーバ/LAMP対応】

【Ubuntu 24.04対応】Apache2ユーザディレクトリ+サブドメイン+SSL設定方法|LAMP構築①-2

Apache2の基本設定に加え、ユーザごとのpublic_htmlディレクトリを公開し、サブドメインごとに分けて運用、さらにLet’s EncryptでSSL対応する方法をご紹介します!


1. ユーザディレクトリ(~/public_html)の公開設定

Apacheのモジュールを有効化

sudo a2enmod userdir
sudo systemctl restart apache2

ユーザの public_html を作成

sudo -u webuser mkdir -p /home/webuser/public_html
sudo chmod 755 /home/webuser
sudo chmod 755 /home/webuser/public_html

💡 ホームディレクトリとpublic_htmlの両方に「755」のパーミッションが必要です。

テスト用HTMLを作成

sudo -u webuser nano /home/webuser/public_html/index.html
<!DOCTYPE html>
<html>
  <head><title>webuserのページ</title></head>
  <body><h1>Hello from webuser's public_html!</h1></body>
</html>

ブラウザで表示確認

以下のURLにアクセスして表示されればOK!

http://サーバのIPアドレス/~webuser/


2. サブドメインでのバーチャルホスト設定

バーチャルホスト用設定ファイルを作成

sudo nano /etc/apache2/sites-available/user1.example.com.conf
<VirtualHost *:80>
    ServerName user1.example.com
    DocumentRoot /home/user1/public_html

    <Directory /home/user1/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/user1_error.log
    CustomLog ${APACHE_LOG_DIR}/user1_access.log combined
</VirtualHost>

設定の有効化

sudo a2ensite user1.example.com.conf
sudo systemctl reload apache2

hostsファイルで動作確認(DNS未設定時)

192.168.1.100  user1.example.com

ブラウザで http://user1.example.com にアクセスして確認します。


3. SSL(HTTPS)対応の設定

ApacheのSSLモジュールを有効化

sudo a2enmod ssl
sudo systemctl restart apache2

ファイアウォールの設定(UFW)

sudo ufw allow "Apache Full"
sudo ufw delete allow "Apache"

Let’s Encryptの導入(別記事にて)

以下の記事で詳しく説明しています👇

▶ Let’s Encryptで無料SSLを導入する方法(Ubuntu 24.04対応)

SSL用バーチャルホスト(手動設定例)

<VirtualHost *:443>
    ServerName user1.example.com
    DocumentRoot /home/user1/public_html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/user1.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/user1.example.com/privkey.pem

    <Directory /home/user1/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/user1_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/user1_ssl_access.log combined
</VirtualHost>

HTTP → HTTPS へのリダイレクト(任意)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

※ mod_rewriteが必要です。以下で有効化:

sudo a2enmod rewrite

まとめ

機能手順
ユーザディレクトリa2enmod userdir + ~/public_html
サブドメインServerName 指定で個別にバーチャルホスト
SSL化certbot + <VirtualHost *:443>
リダイレクトRewriteRule でHTTPSへ強制

次回は MariaDBのインストールと初期設定 を解説予定です!

オススメの記事

-Linuxサーバ
-, ,