実践!Windows Serverで作成したサイトのWebを発行してみよう
Windows Server VPSを契約して初めにやるべきことから最終的にWeb Deployで作成したサイトを表示できるようにします。ただし、試行錯誤して環境を整えていたので、説明が抜け落ちていたり余計なことをやっている部分があるかもしれません。
Windows Server 2016 VPSを契約したら初めにやるべきこと
Windows Server VPSはリモートデスクトップで操作します。なのでお使いのWindows端末はProfessional以上でないといけません。リモートデスクトップでサーバにアクセスしたら、まず初めにWindows Updateを実行しましょう。 Windowsのロゴなど下に表示されているタスクバーの検索アイコンをクリックして、「windows update」と打って更新とセキュリティのウィンドウが立ち上がったら「更新プログラムのチェック」ボタンを押してアップデートを行います。 更新が終わったらそれをインストールするために再起動を行います。少し時間がかかり、リモートデスクトップでアクセスできない時間が続くかと思います。この時間を利用してお名前.comなどで取得したドメインを契約したWindows ServerのIPに向けるDNSゾーンとレコードの登録作業を行ってください。今回は本サイトと管理ページの2つのサイトを構築するので管理ページの方はサブドメインを切ります。ここでは「admin.yigao.jp」としました。管理ページに向けるIPアドレスは本サイトと同様のサーバのIPアドレスを指定してください。
更新が終わったらデータベースが必要なのでローカルでインストールした時にダウンロードした「SQLServer2016-SSEI-Expr.exe」と「SSMS-Setup-JPN.exe」をWindows Serverにコピペします。 リモートデスクトップでは「Ctrl + C」でファイルをコピーしたものが共有されるので、お使いの端末でコピーしたファイルをリモートデスクトップのWindows Serverのデスクトップ画面に「Ctrl + V」で貼り付けできます。
SSMSはファイルサイズが800MBもあるので転送に30分以上かかります。さくらのWindows Server VPSでお試し期間だと通信制限があるので更に遅くなるでしょう。
転送が終わったらデータベースのインストール前にサーバのコンピュータ名を変えます。 サーバーマネージャーを立ち上げてコンピュータ名をクリックし、お好きなコンピュータ名に変えます。
データベースの移行手順
コンピュータ名を変えたらSQL ServerとManagement Studioをインストールします。手順は開発端末と同様の方法に従ってください。インストールが完了したらデータベースを構築しましょう。SQL Serverではデータベースをまるごとバックアップできるコマンドとそれを復元できるコマンドが用意されていますが、恐らくログデータなどいらないデータも全て復元されてしまうので、今回はスクリプトを使って新しくテーブルやデータを作成する方法を紹介します。
まずは開発で使っていたローカル端末でSQL Server Management Studioを立ち上げてオブジェクトエクスプローラーからデータベースを右クリックして「タスク」から「スクリプトの生成」を選択します。
立ち上がったウィンドウから「次へ」をクリックして「特定のデータベース オブジェクトを選択」を選択し、全てのテーブルにチェックを入れ、「次へ」を押します。
詳細設定をクリックします。
「スクリプトを作成するデータの種類」が「スキーマのみ」となっていることを確認します。スキーマとはデータが入っていないテーブルそのもののことです。
このスクリプトを実行することによりテーブルを作成するSQL文を生成してくれます。スクリプトの保存方法はファイルに保存をしても構いませんし、クリップボードに保存しても構いません。次へを押して行ってスクリプトを実行してください。
Windows ServerのSQL Server Management Studioを立ち上げて、空のデータベースを作成します。名前は任意ですが、ここでは開発環境と合わせました。その後にスクリプトにより生成されたSQL文をクエリを使って実行します。データの入っていない空のテーブルができたと思います。今度は必要なデータを入れましょう。
開発端末に戻って先ほどと同様にデータベースを右クリックして「タスク」から「スクリプトの生成」を選択します。今度は「特定のデータベース オブジェクトを選択」する画面でデータを取り出したいテーブルにチェックを入れます。「m_kiji」や「m_comment」などテストデータしか入っていないテーブルのチェックは外し、「c_big_category」や「c_small_category」などのテーブルのデータ取得は必須だと思います。
次へで進んでいき、「詳細設定」で「スクリプトを作成するデータの種類」で「データのみ」を選択してOKボタンを押します。スクリプトで生成されたSQL文をWindows ServerのSSMSで実行し、データの移行は完了です!
Webサイトを表示する準備。Windows Server 2016にIISの機能の追加をする
まずはサーバーマネージャーを立ち上げて、右上にあるメニューの「管理」から「役割と機能の追加」をクリックします。 次へを押して、「役割ベースまたは機能ベースのインストール」を選択して次へボタンを押します。対象サーバーの選択は最初に選択されているのもので大丈夫なのでそのまま次へボタンを押します。「サーバーの役割」まで次へボタンを押し、下記の項目の機能の追加をします。
・Webサーバー(IIS)
・.NET Framework4.6 の ASP.NET 4.6
・管理ツール の 管理サービス
・Webサーバー の アプリケーション開発 の ASP.NET 4.6
IISをインストールしたら
・Webサーバー の HTTP 共通機能 の WebDAV 発行
にチェックを入れます。 ここまでできたら、契約しているサーバのIPアドレスをブラウザのURLに打ってアクセスしてみると ページが表示されていることが確認できると思います!
作成したWebサイトを発行してIISで表示させてみよう
いよいよ大詰めのIISで構築したサイトを表示させる設定を行いましょう。Windows Serverでコントロールパネルから表示方法を小さいアイコンに変えて、「管理ツール」を開き、「インターネット インフォメーション サービス(IIS)マネージャー」を実行します。画像のように右クリックで「Webサイトの追加」から下記の設定をしてください。
・サイト名(サイトだと認識できる文字列を入力してください)
・物理パス(サイトを構築するディレクトリのパスです。デフォルトのままで構いません)
・ホスト名(サイトのドメインを入力してください)
ここまで設定できるとブラウザのURLにIISで作成したドメインを打ち込むと表示できているか確認します。
表示されていますね!
Webを発行するためにWeb Deploy v3.6を下記のサイトでダウンロードしてWindows Serverにインストールします。
https://www.microsoft.com/ja-jp/download/details.aspx?id=43717
インストールする際は「完全」を選択してください。
IISの設定をします。画像のように管理サービスを起動してください(ない場合はサーバーマネージャーから機能の追加で管理サービスのインストールを行ってください)。
リモート接続を有効にするにチェックを入れて右のサイドバーにある「適用」ボタンを押します。
コントロールパネルから管理ツールのサービスを起動して、「Web Management Service」が起動していない場合は「開始」で起動します。
IISのトップからサイドバーにあるサーバを選んで、管理から「IIS マネージャー ユーザー」を開きます。右サイドバーにある「ユーザーの追加」からVisual Studio Webから発行に使うアカウントを作成します。
ユーザー名とパスワードは任意です。
アカウントの作成が終わりましたらサイドバーにある自分のサイトをクリックして、管理の「IIS マネージャーのアクセス許可」を開きます。
右サイドバーにある「ユーザーの許可」からIISマネージャーを選択して、先ほど作成したアカウントを選択します。
IISのサイトを右クリックして「展開」から「Web配置による発行の有効化」を選択してください。
発行アクセス許可を付与するユーザーに作成したアカウントを選択して設定ボタンを押します。下の項目は特に触らなくてもよいです。
サーバの設定は以上です。Visual Studio Webからサイトの発行を受け取る準備が整いました。
更に「表示」から「ツールバー」の「Webの1クリック発行」を選択し、発行ボタンを表示させます。
発行:の「発行設定の作成」から「新しいカスタムプロファイル」を選択して、
Server: (自分のドメイン)
Site name: (サイトを識別できる名前)
User name: (IISで設定した発行に使うアカウント名)
Password: (IISで設定した発行に使うアカウントのパスワード)
Destination URL: (発行に成功したら表示させるURL)
プレビューで発行できるか試すことができます。
ここで注意!mdlConstにあるデータベース接続コードを開発環境のものからWindows Serverで作製したデータベースの接続名に変更しなければなりません。
設定する方法は「ASP.NET MVC5(C#)でSQL Serverにあるデータを取得する方法」にあるようにWindows ServerにあるSQL Server Management Studioを参照してコードを書いてください。既存の開発環境に向けたデータベース接続コードはコメントアウトをしてあとで戻せるようにするとよいです。
発行ボタンを押せば晴れてWebサイトの構築とアップロードの完了です。管理ページも同じようにWindows Serverに戻ってIISから「Webサイトの追加」でホスト名を「admin.ドメイン」などとしてサイトの土台を構築しましょう。Web Deploy(Webを発行)に使うアカウントは本サイトの発行で使うために使ったアカウントをそのまま管理ページも「IIS マネージャーのアクセス許可」で同一のものを指定できます。
ここで注意!そのままの管理ページをWebに上げて使うと第三者に盗聴されている場合、管理ページに入られることが考えられるわ。
盗聴ってなんですか!?
ネットワークを流れるデータを盗み取ることだよ。だから管理ページを作った場合はSSLを使って通信を暗号化させる必要がでてくるんだ。
Let’s EncryptでIIS上にSSLサイトを導入する方法(無料)
Let's Encrypt の設定(Windows Server)