【Xserver VPS】Nginx・MySQL・Let’s Encryptの構築手順(Docker排除)
昨今のWeb開発においてDockerによるコンテナ運用は一般的みたいですが、個人規模のプロジェクトや特定のポート開放(DBへの外部接続)を行う環境においては、コンテナ階層が管理の複雑さを招くケースがあり、実際にやってみてもちょっと面倒だなと思い至りました。
そこで今回は、Xserver VPS上のUbuntu 25.04環境から既存のDocker環境を完全に撤去しOSへ直接Nginx、MySQL、Let’s Encryptをインストール・設定することでシンプルにサーバーに直接Webサーバー環境を構築したのでメモします。
目次
1. Docker環境の完全クリーンアップ
新しい環境との競合を防ぐため、既存のDockerリソースを完全に削除し、サービスを停止します。
# 全コンテナの停止と削除 sudo docker stop $(docker ps -q) sudo docker rm $(docker ps -a -q) # イメージ、ネットワーク、キャッシュの完全削除 sudo docker system prune -a --volumes # Dockerサービスの停止と自動起動無効化 sudo systemctl stop docker sudo systemctl disable docker
2. Nginxのインストールと起動
Webサーバーの基盤となるNginxを導入します。Ubuntu 25.04では標準リポジトリから安定したバージョンがインストールされます。
# パッケージリストの更新とインストール sudo apt update sudo apt install -y nginx # Nginxの起動と自動起動有効化 sudo systemctl start nginx sudo systemctl enable nginx
ブラウザで http://satoshi71.com(またはサーバーのIPアドレス)にアクセスすると以下の通り「Welcome to nginx!」という画面が出ました。まずはここまで成功。
3. MySQL 8.x の構築と外部接続許可
データベースをインストールし、HeidiSQL等のGUIツールから直接管理できるよう設定を変更します。
# MySQLサーバーのインストール sudo apt install -y mysql-server # 初期セキュリティ設定(パスワード設定等) sudo mysql_secure_installation # 外部接続用ユーザーの作成(MySQLにログインして実行) # sudo mysql # > CREATE USER 'admin'@'%' IDENTIFIED BY 'ご自身のパスワード'; # > GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; # > FLUSH PRIVILEGES; # > EXIT; # 外部接続許可の設定変更 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # 「bind-address = 127.0.0.1」を「bind-address = 0.0.0.0」に書き換え # 設定反映のための再起動 sudo systemctl restart mysql
4. VPS管理パネルでのポート開放
OS内部の設定だけでは通信は届きません。インフラ側のファイアウォールを解除する必要があります。Xserverのネットワーク層でデフォルトで遮断されている「MySQL専用ポート(3306)」を明示的に開けるためです。
Xserverの管理画面サイトに行き、VPS管理パネル > パケットフィルタ設定 と進めると設定ページに行きます。設定項目は以下の通りです。
- プロトコル: TCP
- ポート範囲: 3306
- 許可対象: すべて許可(より安全にするなら自身の接続元IPのみ)
5. 外部GUIツール(HeidiSQL)によるDB管理
コマンドラインではなく、Windowsから直感的にDBを操作するための環境を整えます。HeidiSQLの選定理由は、非常に軽量で動作が速くWindowsでよく使われているソフトだからです。また、完全無料で全機能を制限なく無料で利用できます。公式サイト(heidisql.com)からインストーラー(64 bit)を入手して実行します。インストール後の接続設定項目は以下の通りです。
- ネットワーク種別: MySQL (TCP/IP)
- ホスト名 / IP: satoshi71.com(またはサーバーIP)
- ユーザー: (例)admin(MySQL内で作成した管理ユーザー)
- パスワード: (作成時に設定したパスワード)
- ポート: 3306
以下の通り接続に成功しました。
6. Let’s Encrypt による SSL/TLS 認証の実装
certbot を使用し、satoshi71.com を HTTPS 化します。Nginx の設定書き換えも自動で行います。
# Certbotツールのインストール sudo apt install -y certbot python3-certbot-nginx # 証明書の発行とNginxへの適用(対話形式) sudo certbot --nginx -d satoshi71.com # 途中Emailアドレスを聞かれているが、普段使っているメールアドレスを入力してOK。 # 更新トラブルの通知を受け取るため。 # メールアドレス入力: Enter # 利用規約への同意 (Terms of Service): (A)gree か (Y)es を入力して Enter # お知らせメールの可否 (Marketing mail): Let's Encrypt からのニュースレターがいらなければ N で Enter # リダイレクト設定 (Redirect): # 1: No redirect(HTTPでもHTTPSでもアクセスできる) # 2: Redirect(HTTPに来た人を強制的にHTTPSへ飛ばす) おすすめは2 # 証明書の自動更新テスト(シミュレーション) sudo certbot renew --dry-run
ブラウザで https://satoshi71.com/にアクセスすると以下の画面が出ました。SSL化成功です。
7. OSおよびVPSのネットワーク制限解除
最後に、外部からの通信を許可するためのファイアウォール設定を確認します。
# Ubuntu OS側の設定 (ufwを使用している場合) sudo ufw allow 'Nginx Full' sudo ufw allow 3306/tcp
これでDockerの抽象化レイヤーに依存しないUbuntu 25.04の性能をダイレクトに引き出すWebサーバー基盤が整いました。直接構築(ベアメタル)を選択したことで、各サービスの挙動やログの透過性が高まり、トラブルシューティングやHeidiSQLからの外部接続も極めてスムーズになります。今後はこの安定した基盤上でPHP の導入や具体的なWebアプリケーションの実装へと進めていく予定です。
スポンサーリンク

