非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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アプリケーションの実装へと進めていく予定です。

 

スポンサーリンク

 - Xserver VPS