ConoHa で oyasu.info 向けウェブサーバーの構築・インストール編

昨日更新したように、この oyasu.info は ConoHa へ移転しましたが、今回はどんなサーバー構成にしたのか、操作手順を含めて紹介します。

関連する記事

  1. (紹介編)Web サーバーを ConoHa に移行しました
  2. (この記事)ConoHa で oyasu.info 向けウェブサーバーの構築・インストール編
  3. (公開予定)ConoHa で oyasu.info 向けウェブサーバーの構築・環境設定編
  4. (公開予定)ConoHa で oyasu.info 向けウェブサーバーの構築・データ移転編

今回はインストール編ということで、OS デフォルトでインストールされる古いバージョンの代わりに、最新版をインストールするところまでを目的とします。

今回インストールするもの

  • Mackerel
  • Nginx 1.10
  • PHP 7
  • MySQL 5.7

Mackerel 以外は yum install でとりあえず動くバージョンがインストールできます。
しかし、最新版を利用したいので少し工夫しています。

Perl はデフォルトで 5.16 がインストールされ、最新版は 5.24 ですが、Perl はとりあえず動けばいいというレベルですのでそのまま利用します。

インストールしただけでは、PHP も Perl も Web サーバーで利用できません。
それぞれの設定については、今後公開予定の「環境設定編」で紹介します。

サーバーの追加

ConoHa でこのような設定でサーバーを追加します。

  • 東京リージョン VPS
  • メモリ 1GB
  • CentOS 7.2 (64bit)
  • ディスク容量 50GB
  • 接続許可ポート SSH(22)、Web(20/21/80/443)
  • SSH Key 認証

今回は ConoHa の CentOS テンプレートを使用します。
それ以外の環境の場合、標準でインストールされているパッケージが少ないこともあるのでご注意ください。

“ConoHa で oyasu.info 向けウェブサーバーの構築・インストール編” の続きを読む

Web サーバーを ConoHa に移行しました

このブログを含む、oyasu.info は2010年のブログ移転時(当時の記事)からずっと、ロリポップのレンタルサーバーにお世話になってきました。

最初は月額250円のプランを利用していましたが、2014年には500円の上位プランが2年間の契約を前提に250円で利用できるキャンペーンがあり、今月がその更新期限です。

ロリポップを継続することも考えましたが、今回はこのブログでも紹介してきた、GMO インターネットのクラウドサーバー「ConoHa」に移転することにしました。

現在動かしているものやトレンドを考慮し、今回は下記の要件を設定しました。

Nginx、PHP、MySQL、Let’s Encrypt については、ウェブ検索すると多くの事例が見つかるのですが、Perl はやはり今更対応するという事例も少なそうです。

このサイトでは、アクセス解析、ダウンロード数計測掲示板で CGI を使用しており、特にアクセス解析は代替できるものが見つかりませんでしたので残しておこうと思いました。

実は7月19日に移転を行い、ConoHa 上で動作しています。
しばらくパフォーマンスなどを見守りたいと思います。

新しいサーバーの構成や、移転の際に注意したことについてはまたこのブログで紹介できたらと思います。

実際、PHP 7 で動作しないコードがあることから、修正の手間よりフィーチャーフォンの対応を切り捨てたりしています。

Opera フォーラムの Linux に関する質問に ConoHa が役に立った話(CentOS 編)

私は Opera のフォーラムでも回答を行っているのですが、このような質問を見かけました。

Linux に IPA フォントをインストールすると、Opera でリンクを選択しようとするとフリーズしてしまうという問題です。

この場合、適当な Linux に Opera をインストールして、IPA フォントをインストールする前後での動作を確認すればよいことが分かります。
(もちろん、英語でバグレポートを書くところまでできたらいいのですが、自分で書くと伝わるかどうか不安なので)

Windows についてはメインでは利用しない評価版も含めて複数のバージョンで検証できる環境があるのですが、Linux の環境は持っていません。
そのためだけに、Linux の ISO ファイルをダウンロードするのも面倒。

そこで、ひらめきました。
ConoHa の Linux イメージを使えば簡単にテスト環境が構築できるのでは?

ConoHa とは GMO インターネットのクラウドサービスです。
詳しくは公式サイトをチェックして欲しいのですが、ここで紹介するポイントは3つ。

  • テンプレートにある OS なら25秒で構築 ※公式サイトより
  • 高速 SSD ストレージ
  • 一番安い VPS(1.3円/時)でもCPU2コア・メモリ1GB

サーバー用途としての Linux の利用経験はあるのですが、ブラウザといったクライアント用途でクラウドを使うのは初めてです。

今回の流れ

  1. サーバーの追加
  2. GUI のインストール
  3. Opera のインストール
  4. 再現性の確認
“Opera フォーラムの Linux に関する質問に ConoHa が役に立った話(CentOS 編)” の続きを読む

ConoHa で WebSocket 接続を試みるも 502 エラーが出現

またまたMacbook が欲しいために「ConoHa」の API に関する記事を公開します。

タイトルにもありますが、今回は上手くいかなかった例を紹介します。
どなたか詳しい方がいらっしゃれば、アドバイスをいただけると嬉しいです。

挑戦したいこと

先日更新した記事で、ConoHa には noVNC コンソールと HTTP のシリアルコンソールがあると紹介しました。

API ドキュメントにはあるものの紹介していないコンソールがありました。

WebSocket については Wikipedia にもありますが、サーバーとクライアントを常時接続するようなプロトコルで、プロキシサーバーが必要な環境でも接続できるのが特徴です。

WebSocket 接続用 URL の取得

前回紹介した PowerShell のスクリプトの

{"os-getVNCConsole":{"type": "novnc"}}

{"os-getSerialConsole":{"type": "serial"}}

に書き換えるだけです。

$apiUser = "APIユーザー名"
$apiPassword = "APIパスワード"
$tenantId = "テナントID"
$identityServiceUrl = "https://identity.tyo1.conoha.io/v2.0"
$computeService = "https://compute.tyo1.conoha.io/v2"
$uuid = "VPS設定-UUID"
# 有効な期間のトークンがあれば
$token = "" 

# トークンの取得
function getToken([string] $tenantId, [string] $apiUser, [string] $apiPassword, [string] $authurl){
    $body = '{"auth":{"passwordCredentials":{"username":"' + $apiUser + '","password":"'+$apiPassword+'"},"tenantId":"'+$tenantId+'"}}'
    $url = $identityServiceUrl+"/tokens"
    $result = Invoke-RestMethod $url -Method POST -Body $body
    return $result
}

# コンソールの URL 取得
function getWebSocketConsole([string] $tenantId, [string] $uuid, [Hashtable] $tokenHeader, [string] $computeService){
    $body = '{"os-getSerialConsole":{"type": "serial"}}'
    $url = $computeService + "/" + $tenantId + "/servers/" + $uuid + "/action"
    $result = Invoke-RestMethod $url -Method POST -Body $body -Headers $tokenHeader
    return $result.console.url
}

# 処理
if ($token -eq "") {
    $mytokens = getToken $tenantId $apiUser $apiPassword $identityServiceUrl
    $token = $mytokens.access.token
}
$tokenHeader = @{"X-Auth-Token" = $token}
$url = getWebSocketConsole $tenantId $uuid $tokenHeader $computeService
# URL 表示
Write-Output $url

成功するとこのような wss で始まる WebSocket の URL が得られます。

wss://console.tyo1.conoha.io/?token=○○

WebSocket クライアントからの接続

とりあえず WebSocket の接続サンプルを使うことにしました。

JavaScript

WebSocket の公式サイトにテストがあったので試してみました。

WebSocket の URL を入力して接続しても、ERROR:undefined と表示されてしまいました。
Creating your own test を自分で書き換えても同様のエラーが発生しました。

テストサーバーである、
ws://echo.websocket.org/
wss://echo.websocket.org/
は問題なく接続できるので、回線が WebSocket を制限しているわけでもなさそうです。

ブラウザの開発者ツールで確認してみると、502 Bad Gateway エラーが発生しているようです。

[H27.07.17]ConoHa WebSocket 502

C#

こちらのブログを参考に、C# での確認も行いました。

こちらも、ws://echo.websocket.org/ や wss://echo.websocket.org/ は問題なく接続できました。
違うネットワークから接続してもだめでした。

サポートに問い合わせてみた

困ったので、ConoHa のサポートに問い合わせてみました。

回答は「APIで接続用URL取得後の動作については案内が困難」とのことでした。
クライアントの問題や利用者の回線の問題も考えられるため、そこまではサポートできないというのも納得できます。

今回は、こうしてブログに書くことによって、誰かの参考になればと思います。

おわりに

現在友達の紹介キャンペーンを実施しており、こちらのリンクから ConoHa に登録していただくと、1000円分のクーポンがもらえますので是非登録し、試してみてください。

PowerShell の Invoke-RestMethod を使って ConoHa の API を触ってみた

一つ前の記事に引き続き、「ConoHa」の API に関する記事を公開します。

以前、旧 ConoHa のオブジェクトストレージの API を用いて PowerShell で操作してみようという記事を公開しました。

そのときのコメントで、Tonghyun Kim さんが

Powershellなら、Invoke-RestMethodはどうでしょう。

とアドバイスしてくださったので、今回はそれを用いて新 ConoHa の API を操作したいと思います。

準備

Invoke-RestMethod を使用するには、PowerShell 3.0 が必要です。
Windows 8.1 では問題ありませんが、Windows 7 でこれまで PowerShell の開発をしたことがない方は気をつけてください。

スクリプトの実行がシステムで無効になっているため、ファイル ○○ を読み込めません。詳細については、「get-help about_signing」と入力してヘルプを参照してください。

上記のメッセージが表示される場合、管理者でPowerShellを起動し以下のコマンドを実行すると解決します。

Set-ExecutionPolicy RemoteSigned

トークンの取得

“PowerShell の Invoke-RestMethod を使って ConoHa の API を触ってみた” の続きを読む