布団が俺を呼んでいる

丘山大一のぶろぐ

IISのお勉強 WordPressのインストール その2

前回の続き。
ISを見ながらIISの設定をしていきます。

まずはWordPressにアクセス。
ここまでデフォルトなら、
http://XXX.XXXX.XXX.XXX/wordpress
(XXX.XXX.XXX.XXX はサーバのIPアドレス)
必須項目を入力していきます。
・・・・・・WordPressについては、なんとゆーか以下略。
あんまり書けることがありませんw
とりあえず最低限だけ設定。

さて、外部公開するためには、グローバルアドレスが必要となります。
私の環境はDynamic DNS を利用しているので、ご存じDice先生の設定が必要です。
まずはダウンロード。
$client = New-Object System.Net.WebClient
$client.DownloadFile("http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=dice159_msi", "E:\Dice.msi")

さて、使い方を調べるためにとりあえずヘルプを引きます。
E:\Dice.msi -?
ふんふん。
なんとなくわかった気になったところでインストール。
E:\Dice.msi /quiet /passive /promptrestart

続いて設定します。
DIce 自体は下記に入っています。
C:\Program Files (x86)\Sarad\DiCE\dice.exe
なのですが・・・・・・さて、ここで非常に困ったことが起きます。
といのも・・・・・・Dice for Windows にはコマンドラインから設定を制御する機能が無いようです(汗)
というより、正確にいえばサービスとして起動できるのは有償版です。
無償版ではできないようです。
以前 CentOS で設定した時は逆にコマンドラインでしか設定していなかったので油断していました(汗)
設定自体は先ほどのインストールフォルダdice.datに入っているので、それを直接制御すればよいでしょうが、それでは設定の柔軟性に欠けます。
また、Diceがアップデートした場合(近年されていないようですが)に対応できなくなってしまいます。
残念ですが、ここはGUIで設定するか、他のマシンで設定したファイルをコピーすることで対応します。
「説明」に適当な名称、
「サービス」から使用しているサービスを、
「ホスト名」「ドメイン名」「ユーザー名」「パスワード」に上記サービスで登録した内容を設定。
スケジュールは任意でOKだと思いますが、あんまり頻繁にやっても仕方ないので、
「周期的」-「1時間毎」
を設定しておきます。
まあこのあたりは利用しているサービスとの兼ね合いと好き好きだと思います。
ServerCoreでやっている場合は、別サーバにDIceを登録してしまって、そちらでGUI制御してしまった方が速く分かりやすいと思います。

さて、ここまでできたら、サーバ側の基本設定はほぼ終わりです。
あとはルータ側でポートフォワーディングを設定。
ここも、ルータによって設定が異なるので以下略です。

諸々設定が完了したら、下記Webサイトで設定が正しいか検証できます。
http://www.cman.jp/network/
外部のWebサイトを使うのは、自分のローカルマシンのブラウザからだとうまく名前解決できなかったり、Hostsに書いてある設定で名前解決してしまったり等して、正しく検証できないからです。
やり方は簡単で、ページ左のHTTPチェックを開き、URLを入力して「ホームページ表示確認」を実行します。
おお、なんて便利。

今回のまとめ。
やっぱりシャルが可愛い。

Windows PowerShell 実践システム管理ガイド2版 (TechNet ITプロシリーズ)

新品価格
¥4,320から
(2015/10/21 00:21時点)

IS<インフィニット・ストラトス>2 (初回生産版) 全7巻セット [マーケットプレイス Blu-rayセット]

新品価格
¥29,989から
(2015/10/21 00:24時点)

IISのお勉強 WordPressのインストール その1

何故にこのようなことをしているのかと言えば、
「ただ単に私がIISを使ったことが無いから」
です、ハイ。
このブログではサーバー周りを取り上げることが多いですが、ワタクシ本職はWinForms畑ですので。

まずはIISのインストールから。
いきなり手を広げたりせず、まずは基本+管理ツールだけ入れてみることにします。
まあ無くても、WordPressインストール時にある程度入るんですけど。
Install-WindowsFeature Web-Server -IncludeManagementTools

実行結果は、おそらくGUIで「サーバーの役割」-「Webサーバー(IIS)」にチェックを入れ、後は既定でインストールした時の結果と同一であると思われます。(管理ツールインストール含めて、既定と書いています)

それが完了したら、続いてWordPressのインストール・・・・・・前に、ちゃんとWeb Serverが起動しているかどうかチェックしてみます。
ブラウザのアドレス欄に
http://XXX.XXX.XXX.XXX
と入力。ポチっとな、でデフォルトページが表示されます。
適当に作った検証用環境なのですが、これだけでもちょっと感動。

さて、なんとなく満足できたところで、続いてWordPressのインストール。
Web Platform Installer からインストールしてみます。
でもコレGUIからしか動かしたことねーぞ、どうやるんだろう・・・・・・と思ったら、やはり先達がいらっしゃいました。
記事ではv4ですが、折角なのでv5を・・・・・・と入れてみようと思ったら、x86用でした。
ので、素直にv4を入れてみたいと思います。
というわけで、上記で紹介されているコマンドをそのまま入力します。
$client = New-Object System.Net.WebClient
$client.DownloadFile("http://download.microsoft.com/download/C/F/F/CFF3A0B8-99D4-41A2-AE1A-496C08BEB904/WebPlatformInstaller_amd64_en-US.msi","E:WebPI.msi")
容量は2M位はより小さいので、ダウンロード自体はすぐに終わります。
※ダウンロードしたmsiの使い方は、-?でヘルプを呼び出せます。

インストールは下記コマンドで行いました。保存先は適当。
E:\WebPI.msi /passive /promptrestart
こちらもすぐに終わります。

インストール終了後、作業を楽にするために場所を移動しておきます。
Set-Location 'C:\Program Files\Microsoft\Web Platform Installer'

インストールできる製品は次のコマンドで確認可能。
.\WebpiCmd.exe /list /listoption:All

さて、ここからWordPressのインストールです。
インストールには次のコマンドを実行。
.\WebpiCmd.exe /install /Application:"WordPress"

ここからは対話式に進んでいきます。
・コマンドを実行すると、MySQLのパスワードを聞かれるので、任意のパスワードを入力します。
さらに、ライセンス条項に同意するかどうか聞かれるので、「Y」を入力。
しばらく、インストールが続きます。
それが終わると怒涛の設定ラッシュです。
インストールが終了すると、アプリケーションパス、データベースサーバーを入力するように促されます。
検証用なので、ひとまずデフォルトで突っ込みます。エンターキー2回で突破。
続いてデータベース名、データベースユーザー名を入力するように促されますが、ここもエンターキー(デフォルト:wordpress、wordpressuser)で突破。
次のデータベースパスワードはデフォルト値突破できないので、ここは適当に入力しておきます。
そしてデータベース管理者を要求されます。デフォルト値rootはエンターキーで突破。
データベース管理者パスワードは、データベースパスワードと同じくデフォルト値突破できないので、入力しておきます。
続いて4種類のユニークキーの入力を求められます。面倒なのでデフォルト突破。
・それが完了すると、上記で入力した4種類のユニークキーの再入力を求められます。間違えていないことを確認しながら入力。
これが完了すると、ようやく
「製品のインストール:成功」
となります。

動作確認するためには、ブラウザで
http://XXX.XXX.XXX.XXX/wordpress
にアクセスすればOK。

コマンドで確認する場合は下記。
Get-WebApplication

結果はこんな感じ。
Name             Application pool   Protocols    Physical Path
----             ----------------   ---------    -------------
wordpress        DefaultAppPool     http         %SystemDrive%\inetpub\wwwroot\wordpress

ちゃんとwordpressと出ています。

とりあえずここまでの感想。
シャルが可愛い。

Windows PowerShell 実践システム管理ガイド2版 (TechNet ITプロシリーズ)

新品価格
¥4,320から
(2015/10/21 00:21時点)

IS <インフィニット・ストラトス> 全6巻セット [マーケットプレイス Blu-rayセット]

新品価格
¥15,800から
(2015/10/21 00:23時点)

おしえて! ギャル子ちゃん  アニメ化

マジっすか。

気になるのは、ギャルンギャルンという擬音の演出。
どうやって表現するんだろう?


おしえて! ギャル子ちゃん 1 (MFコミックス)

新品価格
¥950から
(2015/11/9 20:41時点)

PowerShell ファイル数を数えての分岐

ファイル数を数えて、その数が一定数以下の場合、条件を満たしていないとして処理を中断させたかった。

if((Get-ChildItem $Path | Measure-Object | %{ $_.Count}) -le 2)
{
    Write-Warning "処理を中断します!"
    Exit-PSSession
}

なんかスマートさに欠けるような。もっと楽にとれないかな?
ちなみに、
Get-ChildItem $Path | Measure-Object | Select Count
でもファイル数自体はとれるんだけど、intで返らずオブジェクトで返ってくるので、単純な数比較がしづらい。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

PowerShell Invoke-Sqlcmdが動かない場合の一時対応

地味にはまった。
SQL Server2008R2 の入ったクライアントPCで、Invoke-Sqlcmdが通らず。
他人のPCなので、あまり設定をゴチャゴチャ弄りたくない。
そんな時は、下記コマンドを突っ込むと、そのセッション中はInvoke-Sqlcmdが使えるようです。

Add-PSSnapin SqlServerCmdletSnapin100 
Add-PSSnapin SqlServerProviderSnapin100 

SQL2012、2014といった場合は110,120になるのかな?
※管理ツールがインストールされていないとダメかも?
 未確認です。

動くサンプルで学べる Windows PowerShell コマンド&スクリプティングガイド PowerShell 4.0対応

新品価格
¥3,218から
(2015/10/31 18:28時点)

PowerShell Invoke-Sqlcmd で SQLServerの名前付インスタンスにアクセス

地味~に苦戦。
こことか見ながら。
上記サイト通りの「read-host 」を実行すると、パスワード入力が求められるようになります。
今回は入力を求められないようにしました。

$Sql = ("select name from sys.databases;")
$DBLst = Invoke-Sqlcmd -Query $Sql -ServerInstance "localhost\名前付インスタンス" –Username "sa" –Password "パスワード"

取得した結果は$DBLstに入っています。
アクセスする時はこんな感じで。
foreach($db in $DBLst){
    Write-Output $db['name']
}

初めのうちは、PowerShell がオブジェクトで値をとってくる、ということのメリットがよく分かりませんでしたが、段々と便利、と思えるようになってきました。


動くサンプルで学べる Windows PowerShell コマンド&スクリプティングガイド PowerShell 4.0対応

新品価格
¥3,218から
(2015/10/31 18:28時点)

PowerShell 64ビット判定

PowerShell バージョンによって違う? かもしれません。
動作を確認したのはWindows7からアップグレードした直後のWindows10。なのでバージョン5.0。
とりあえず64bitか否かで、ProgramFilesの場所を決めてみた。

$OS = Get-WmiObject -Class Win32_OperatingSystem
if ($OS.OSarchitecture -match "64")
{
    $Path = "Program Files (x86)"
} else
{
    $Path = "Program Files"
}


Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell 物理ドライブのドライブレター取得

やり方あるんですね。
取得自体は簡単でした。
Get-WmiObject Win32_LogicalDisk

使う時はこんな感じ?
foreach($Drive in Get-WmiObject Win32_LogicalDisk){
    if(Test-Path ($Drive.DeviceID + "\HogeHogeFolder")){        
        #処理
    }
}

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell ローカルアカウント一覧の取得

どうやるのが正解なのか今一つ分からなかった。
Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount='true'"

下記でも取得できるが、フィルターのかかるタイミングの差か、AD環境下で沢山のユーザがひっかかってしまう場合だと遅いみたい。
あと汎用性に欠ける。
Get-CimInstance -ClassName Win32_UserAccount | Where-Object {$_.Domain -like "コンピューター名"}

GUIで 1:ユーザ追加 2:ユーザ名変更 とした場合、GUI上表示されるユーザ名とユーザプロファイル名がズレる(ユーザプロファイル名は変更前のまま)なのですが、上記のやり方だと変更後のユーザ名が取得できません。
どうやれば取得できるんだろう。

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell Hostsファイルの更新 と 確認

ホストファイルの末尾に追記します。
Add-Content "C:\Windows\System32\drivers\etc\hosts"  "XXX.XXX.XXX.XXX`thogehoge.hoge"
IPの直後にある「`t」はタブ文字です。
入力する場合は「Shift+@」+「t」で。

追記後、確認したいなら次の一文。
start notepad "C:\Windows\System32\drivers\etc\hosts"

関係者に、「IP記述して~」という代わりに、このスクリプト実行して~の方が、楽・・・・・・
かと思ったけど、手間はあまり変わらないか。
Hostsファイルの開き方よりも、PSスクリプトの実行の仕方の方が知られてないもんなあ・・・・・・。


【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)