【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のインストールと初期設定 を解説予定です!