Hatena::ブログ(Diary)

tkrdの日記 (rails や ubuntu のことなど)

株式会社オイアクス (東京都港区芝大門) で社長をしています。

2015-06-10

mysql: 外部からの接続を受け付けなくなって困った話

12:19

きっかけは、Ubuntu 14.04 上で運用中の MySQL 5.6 をアップグレードしたこと。

apt-get install がうまく行かないので、悪戦苦闘した後に、/var/lib/mysqlバックアップを取ってから apt-get purge してから最新の MySQL 5.6 をインストールして、/var/lib/mysql を戻すという方針に転換しました。

いちおううまく動いたのですが、なぜか外部からの接続を受け付けなくなってしまいました。lsof で調べると確かに localhost をリスンしている。

$ lsof -i :3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  28953 mysql   13u  IPv4 466855      0t0  TCP localhost:3306 (LISTEN)

/etc/mysql/my.cnf を見返したり、ネット検索で類似の事象を探したりしたけれど、原因が分かりません。

いったん休憩してぼんやり考えていると、「ああ、/usr/my.cnf か」と思い当たりました。このファイル、初期インストール時や mysql_install_db 実行時に、なぜか作られる設定ファイルで、そこに

bind-address = 127.0.0.1

と書いてあって、この行を消すかコメントアウトしなければいけないのでした。

MySQLサーバー再起動後の lsof の結果は次の通り:

$ lsof -i :3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  29004 mysql   13u  IPv4 466919      0t0  TCP *:3306 (LISTEN)

しかし、何のために /usr/my.cnf が作られるのかは依然として不明。

2015-06-03

さくらの専用サーバ:リモートコンソールの使い方

09:30

さくらの専用サーバ(※ VPSクラウドではない)を使っていてSSHログインできなくなってしまった場合には、リモートコンソールでコンソール画面を開いて直接ログインを試みることが可能です。

注意事項:

  1. WindowsChrome/Firefox を使うこと(私の環境ではIEではうまく行きませんでした。MacLinuxでもうまく行きません)。
  2. Java 7またはJava 8がインストールされていること。
  3. 日本語キーボードを使うこと。
  4. あらかじめIMEをオフにしておくこと。
  5. 初回実行時には、Javaセキュリティ設定が必要となる(後述)。

手順:

  1. 「会員メニュー」にログインし、「契約情報」→「契約サービスの確認」と進み、対象となる専用サーバの「サーバ設定」ボタンをクリックする(コントロールパネルにログイン)。
  2. サーバ」タブを選び、一覧表からログインしたいサーバの行をクリックする。
  3. 「リモートコンソール」ボタンをクリックする。
  4. 「実行ファイルをダウンロードしますか?」と聞かれるので「はい」をクリックする。
  5. 「この種類のファイルはコンピュータに損害を…」と表示されるが、「保存」をクリックする。
  6. ファイルのダウンロードが完了したら、それを開く(Chrome の場合は、ブラウザ下部に現れるダウンロードファイルアイコンの右端ボタンをクリックして「開く」を選択)。
  7. 「このアプリケーションを実行しますか」というダイアローグボックスが開くので、「リスクを受け入れて、このアプリケーションを実行します。」チェックボックスにチェックを入れて、「実行」ボタンをクリックする。
  8. 白黒のコンソール画面に切り替わり、ログインプロンプトが表示されたらユーザー名とパスワードを入力する。

Javaセキュリティ設定:

初回実行時には、ダウンロードしたファイルを開いた後に「Javaセキュリティによってブロックされたアプリケーション」という警告が出ます。場所の欄に「http://」で始まるURLが表示されているのでそれを紙に書き留めてください(コピペできません)。

次に、「Java コントロール・パネル」を開きます。Windows 8.1の場合は、画面左下の Windows アイコンを右クリックして「検索」を選び、「configure java」と入力すると、すばやく開けます。

そして、「セキュリティ」タブから「サイトリストの編集」ボタンをクリックします。「追加」ボタンをクリックして、さきほど書き留めたURLを入力し、「追加」ボタンをクリックします。

Java コントロール・パネル」の右上の「×」ボタンをクリックして設定を終了し、手順3からやり直してください。

参考資料:

2015-06-01

keepalived: Memory allocation problem

15:24

久しぶりに keepalivedセットアップを行いました。昔のメモを見ながら、その通りにやったつもりなのですが、うまく起動しません。ログを見ると、

SMTP_CHECK Error connecting to server [192.168.0.172]:25
Removing service [192.168.0.172]:25 from VS [192.168.0.17]:25
IPVS: Memory allocation problem
Executing [/usr/sbin/service keepalived stop] for service ...

のように出ています。私は「IPVS: Memory allocation problem」の方に目を奪われてしまい、しばらく原因を見つけられないでいたのですが、「SMTP CHECK ...」に書いてあるとおりで、192.168.0.172 の 25 番ポートに SMTP で接続できないため、私自身が keepalived.conf に書いたとおり、サービスを停止していただけでした。

SMTP サーバを起動したら動くようになりました。

「IPVS: Memory allocation problem」というメッセージは何らかの異状を示すのでしょうが、今回の問題とは直接関係ありませんでした。

教訓:うまく行かないときは、あれこれ設定をいじくり回す前に、現在の設定をバックアップしてから限りなくシンプルな設定に切り替えて、少しずつ設定を書き加えていくこと。焦らず一歩一歩進むこと。

タブをスペースに展開する(メモ)

15:14

カレントディレクトリ以下にあるすべてのHTMLファイルの行頭のタブをスペース2個に変換するには次のコマンドを実行する。

find . -name '*.html' ! -type d -exec bash -c 'expand -t 2 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;

2015-05-01

jsdom では data-* 属性をうまく扱えない(メモ)

10:52

表題の通り。


https://github.com/tmpvar/jsdom/issues/961 としてチケットに載っているが、v8 側の対応が必要だそうで、jsdom チームとしては対応できないようだ。残念。

2015-04-25

タブをスペースに展開する(メモ)

19:34

カレントディレクトリ以下にあるすべてのHTMLファイルの行頭のタブをスペース2個に変換するには次のコマンドを実行する。

find . -name '*.html' ! -type d -exec bash -c 'expand -t 2 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;

参考: http://stackoverflow.com/a/11094620/513554