WindowsサーバーをLinuxに移行するための調査ガイド
✨はじめに
Windowsサーバーを移行するためには、まず現状を調査することが重要です。この記事では、「このWindowsサーバーは何…⁉️」状態から、Linuxに移行するために調査した内容と方法をまとめました🔍
▶️ やったこと
- ドメイン:ドメイン設定を確認
- サービス:起動しているサービス一覧を取得
- ストレージ:各ドライブの利用状況を確認
- アプリ:アプリケーション環境の確認
- ジョブ:タスクスケジューラのジョブを洗い出し
- ログ:IISやアプリケーションのログを確認
- リクエスト制御:アクセス制限、URLリダイレクトの設定を確認
- パーミッション:ファイル・フォルダの許諾を確認
- 認証:Basic認証の設定を確認
🏠 IISのドメイン設定を確認
IISのドメインの設定は、「バインド設定」で確認します。バインド設定では、サイトがリクエストを受け取るIPアドレス、ポート、SSL設定などを設定しています。Linux環境では、ApacheやNginxのVirtualHost設定に相当します。
👉 確認方法
- IIS Manager (
inetmgr
) を開く - サイト一覧の「状態」列で「開始済み」のサイトの設定値を確認
📌 ポイント
- どのドメインがどのホスト名やポートに割り当てられているか確認する
- SSL証明書の適用方法を確認し、証明書の移行を計画する
- Windowsサーバーで利用しているホスト名をLinux環境で再現する方法を検討 (DNS設定や
/etc/hosts
の設定)
💻 起動しているサービスを取得
WindowsのサービスはLinuxの systemd
や supervisord
で管理されるものに置き換える必要があります。
👉 確認方法
1️⃣ GUI
- サービス管理ツール (
services.msc
) を開く - サービス一覧の「状態」列で「実行中」のサービスを確認
2️⃣ PowerShell
- PowerShellを開く
- 以下のコマンドを実行し、「実行中」のサービスを抽出する
Get-Service | Where-Object {$_.Status -eq "Running"} | Format-Table -AutoSize
📌 ポイント
- 必要なサービスと不要なサービスを分類する
-
IIS
はNginx
やApache
に、SQL Server
はMySQL
やPostgreSQL
に置き換えが必要か確認
📂 各ディスクの使われ方と使用量を確認
Windows では、Cドライブ、Dドライブのようにドライブレターで各ディスクを管理します。一方、Linux では、すべてのディスクが /
(ルートディレクトリ) を起点としたディレクトリ構造にマウントされます。
👉 確認方法
- エクスプローラーを開き、各フォルダの容量を確認
📌 ポイント
- どのドライブに何のデータが保存されているかを把握する
- 不要なデータを整理し、移行対象を明確にする
- Linux移行後のディレクトリ構成を検討する
📂 ディレクトリ構成の具体例
データの種類 | Windowsの保存場所 | Linuxの移行先候補 |
---|---|---|
OSシステムファイル | C:\Windows\System32 |
/ (除外) |
アプリケーション | C:\Program Files |
/opt または /usr/local
|
Webサイトのデータ | C:\inetpub\wwwroot |
/var/www/<プロジェクト名> |
ユーザーデータ | C:\Users |
/home |
ログ |
C:\inetpub\logs など |
/var/log |
参考:🔗 各ディレクトリの役割を知ろう(ルートディレクトリ編)
🐥 アプリケーション環境の確認
Windowsで動作しているアプリケーションをLinux環境に適応させるために、ソフトウェアやミドルウェアの構成を調査します。
👉 確認方法
- 「コントロールパネル」→「プログラム」→「プログラムと機能」を開く
- インストール済みアプリケーションの一覧を確認
📌 ポイント
- ソフトウェアのLinux版が存在するか調査し、代替ソフトを検討
- 設定ファイル (
ini
,config
,xml
など) がLinuxで適用可能か確認
🫧 タスクスケジューラのジョブを洗い出し
WindowsのタスクスケジューラはLinuxの cron
に相当します。PowerShellスクリプトなどはBashスクリプトに書き換えが必要になる場合があります。
👉 確認方法
1️⃣ GUI
- タスクスケジューラ (
taskschd.msc
) を開く - 「タスクスケジューラライブラリ」をクリック
- 設定を確認 (ホスト名, IPアドレス, ポート)
2️⃣ PowerShell
- PowerShellを「管理者として実行」で開く
- 以下のコマンドを実行し、Microsoft以外のタスク(Windows標準のタスク以外)を抽出する
Get-ScheduledTask | Where-Object { $_.TaskPath -notlike "\Microsoft\Windows\*" }
📌 ポイント
- 実行頻度や依存関係を確認し、
cron
やsystemd timer
で再現可能か検討する - Windows固有の機能を使用していないか確認 (例: Windows Script Host)
🔎 ログの確認
エラーログやアクセスログを確認し、移行後に問題が発生しないように準備します。
👉 確認箇所
- IISのアクセスログ (デフォルトパス📁
C:\inetpub\logs\LogFiles
)
参考:🔗 IISのログ設定 - アプリケーションのエラーログ (
config
のerror_log
設定) - Windowsイベントログを
Event Viewer
で確認
📌 ポイント
- IISのログ形式とLinuxのWebサーバーログ形式の違いを考慮
- Windowsイベントログの情報をどのようにLinux環境で取得するか検討
🧱 リクエスト制御の設定を確認
IISでは、受信するリクエストの制御を「受信の規則」で設定できます。特定のIPアドレスや国からのアクセス制限、URLリダイレクトなどを管理できます。Linux環境では、IISの「受信の規則」に相当する設定は Nginx
や Apache
の設定ファイルで行います。
👉 確認方法
- 🗂 Web.configファイルの確認
- Web.configファイルは、アプリケーションレベルの設定ファイルであり、通常Webサイトのルートディレクトリに存在します。
- テキストエディタで開き、
<system.webServer>
セクション内に以下の要素でリクエスト制御の設定が記述されているか確認します。- 🔒
<security>
: セキュリティ関連の設定(IPアドレス制限など) - 🚦
<requestFiltering>
: 要求フィルタリングの設定 - 🔄
<rewrite>
: URLリライトの設定
- 🔒
- 🏗 ApplicationHost.configファイルの確認
- ApplicationHost.configファイルは、サーバーレベルの設定ファイルであり、通常
%windir%\System32\inetsrv\config
ディレクトリに存在します。 - テキストエディタで開き、「
<system.webServer>
」セクション内にWeb.configと同様の要素でリクエスト制御の設定が記述されているか確認します。 - ApplicationHost.configファイルはサーバー全体の設定であり、すべてのWebサイトに影響を与えます。
📌 ポイント
- 特定のIPアドレスや国からのアクセス制限があるか確認
-
Nginx
ではallow
/deny
ディレクティブを使用、Apache
ではRequire ip
や.htaccess
で制御
-
- URLリライトやリダイレクトの設定を確認し、Linux環境での再現方法を検討
-
Nginx
のrewrite
やApache
のmod_rewrite
を利用
-
- Windows Firewall やネットワーク機器の設定とも連携しているか確認
🛠️ パーミッションの確認
Windowsのアクセス権はACL(Access Control List)で管理されますが、Linuxでは chmod
や chown
による管理となるため、移行時のマッピングが必要です。
👉 確認方法
Webアプリケーションが使用しているフォルダのアクセス権を確認します。
- エクスプローラーでフォルダを右クリックし、「プロパティ」→「セキュリティ」タブで、アクセス権を確認する
- アクセス権の種類(読み取り、書き込み、実行)と、各ユーザーまたはグループにどのようなアクセス権が付与されているかを確認
📌 ポイント
- Windowsの
NTFS
権限とLinuxのchmod
/chown
の対応関係を整理
参考:🔗 Windowsと何が違う? Linuxのファイルパーミッションの変更方法 - Webサーバー実行ユーザー (
www-data
やnginx
) の設定を適切に行う -
IUSR
(IISの匿名ユーザー)、NETWORK SERVICE
(ネットワークサービスアカウント)などのWebサーバー関連のアカウントのアクセス権は大事🫶
👤 Basic認証設定の確認
WindowsのIISで設定されているBasic認証は、Linux環境に移行する際に .htpasswd
ファイルを使用した認証情報へ置き換える必要があります。
👉 確認方法
1️⃣ Basic認証が設定されているか確認
-
IIS マネージャー (
inetmgr
を実行) を開く - 左ペインの「サイト」または「アプリケーション」一覧から対象のサイトを選択
- 「認証」(Authentication) を開く
- 「基本認証」(Basic Authentication) の状態を確認 (有効/無効)
2️⃣ 対象ユーザーの抽出
- サイトに設定されているエクスプローラーを右クリックし、プロパティを開く
- セキュリティタブよりグループ名👥またはユーザー名👤を確認
3️⃣ グループ所属ユーザーの確認
- 「コンピューターの管理」 を開く
- 「ローカルユーザーとグループ」>「グループ」 を選択
- 確認したいグループをダブルクリックし、「メンバー」 で所属ユーザーを確認
📌 ポイント
- ユーザー情報の移行方法を検討
- ローカルユーザーなら、Basic認証の仕組みを Apacheの
.htaccess
または Nginx のauth_basic
に置き換える - ADのユーザーなら、LinuxでもLDAP認証やSSOを利用できるか検討
- ローカルユーザーなら、Basic認証の仕組みを Apacheの
- パスワードを再設定
- 既存ユーザーのパスワードは確認できないので、新規パスワードを作成する
🩵 おわりに
Windowsサーバーの現状を把握し、Linux移行に向けたステップを検討するための調査ポイントをまとめました👀
移行を検討されている方々にとって、少しでもお役に立てれば幸いです。
えみり〜でした|ωΦ)ฅ
Discussion