ufw の kern.log への出力を抑制する

/etc/rsyslog.d/20-ufw.conf で、 #&~ と書かれている行のコメントアウト「#」を消す。
rsyslog を再起動。
デフォルトのままで、/var/log/ufw.log にログは出ているので、そっちを見れば問題なし。

Contact Form 7 でメール送信できない

サーバ移転してできなくなっていたので、色々と可能性を考えたが、原因は SMTP を叩く sendmail 相当の機能がサーバにないからだった。
何のコマンドが必要かは分からんが heirloom-mailx を入れても解決しなかったので、mail コマンドではないっぽい。
とりあえず、SMTP 叩けるプラグインを入れてしのぐことにした。

前のサーバでも、SMTP 送信できるようにした記憶はないのだが…うーむ?
ローカル配送だったからかな…
(未解決)

NOOK Color へ MROM-encore

CM ベースのカスタム ROM であるらしい、MROM-encore | TechnoGeek を入れてみた。
私の端末は、nook color (買った時の記事) なので、CM9 以降 (Android 4.0 以降) はもっさりで FA らしい。
つーことで、MROM-7-encore を入れた。

CMW 導入済なので、相変わらず簡単に入れられる。

  1. 1gb_clockwork-3.2.0.1-eyeballer を microSD に焼く。気になる人は MiniTool Partition Wizard あたりでパーティションを広げる。
  2. micro SD カードに「MROM-7-20130401-encore.zip」「MROM-gapps-gb-02082013.zip」「gapps-gb-20110828-signed.zip」を入れて、NOOK Color に挿して起動。
  3. cache とか data とか advanced から Dalvik とか、まぁ気になる範囲を wipe する。
  4. install zip from sdcard を選んで、MROM-7-20130401-encore.zip → gapps-gb-20110828-signed.zip → MROM-gapps-gb-02082013.zip の順でインストール。
  5. sd card 抜いて再起動すれば OK。

MROM は、早いよ。これ使った感じはいい感じ。

んで、恒例の adb shell から不要アプリを消す (disable にする) ことにする。
もはや、このリストをメモるためにこの記事起こしたようなもんだ。
もし目当てのパッケージを特定できるんだったら、こんなコマンドを使うと早い。

# pm list packages -f | grep hogehoge(特定するためのgrepをn回連結) | sed -e 's/.*=//' | xargs pm disable

パッケージ特定に apk 名が不要な場合は、–f オプションが不要な代わりに sed の正規表現が "s/package://" とかになるのかな。

またこの ROM は、ホーム画面のショートカットを右上の info にドラッグすることで、そのショートカットの飛び先のアプリを表示してくれる。
Phone.apk を消しても Phone のショートカットが消えなかった時は驚いたが、どうやら Contacts が activity として Phone を持っていることが分かった。
SystemCleanup で Contacts の Phone activity のみ disable したら、ショートカットも消えた。

イーサネットコンバータ

WLI-UTX-AG300/C というイーサネットコンバータを買った。けっこう前に。
このイーサネットコンバータで、電話線から離れた部屋にPCを置いている。
親機が11n未対応なので、せっかくの 11n 対応による 300Mbps の効果は全く感じられないが、普通の USB 無線子機では届かない入り組んだ部屋の奥へ、無線+有線で LAN を届かせることができ、おおむね満足な性能である。
なにより、安い。

しかし…無線区間を 300Mbps のくせに、「USBは電源供給のみ」かつ「有線 I/F は 1 ポートのみ」かつ「有線 I/F は Fastether (最大 100Mbps)」とか、設計ミスとしか思えん。
有線ポートがボトルネックとか、11n 対応に期待していたら怒りまくっているところだ。

AWSについてメモ書くよ

ここに追記していく。まとまったら、またapacheの時みたく整理して記事にし直すかも。

Apache の設定 その1

/home/hoge/public_html を DocumentRoot とする時、/home/hoge が標準で 700 のため、403 が返る。
vhost を使う場合、httpd.conf の NameVirtualHost *:80 を生かして VirtualHost ディレクティブを書けば動く。
未指定の vhost を殺すには、ServerName any でデフォルト設定が書けるので、Order deny,allow かつ deny from all とする。
不要モジュール等については後日。

Amazon Linux の設定とか

sudo がパスワード無しで動いてしまう。そもそも、visudo で権限付与を見てもデフォルトユーザの ec2-user に sudo 権限ついてないしおかしい…
と思ったら、/etc/sudoers.d/cloud-init に記載されていたよ。
NOPASSWD: というのを消せば、パスワードを要求されるようになる。

httpd がサーバの OS とか apache のバージョンとか垂れ流してしまう。
ServerTokens OS の行をコメントアウトし、ServerSignature は Off とする。

まずは使い始め

AWS で Amazon Linux のインスタンスを作ってみる。
yum でパッケージ管理してるし CentOS チックだなーって思いながら apache の設定とか調べ中。
なんだこれ…

  • /etc/httpd 配下かよ
  • a2enmod とか a2ensite とかないの?どうやって有効化するの?

とか初見殺しの山。
なんか調べてみると、とにかく httpd.conf に書きまくっている感じ。debian も昔はこんな感じだった記憶があるなぁ。CentOS は今でもこうなのか。
いらん設定を消していかなければいかんらしい。

モジュールはともかく、vhost のディレクティブはまっさらから綺麗に書きたい衝動にかられる。
DocumentRoot とかベタに書くのやーめーてー

CentOS を使う

とあるプロダクトの動作保証環境の関係で、CentOS に手を出すことになった。
そのプロダクトの指定は、CentOS 5.7 なのだが、そんなものは、手に入らない。
とりあえず CentOS 公式から落とせる 5.9 を簡易インストールした。

ubuntu との差分はこんな感じ。
インストールできるパッケージが古かったり少なかったりして、あんま使えない。
パッケージ管理は yum/rpm
yum makecache (apt-get update 相当) が一般ユーザにもできる。
パッケージのバージョン違いのためか、動作が違う。(sudo は、-E オプションをつけないと、sudo 前のユーザの環境変数を引き継いでくれないなど)

これは、使いにくい…

7z でヘッダも暗号化

zip とか 7z でファイルを暗号化圧縮する時、通常の設定ではヘッダ情報が暗号化されない。
なので、暗号化されているアーカイブなのに、ファイルリストが取得できたりする。
こうすると、そのファイルの中身は読めなかったとしても、ファイル名から中身を推測することができるため、暗号化の効果が減じる。

コマンドライン版 7z を使った場合、7z のみヘッダの暗号化オプションを備えているので、これを使えばどんなファイルが格納されているのかすら、パスワードなしでは表示できなくなる。

# 7za a -mhe -pPASSWORD ARCHIVENAME FILENAME1 FILENAME2 ...

web の情報によれば、ヘッダの書式が固定であるため、ヘッダの暗号化部分に対して辞書型攻撃を仕掛けて解読される場合がある、との記載があった。
辞書に登録されるようなパスワードを使う場合には、適切でないかも知れない。

mysql 設定メモ

追記2
mysql のデータファイルを別パーティションにうつしたので追記。
例えば、/path/mysql に移すことにする。

# service mysql stop
# mv /var/lib/mysql /path/mysql
# vi /etc/mysql/my.cnf
- datadir = /var/lib/mysql
+ datadir = /path/mysql
# vi /etc/apparmor.d/local/usr.sbin.mysqld
+ /mnt/mysql/ r,
+ /mnt/mysql/** rwk,
# service apparmor restart

↑し忘れてもちゃんと動いたので、必要かは不明、いちおう後でやっといた

# service mysql start

なお、UNIX ソケットファイル socket = hogehoge を ramdisk とか早いディスクに移しても意味がないらしい。ファイルを実際に read/write するわけではないから、だそうな。

追記
mysql を 5.5 にして、チューニングしたので追記。
詳しくは、これだけはやっておきたいMySQL 5.5系の設定 - uehatsu's tech blog

character-set-server    = utf8
skip-character-set-client-handshake
default-storage-engine  = InnoDB
collation-server        = utf8_general_ci
innodb_file_format      = Barracuda
innodb_file_per_table   = 1
innodb_use_sys_malloc   = 0

先のページの通りだとエラーが出るので、default-storage-engine はIとDBをキャピタルに。(というか、5.5系ではもともと、InnoDB がデフォルトらしいので、不要っぽい)
また、innodb の独自ヒープを使えないよ、というエラーがなんか出て気持ち悪いので、innodb_use_sys_malloc=0 を追加した。

手順

  1. バックアップ。
    # mysqldump -u USER -p --opt DBNAME --net_buffer_length=8000 | gzip > GZIPFILE

    オプションの順番はテキトー

  2. DB削除。
    上の手順で--opt をつけていれば、drop table は関係ない。
    どこまでやるかは、どれだけスッキリしたいかで変えれば良いと思う。
    mysql の該当テーブルを消す。(drop table TBLNAME;)
    データベースごと消すのもあり。(drop database DBNAME;)
    mysql を完全に消すのもあり。(apt-get purge mysql-hogehoge、hogehoge は、色々あるやつ全部)
  3. mysql 5.5 を入れる。
  4. 設定変更。
    /etc/my.cnf へ追記する内容。

    character-set-server=utf8
    skip-character-set-client-handshake
    default-storage-engine=innodb
    collation-server=utf8_general_ci
    innodb_file_format=Barracuda
    innodb_file_per_table=1
    
  5. mysql 設定反映と確認。
    # service mysql restart
    # mysql -p
    > show variables like 'inno%';
    
  6. mysql を purge した場合、php5-mysql も消えてるかも知れんので再インストール。
    # apt-get install php5-mysql
    # service apache2 restart
    
  7. リストア。
    mysql の初期設定とか、DB 作ったりとか、dump した sql ファイルの取り込みは下の旧エントリを確認のこと。

これで、もと通りのはず。
でも、CPU の非力なマシンなので、未展開の領域にアクセスした時、応答が恐しく遅くなる。
あんまり酷かったら、このオプション (Barracuda) は外すかも…

追記、ここまで。

apache2 の設定メモ の続編.
mysql の設定とか.

設定

  • # mysql_secure_installation

    で初期設定.基本,全部 Y で良い.root パスをインストール時からイチイチ変えるのがメンドイ時は,最初だけn.

  • 全てのユーザー情報が削除されているため,root ログインのみ可能.

    # mysql -u root -p
  • ユーザの追加.
    grant all privileges on databasename.* to username@localhost identified by 'password';
    show grants for username@localhost;
    flush privileges;
    
  • ユーザーの DB を作成.
    $ mysql -u username -p
    > create database databasename;
    
  • データ移行.
    $ mysql -u username -p databasename < sqlfile

その他のtips

/etc/my.cnf の [mysqld] ディレクティブに

character-set-server    = utf8
collation-server        = utf8_general_ci

を追記すると、サーバー文字コードは変更可能
DB文字コードは、mysqlクライアント内で目的のDBに接続して、

alter database DBNAME character set utf8;

文字コードの調べ方は、
mysql クライアント内で

> status

または、

> show variables like "chara%";

1行が長すぎてエディットが難しいときは、

# mysqldump -u USERNAME -pPASSWD --opt --default-character-set=utf8 DBNAME --net_buffer_length=8000 | gzip > sql.gz

としてやれば、1行毎の文字数が 8,000 文字以下となるよう出力してくれる。

ダンプした sql ファイルの取り込みは、クライアントから

> source SQLFILE;

テーブルの文字コードを調べるには、show create table TBNAME; でテーブル作成コマンドを見る。
同じように、show create database DBNAME; でデータベース作成コマンドも見れる。

Android で FTPd

ES ファイルエクスプローラで宅内のサーバが見えない。
私の場合、モバイル回線からインターネット経由では見えているので、サーバ自体には問題ないと思うのだが、webdav に ssl + sni を使っているために、宅内でアクセスしようとすると ip アドレスでは目的の vhost にアクセスができず、ドメイン名でアクセスしようにも dns はグローバルアドレスを返すという問題があり、うまく宅内で動作しない。
でまぁ、FTPd を立てようと、どのソフトがいいかなーと探していて見付けたのが以下のエントリー。
Android端末とPCとのネットワーク越しのファイルのやりとりについて | 相方が携帯紛失 で、私と同じ状況の人がいた。

で、これって ES ファイルエクスプローラにも機能として具備されてんじゃねーの?と思ってアプリのメニュー内を探してみたらあった。
メニューボタン>Tools>Remote Manager で FTPd の on/off ができる。
ルートを external_sd にできるのもポイント高い。
なお、上の記事の人と同じくアプリのローカライズに悩まされた挙句、私はもともと英語ロケールで Android を使っているので、日本語でどう表示されるかは知らない。

Android のファイラ、万能やなぁ。

WinPcap で起動時に自動オンしない場合のサービスオンオフ

まぁ内容は、ここに載ってることそのまんま。
WinPcapのインストール時に聞かれる「Automatically start the WinPcap driver at boot time」で困った場合の対処法 - Eiji James Yoshidaの記録
Wireshark に必須の WinPcap を、常に起動する設定にしなかったら、なかなか起動できないよって話。
サービスの起動ショートカットくらい、スタートメニューに作っとけよ。

で、ショートカットの作り方。

  • C:\Windows\System32\cmd.exe へのショートカットを作る。
  • ショートカットのプロパティから、リンク先を「C:\Windows\System32\cmd.exe /K "net start npf"」とする。
  • 同じダイアログの詳細設定ボタンから、管理者として実行、にチェックをつける。
  • ショートカット自体の名前を net start npf とかにする。

net stop npf も同様にどうぞ。