作成者別アーカイブ: the-takeo

Googleドライブはシンボリックリンクに対応しきれていない。

ファイルのバックアップのために、毎晩ローカルのファイルを自宅ファイルサーバーにコピーするように設定している。
しかし、自宅ファイルサーバーと言っても所詮は安物サーバーなので、完全に安心はできない。
そもそもローカルもサーバーも同じ「自宅」になる以上、自宅がどうにかなるともうだめである。

そこで、自宅ファイルサーバー(今はお試しを兼ねてWindows Server 2016 Previewを利用)の内容をさらにGoogleドライブにコピーするように設定しようとした。
結果としてできなかったのだが、それまでの過程を記述する。

  • 試行1 – Googleドライブにファイルコピーする
    単純にGoogleドライブのクライアントをサーバーにインストールし、
    ローカルのGoogleドライブ内にファイルをコピーしようと考えた。

    しかし、ファイルは1T近くあるため、こうするとバックアップのためだけに余分にもう1TBも
    容量をとられる結果となる。
    よって、これは却下した。

  • 試行2 – WevDavでGoogleドライブに接続する
    有料ソフトが多く、使ってみると実際はローカル上にファイルをおいているものもあり、却下した。
  • 試行3 – Googleドライブ内に同期したいファイルのシンボリックリンクを作成する。
    シンボリックリンクならファイルの実態は1つのままだし、
    作成も容易なので、コレでうまくいくと思った。

    実際、Googleドライブ内にシンボリックリンクを作成したところ、
    アップロードが実行された。

    これで問題解決、と思ったが、そううまい話ではなかった。
    初回同期後、ファイルを変更したり、追加、削除しても、Googleドライブには一切同期されなかった。
    やはり、ファイルの実態がないため、同期が働かないようだ。
    よって、これも却下となった。

  • 試行4 – Googleドライブをファイルサーバーパスに設置する。

    多分、これが最善策です。
    ただ、ファイルサーバーのファイル階層が変わるのが嫌なので敬遠している。
    バックアップスクリプトも変えなきゃだし・・・
    まぁ、今夜にでもやってみようかな。


ちなみに、Windows ServerにGoogleドライブをインストールすると、実はログインで躓く。
そうそう需要のある操作ではないかもしれないが、このあたりは今度書いておこう。

MacでChrome拡張「FastestTube」が使えなくなったので、使えるようにした。

YouTubeの動画をダウンロードするChrome拡張FastestTubeが2月下旬あたりから使えなくなった。
理由は開発者のFacebookに掲載されているが、どうやらChromeのブラックリストに掲載されてしまったらしい。

回避方法が同じくFacebookに掲載されていたので、行ってみたところ、問題なく適用できたのでその方法をメモする。
なお、7Zipというアプリを使うので、手順中でWindowsを使った。
crxファイルを展開できるアプリがあればMacでもいいんだけど、ちょっち見つかっていない状態。


  1. FastestTubeのcrxファイルをダウンロードする
    公式ページから入手可能なので、crxファイルをダウンロードする。
    スクリーンショット 2016-03-01
  2. WindowsPCにcrxファイルを移動させる
  3. WindowsPCに7Zipをインストールする
  4. 7Zipでcrxファイルを展開する
    普通のフォルダになります。
  5. 展開したフォルダごとMacに移動させる
    2016-03-01
  6. Chromeで開発者モードでFastestTubeを読み込む
    Chromeを起動し、「設定」→「拡張機能」を開く。
    「デベロッパモード」にチェックを入れる。
    「パッケージ化されていない拡張機能を読み込む」をクリックする。
    移動したフォルダを選択し、「選択」をクリックする。
    スクリーンショット 2016-03-01

以上でFastestTubeが使えるようになる。
まぁ、あくまで回避方法ではあるけど、しばらくはこれで使おう。

スクリーンショット 2016-03-01

MacのBootCampでWindows10をインストール

最近、東方にハマり、とうとう原作「東方紺珠伝」を購入した。
ダメ元でVirtual Box内のWindowsにインストールしてみたが、とてもプレイできるような状態ではなかった。
そこで、止むを得ずBootcampでWindowsをインストールすることにした。
すぐにできるだろうと思っていたら、予想外に時間がかかったので、つまった部分をメモしておく。

・パ=ティションを分けるとエラーが発生

「ユーティリティ」→「Boot Campアシスタント」から
Windowsをインストールするパーティションを作成しようとしたところ、
「パーティションが作成できません」という謎エラーが発生した。
ここでエラーが発生するとは露にも思っていなかったので、色々と試行錯誤した。

・Macintosh HDのFileVault(暗号化)を解除

したほうが得だろうと、特に意味もなく暗号化をしていた。
しかし、これが原因でパーティションが区切れなくなる場合があるそうだ。
参考: http://php-fan.org/impossible-partition-disk.html
よって、
「システム環境設定」→「セキュリティとプライバシー」→「FileVault」→「FileVaultを切にする」
で暗号化を解除した。
解除にはしばらく時間がかかるが、プログレスバーが表示されるので気長に待つと解除が完了する。

しかし、僕の環境の場合はこれだけでは解決しなかったので、次に進んだ。

・Macintosh HDディスクを修復する

HDDの中で連続した空き容量が確保できていない、もしくはアクセス権がおかしくなっている箇所があると
パーティションが分けられない場合がある。
そこで、Macintosh HDを修復することにした。
通常ではMacintosh HDは修復できないので、リカバリモードから実行する必要がある。

1. Macをシャットダウンする
2. 「command + R」を押下したまま電源を入れる
3. メニューが表示されたらボタンを離し、「ディスクユーティリティ」を選択する

以上でMacintosh HDも修復できる状態でディスクユーティリティが起動する。
ここで、Macintosh HDを選択し、「First Aid」を実行すると、いくつかエラーが見つかり、修復が行われた。
なお、ここで「修復できませんでした」と表示されたが、何度も実行していると少しづつ進み、最終的には修復することができた。
何回も実行して良いのか分からないが、修復は1度エラーが発生したらそこで操作を終了してしまう仕様らしいので、何回もやればうまくいく可能性もあるんだとか。
ソースは忘れた。自己責任でお願いします。

修復後、再起動し、Boot Campアシスタントからパーティションを分けると、無事成功した。
Windows10をクリーンインストールし、Visual Studio、東方紺珠伝、そして自宅サーバーのHyper-V Server管理に活躍している。
Windows10、俺は好きなんだけど、やっぱり互換性の問題とかで評判悪いね。
あと、妙にアプリのタイトルバーが大きくなるんだけど、これはBoot Campのせいなのかね。
不便ではないのだけど、フォームアプリ作っているとサイズがおかしくなってちょっと嫌だ。

SQL Serverの照合順序を変更する

SQL Serverでは文字列比較の基準となる照合順序が設定できる。
例えば「大文字小文字を区別する」等である。

これはデータベース毎に設定可能で、特に指定していない場合はSQL Serverセットアップ時に設定したサーバーデフォルト値が適用される。

デフォルトと異なる照合順序をデータベースに設定した場合、トラブルが発生しやすい。
例えば、一時テーブルと作成し、それとデータベース内のテーブルをJOINするようなクエリはエラーになる。
これは、一時テーブルの照合順序はサーバーのデフォルト値になっており、
異なる照合順序でのon Table.col1=temptable.col1という比較が行えないためである。
on Table.col1=temptable.col1 collate Japanese_CI_ASのように、クエリの中で照合順序を指定すればエラーは発生しない。)

仕事の都合で照合順序の変更を余儀なくされたことがあったので、その手順をメモする。
なお、実際に行ったのはSQL Server 2012だが、2008 R2や2014でも同じだと思う。

・データベース単体の照合順序変更方法

以下のクエリを実行すれば良い。
対象のデータベース名をSampleDataBase、照合順序をJapanese_CI_AS_KS_WSとする。

・SQL Server(=システムデータベース)の照合順序変更方法

データベースが存在すると実行できないため、システムデータベースを除く全てのデータベースを削除する。
(復元が必要な場合はバックアップをとっておく。)

SQLのインストールディレクトリ内にSetup.exeがあるので、そこに移動する。
規定ではC:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Releaseである。
コマンドプロンプトからSetup.exeを以下のコマンドで実行する。

例えば、インスタンス名は規定のMSSQLSERVER、Windows認証でAdministratorがSQL Serverにログイン可能で、
照合順序をJapanese_CI_AS_KS_WSに変更したい場合は以下のようなコマンドを実行する。


なお、実行できない場合、インストールメディアのSetup.exeで試すとうまくいく場合がある。
理由は不明で、偶然かもしれないが、そういう場合もあった。


参考
データベースの照合順序の設定または変更
システム データベースの再構築

ExpressWebからCoreServerへのサーバー移転 3(ドメイン編)

前回で一通りサイトコンテンツを移動させ、一応アクセスまではできるようになった。
しかし、このままではドメイン名がCORESERVERのデフォルトのもののままになっている。
今まで使っていたドメインでCORESERVERに飛べるようにドメインの設定等を行う。

・CORESERVER側の設定

  1. ネームサーバーを作成する
    ここで「他社登録しているドメインを登録」をクリックする。
    現在利用しているドメイン名を入力し、「登録」をクリックする。
    CORESERVER4
  2. DNS設定を行う
    ここで「ドメインのDNS情報の設定」をクリックする。
    先ほど登録したドメインが表示されているので、それをクリックする。
    「当サービス内サーバーの自動DNS設定」で、CORESERVERで利用しているサーバーを選択し、画面下の「保存」をクリックする。
    CORESERVER5
  3. ドメイン情報を設定する
    再度CORESERVERのコントロールパネルを開き、「マイドメインを利用」をクリックする。
    Sub1にドメイン名を入れ、Mainは空欄にする。
    設定方法は色々だが、Mainにドメイン設定すると管理がめんどくさいような気がするし、
    以後別サイトを開設した場合も、Sub2,3…に追加するだけなのでわかりやすい。
    なお、「転送先URL」は空欄にする。転送してもどうしようもない。
    最後に「ドメイン追加」をクリックする。
    CORESERVER6
  4. ドメインとコンテンツディレクトリを同期させる
    「ドメインウェブ」配下の「同期設定」をクリックする。
    ディレクトリの部分にWORDPRESSをインストールしたディレクトリを入力し、
    「ドメイン設定(同期先)」で用いるドメインを選択し、「同期させる」をクリックする。
    こうしないと、ドメイン名でCORESERVERの自分のサーバーまでたどり着いても、そこから路頭に迷ってしまう。

以上で、CORESERVER側でドメインを受け入れる作業は完了した。


最後にドメインの設定を変更して作業は完了する。
結論から言えば、ドメインのネームサーバーを

プライマリネームサーバー
NS1.VALUE-DOMAIN.COM

セカンダリネームサーバー
NS2.VALUE-DOMAIN.COM
NS3.VALUE-DOMAIN.COM
NS4.VALUE-DOMAIN.COM
NS5.VALUE-DOMAIN.COM

に変更するだけで良い。
(参考: ネームサーバーの設定)

この辺は書くサービスごとに方法は異なると思うので割愛する。


以上で、ExpressWebからCORESERVERへの移行は完了である。
今のところは全く問題なく動作している。
少し気になっていたRSSの取得も、何も設定変更せず今までどおり記事取得できている。

いつかは自宅サーバーにしたいな。
でも、そうすると管理コストが面倒で、結局レンタルサーバーに戻るんだろうな。
インフラって本当に面倒だからね。仕方ないね。

ExpressWebからCoreServerへのサーバー移転 2(サーバー、WordPress編)

サーバー移転をするにあたって、まずWordPressの移動方法を調べた。
どうやらduplicatorというプラグインを使えばかなり簡単に移行できるようだ。
(参考: 「Duplicator」プラグインを使えばWordPressのサイトを丸ごと移行できる!)

ただ、このプラグインでこのサイトをパッケージ化しようとしたところ、エラーになって出来なかった。
どうもフォルダの権限問題のようで、ExpressWebのコントロールパネルから権限フルにしても無理だったので、
仕方なく諦め、手動での移行を行うことを決めた。

テスト環境で試行錯誤を繰り返し、ようやくできた。
どうも一部通常とは異なるやり方をしている箇所もあるが、こうやらないとできなかったので仕方が無い。
原因調査は置いておいて、実際に行った手順を記録する。

なお、俺がやったのは「現行のドメイン名をそのまま用いる」移行であるので、ご了承いただきたい。


・現行サーバー(ExpressWeb)のWordPressデータをローカルに保存する

  1. FTPでWordPressで用いていたファイルを全てローカルにダウンロードする
    通常ならホーム\サイト名\wwwroot内の全ファイル、フォルダになると思う。
  2. MySQLデータをエクスポートする
    ExpressWebなら、コントロールパネルから「データベース」→「MySQL 5.1」で、
    WordPressに用いているデータベースの「データベースを参照」をクリックする。
    ExpressWeb
  3. phpMyAdminのページに移るので、DBログイン情報を入力し、ログインする
  4. WordPressで用いているDBを選択し、エクスポートを行う
    ExpressWeb2
    .sqlファイルがローカルにダウンロードされる

以上でWordPress関連データは全てローカルに保存できた。
後はこれを新サーバーに持って行き、設定を行えば良い。


・移行先サーバー(CORESERVER)にWordPressサイトコンテンツを移動させる。

  1. CORESERVERのコントロールパネルにログインする
    (正直、コントロールパネルわかりにくい。ExpressWebのがいかに使いやすかったか痛感)
  2. 「データベース」をクリックし、WordPress用のNySQLデータベースを作成する
    名前とパスワードは任意のもので良いが、文字コードは「UNICODE」にする。
    CORESERVER1
    一応、データベースが作成されるまでには1〜3分かかるそう。気長に待つ。
  3. WordPressをインストールする
    「CGIインストール」をクリックし、「WordPress 4.2 (ブログ/CMS)」の欄に任意のディレクトリ名を入力し、
    「インストール」をクリックする。
    CORESERVER2
    これも1〜3分かかるそう。気長に待つ。
  4. WordPressの初期設定を行う
    インストールが完了したら、再度「WordPress 4.2 (ブログ/CMS)」に先程入力したディレクトリ名を入力し、
    「開く」をクリックする
    初期設定画面が開かれるので、先ほど作成したDBを用いるようにWordPressを設定する
  5. ローカルに保存していた現行サイトのファイルを全て(wp-config.phpを除く)アップロードする
    具体的には、root/public_html/ディレクトリ名wp-admin等をFTPで移動させる
    ただし、注意点としてwp-config.phpだけは移動させない。
    wp-config.phpを書き換えればよいのだが、そのそもわざわざ移動させなければ良い、と思う。
  6. PhpMyAdminをインストールする
    コントロールパネルの「データベース」をクリックし、
    「■PhpMyAdmin自動インストール(MySQL管理)」の「インストール」をクリックする
    CORESERVEER3
    例によって1〜3分かかるそう。気長に待つ。
  7. 「■PhpMyAdmin自動インストール(MySQL管理)」の「自動」をクリックし、PhpMyAdminにアクセスする
    DB情報を入力し、ログインする
  8. DBデータをインポートする
    WordPressに用いたデータベースを選択し、全てのテーブルを選択、削除してください。
    削除が完了したら、「インポート」をクリックし、事前にエクスポートしていたsqlファイルを選択し、
    「実行」をクリックする。
    CORESERVER3

以上で、移行自体は完了だが、まだ不完全な部分がある。

CORESERVERのデフォルトのドメインを使ったままになっているため、
現行のドメインを用いれていない。

このあたりのことは次回まとめます。
もう眠いのです。

続き→ExpressWebからCoreServerへのサーバー移転 3(ドメイン編)

ExpressWebからCoreServerへのサーバー移転 1

今までこのブログはExpressWebで運用してきたんだけど、
この度ExpressWebがサービス終了という衝撃なニュースが入った。
安い上に素人の俺でも使えるわかりやすいレンタルサーバーだっただけに残念だ。
サポートもめちゃくちゃ丁寧で結構お世話になっていた。

まぁ、嘆いても仕方が無いので、サーバー移行を決意した。
ExpressWebはWindows Serverということが売りだったが、
結局WordPressとFTPでのファイル共有ぐらいでしか使っていない状態だったので、
Windows Serverというくくりは無くして移行先を探した。

条件は「月額500円程度」ぐらい。
そんなわけで吟味して、CORESERVER.JPのCORE-Aプランに決めた。
理由は4つ。
・安い(初期費用無し、12ヶ月契約で月397円)
・大容量(120GB)
・MySQLデータベース数無制限
・マルチドメイン無制限

負荷等を気にしなければかなりの複数サイトの運用も可能である。
要するに、コスパが非常に良い、と思う。

まぁ、サーバー移行という作業が初めてなので、四苦八苦した。
実際に移行した方法を次回まとめておこうと思う。
(特にDNSはどうすればいいのか???だった)

KB3114399でKB3055034の不具合が修正された

Windows UpdateによりOfficeファイルがWebDAVで開けなくなる問題だが、
ようやくMicrosoftが修正アップデートをしたようだ。

https://support.microsoft.com/en-us/kb/3114399

一応、直ったという報告もある。
https://www.reddit.com/r/sysadmin/comments/3vzmia/kb3114399_fixes_sharepoint_office_web_integration/

自分の環境ではまだ試せてないので、試してから追記する。


検証した。
どうやら問題なくWebDAVでのファイルオープンや保存ができるようになった模様。
[解決] KB3055034 適用後、Office 2010 アプリケーションがクラッシュする問題について


追記(2015/12/14)

自分の環境では再現できていないが、一部環境では「名前をつけて保存」時にまだ不具合がある模様。
HOME-BOX2
(「【HOME-BOX2】Office 2010 WebDAV接続不具合に関するご案内(12/10)」の項)

う~ん。これは困った。


追記(2016/02/24)

上記現象もKB3114750でようやく解消した模様。
https://support.microsoft.com/ja-jp/kb/3114750
よかったね。おめでとう。

Hyper-Vの仮想マシンのネットワークを制限する方法

仕事でHyper-V上で複数マシンを立ちあげて管理している。
一応、各ゲストマシンはそれぞれ無関係なので、ゲストマシン間の通信は行えないようにしたい。
ただ、現実問題として使える仮想ネットワークアダプタは限られているので、
どうしても同じネットワークアダプタを使わざるを得ない。

何とか良い通信制御方法は無いかと探していたら、Hyper-VでAcl(アクセス制御)ができることが分かった。
ホストマシンでコマンド実行するだけなので、一度わかればかなり楽に設定が可能である。
なお、Windows Server 2012からの機能なので、恐らくWindows Server 2008 R2とかその世代のものではできないと思う。


ホストマシンからPowerShellで以下のコマンドを実行すると設定等が実行できる。
なお、ここで「VM名」と言っているのはHyper-Vマネージャ上で表示されている仮想マシンの名称のことである。

  • 設定を確認する
  • 設定を追加する
    ・<Action>・・・接続拒否ならDeny、接続許可ならAllow、計測ならMeter。
    ・<Direction>・・・VMへの入力方向ならinbound、VMからの出力方向ならoutbound、VMの入出力両方ならBoth。
    ・<VM名>・・・対象のVM名を指定する。コンピュータ名でなくVM名なことに注意。
    ・<対象IPアドレス>・・・対象のIPアドレス。CIDR表記での設定も可能。
  • 設定を削除する
    要するに、addしたものと同じ設定を指定してDeleteする必要がある。何と面倒な。

例えば、192.168.0.1がルータで、192.168.0.xが別のゲストマシンの場合、
以下のようにすれば、「ルータ(=インターネット)にのみ接続し、他の同ネットワーク上マシンとは通信しない」という設定が可能である。

以下のページがより詳しいので参照すると良い。
僕はこのページが無くては詰んでいました。ありがとうございます。
参考: Windows Server 2012 Hyper-VでPort ACL・その1


いよいよ日本に帰任しそう。
引越し手続きとか全部やってくれないかね。
自分で手配するの面倒臭いし絶対何かミスしそう。

Windows Server 2012のRDPでサーバー証明書を設定する方法

RDP(リモートデスクトップ)でキチンとセキュアな環境を整えるためには、
サーバー証明書を設定する必要がある。
設定する理由と、設定しない場合の弊害は下記記事を参照するとわかりやすい。
参考: リモート・デスクトップ接続のサーバに「正しい」証明書を割り当てる

さて、それでWindows Server 2008 R2であればGUIで簡単に割り当てられるのだが、
Windows Server 2012では同様の項目が見つからなかった。
調べた結果、どうもPowerShellを使うぐらいしか方法が見つからなかったので、その方法を記載する。

  1. 新しい証明書をダブルクリックし、インポートする。
  2. PowerShellを管理者として実行する。
  3. 以下を実行し、新しい証明書のThumbprintを確認する。
  4. 以下を実行する。これは単にパスを設定するだけである。
  5. 以下を実行し、証明書の割当を変更する。

以上の手順で証明書を設定できる。
実行後、特にエラーが起きないことを確認したら、RDPを切断し、再度RDPで接続できることを念の為に確認する。
RDPしたときのウィンドウ上の鍵マークをクリックすれば、設定した証明書が利用できているか確認できる。

他に方法はあるはずだと思うけど、上記手順で行えたので調査は打ち切りです。
こんな操作すること滅多にないしね。


こういう作業の何が嫌かって、万が一ミスってRDPできなくなったときだね。
データセンターのサーバーに対してやる場合、最悪データセンターに行かなくてはならなくなる・・・