zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【さくらのレンタルサーバ】RewriteCond %{HTTP_HOST} でwww.hogehogeとhogehogeを分岐

【概要】

さくらのレンタルサーバの[サイトに関する設定]-[ドメイン設定]で

マルチドメインとして使用する(推奨)

を選択している場合
http://hogehoge.jp/
http://www.hogehoge.jp/
は同一のHTTP_HOSTとして扱われる模様
http://www.hogehoge.jp/ でアクセスしても、%{HTTP_HOST}はhogehoge.jp(wwwがない)。
.htaccessでwww.hogehoge.jpにアクセスに来たらhogehoge.jpに301リダイレクトしたいとき、

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.hogehoge\.jp)$ [NC] 
RewriteRule (.*) http://hogehoge.jp%{REQUEST_URI} [R=301,L] 

では動いてくれない。

【回避策】

1)ServerName www.hogehoge.jp に当たる設定を追加する

[ドメイン設定]-[新しいドメインの追加]-[5. 他社で取得したドメインを移管せずに使う]
ドメイン名:www.hogehoge.jp で[送信する]。
※ネームサーバの設定は、ルートドメインの設定時に行われている前提。

2)hogehoge.jpのマルチドメイン設定を変更
wwwを付与せずマルチドメインとして使用する(上級者向け)

に変更

これで、www.hogehoge.jpから流入したときの{HTTP_HOST}に入る値がwww.hogehoge.jpとなるため、上記.htaccessが動作する。

前にも同じことでハマった気がするのでメモしておく。

【参考】

www.harukas.org

【MySQL】レプリケーション時のスレーブでread_only設定するかどうか問題

【メモ】

MySQLレプリケーションするとき、間違ってスレーブを更新してしまわないよう、スレーブのmy.cnfに

[mysqld]
(省略)
read_only

を追記してる例を見た。今までやってなかった。slaveでupdateが無くもない人生なので、今後つけるかどうか検証

nippondanji.blogspot.jp
”スレーブを参照専用にするには、my.cnfファイルでread_onlyオプションを指定しておくと良い。read_onlyを指定しておけば、SUPER権限のないユーザは更新が出来なくなる。”
「SUPER権限を持つアカウント以外の更新クエリーは実行できなくなる」はず

【結論】

SUPER権限のあるユーザでやってしまえば更新処理ができちゃうけど、習慣としてはつけておくべき、とのこと。
ただ、フェイルオーバーを考えると、read_onlyはつけない方向で。
(Masterが死んだとき、hostsの向き先変更だけでSLAVEに書き込み開始したい)


【結論に至る調査メモ】

■SUPER権限って?
→SUPER権限の有無は以下で確認可能

mysql> SELECT user, Super_priv FROM mysql.user ;
+-----------+------------+
| user      | Super_priv |
+-----------+------------+
| root      | Y          |
| mysql.sys | N          |
| repl      | N          |
+-----------+------------+

→replはレプリケーションユーザだけど、必要ないの?
MySQL :: MySQL 5.6 リファレンスマニュアル :: 17.1.1.3 レプリケーション用ユーザーの作成
レプリケーションの目的にだけアカウントを作成する場合、そのアカウントには REPLICATION SLAVE 権限だけが必要です。”
ということらしい。

【試してみた】

Super権限じゃないユーザを作成
GRANT ALL PRIVILEGES ON `testdb`.* TO 'nosuper'@'localhost' IDENTIFIED BY 'パスワード';
FLUSH PRIVILEGES;


# マスターにnosuperユーザでログインし、insert
→insertできた

# スレーブにnosuperユーザでログインし、insert
→ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
→マスタでinsertした値はレプリケーションされている。


■その他大変ありがたい参考記事

http://blog.hypermkt.jp/my-conf_readony/

WordpressのMySQLがoom_killerで落とされた

【状況】

Wordpressのサイトが
データベース接続確立エラー
とか
Error establishing a database connection
とか言ってきた。

サーバに入ってMySQLのプロセスを確認
ps aux | grep mysql
→ない。
→ログ確認
/var/log/messages

May 22 14:46:25 hogehoge kernel: [36271139.069945] php-fpm-5.5 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

cat /var/log/messages | grep Killed

May 22 14:46:25 hogehoge kernel: [36271139.527800] Killed process 2559 (mysqld) total-vm:2066588kB, anon-rss:761800kB, file-rss:0kB

MySQLがoom-killerにより落とされた模様。

mysqlのoom_killerの優先度を下げる

【参照】
http://hacknote.jp/archives/8356/hacknote.jp


強制終了プロセスの優先順位を以下の様にすることで
mysqlは殺されないようになる

vi /srv/bin/oom_update.sh

#!/bin/sh
 
# down mysql score 
mysql_pid=`cat /var/run/mysqld/mysqld.pid`
 
if [ "$mysql_pid" != "" ]; then
  echo "-17" > /proc/${mysql_pid}/oom_adj
else
  echo "can't get pid number"
fi


chmod +x /srv/bin/oom_update.sh
/srv/bin/oom_update.sh

# 確認
dstat --top-oom

--out-of-memory---
    kill score
php-fpm: pool  52

PHP-FPMの子プロセス数を減らす

なおメモリのほとんどはphp-fpmが食っているので、プロセス数を減らした。

/etc/php-fpm.d/www.conf

;pm.max_children = 25
pm.max_children = 15

service php-fpm restart
service nginx restart

これで様子見・・・・・・

G-RAID (Removable)が初期状態ではRAID0だったのでRAID1(ミラーリング)にしたメモ

【本作業の該当商品】

G-Technology (HGST) G-RAID Removable 8TB USB3.0&FireWire 800 対応 外付けハードディスク

【G-RAID Removable UtilityでRAID1に変更】

公式ウェブサイト
support.g-technology.com

ダウンロードタブから、「G-RAID Removable Utility」をDLしてinstall
ソフトウェアおよびファームウェアのダウンロード | G-Technology
f:id:zuntan02:20170522121708p:plain

解凍して実行
f:id:zuntan02:20170522121735p:plain
f:id:zuntan02:20170522121743p:plain

RAID1に変更
f:id:zuntan02:20170522121749p:plain

警告に[はい(Y)]
f:id:zuntan02:20170522121816p:plain

完了。
f:id:zuntan02:20170522121809p:plain

以上でRAID1化完了です。

あとは、WindowsPCなら[管理ツール]-[コンピュータの管理]-[ディスクの管理]で割り当てて利用可能。

【その他マニュアルなど】
support.g-technology.com

以上

ラズパイ2(RaspberryPi2)にCentOS7を入れてみる

■作業概要

1)(WindowsPCで)ラズパイ用CentOS7のイメージをDL、SDカードに書き込み
2)CentOS起動+ログイン
3)初期設定
4)ディスクスペースの拡張

1)(WindowsPCで)ラズパイ用CentOS7のイメージをDL、SDカードに書き込み

DD for windowsをインストー

WindowsPCで実施する場合、事前に以下のツールをインストールしておく

CentOSパッケージのダウンロード

https://buildlogs.centos.org/centos/7/isos/armhfp/
より、RaspberryPi2用パッケージ
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi2.img.xz
をDLし、解凍します。
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi2.img

DD for Windowsを起動してSDカードに書き込み

ディスク選択でusb(micro-SD)を選択
(SDカードが選択できないときはexeの互換モードを使って起動するとよい)

ファイル選択で先ほど解凍したcentosを選択
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi2.img

で[<<書込<<]
f:id:zuntan02:20170521114350p:plain

2)CentOS起動+ログイン

micro-SDをRaspberry Pi 2に差し込んで起動

初期ID/PWは
login : root
password: centos

3)初期設定

109キー日本語レイアウトのキーボードの設定をします。

■ラズパイのCentOS側で
localectl set-keymap jp106
localectl set-keymap jp-OADG109A

##System Localeを変更もしておきます
localectl set-locale LANG=ja_JP.utf8

##localectlで確認
localectl

#System Locale: LANG=ja_JP.utf8
#       VC Keymap: jp-OADG109A
#      X11 Layout: jp
#       X11 Model: jp106
#     X11 Options: terminate:ctrl_alt_bksp

4)ディスクスペースの拡張

ルート領域をSDカードいっぱいまで拡張したい

cat /root/README

== CentOS 7 userland ==

If you want to automatically resize your / partition, just type the following (as root user):
/usr/local/bin/rootfs-expand

→以前の.rootfs-repartitionとは変わっている模様。
/usr/local/bin/rootfs-expand
で拡張された。

df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         57G  907M   54G    2% /
devtmpfs         458M     0  458M    0% /dev
tmpfs            462M     0  462M    0% /dev/shm
tmpfs            462M   12M  450M    3% /run
tmpfs            462M     0  462M    0% /sys/fs/cgroup
/dev/mmcblk0p1   500M   49M  452M   10% /boot
tmpfs             93M     0   93M    0% /run/user/0

初期状態では外部からのSSH接続などは制限されていないため、DHCPで付与されたIPを使ってSSH接続ができる。


yum updateできない問題対策

yum update で以下のエラーメッセージが出た

http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-rpi2/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found

【参照URL】
http://qiita.com/Leonardo-mbc/items/2fb67a6f860aa33fd9bd

cd /etc/yum.repos.d
続きを読む

【AWS】AWSからRDSサーバの再起動予告が来たけどリスケされたメモ

【流れ】

  • AWSから指定期間中、メンテナンスウィンドウでマシンの再起動があるよ(だけどMultiA-Zにしておけばフェイルオーバー時間の停止で済むよ)と予告があった。
  • SingleA-ZなRDSだったので、該当期間のメンテナンスウィンドウ前にRDSをMuitiA-Z化した(サービス停止なし)。
  • が、該当時間を過ぎても再起動されていない(failoverしてない、AZが変わっていない)
  • その週の終わりころに「再起動できなかったので翌週やります」という内容の連絡

 →SingleA-Zに戻した(サービス停止なし)。

  • 翌週のメンテナンスウィンドウ前に再度MultiA-Z化
  • 今度はメンテナンスウィンドウで再起動された。フェイルオーバー中20秒ほど重かった様だがエラーなし
  • RDSのフェイルオーバーおよび再起動が完了したのを確認してSingleA-Zに戻した
■最初の案内メール

One or more of your Amazon RDS DB Instances have been scheduled to receive system upgrades during the maintenance window you have chosen as per the schedule below.
(中略)
The maintenance activities are planned during 2017-5-5 21:00 UTC (Friday) to 2017-5-12 20:59 UTC (Friday).

Please note that while the system upgrades complete, your database will have an availability impact for a few minutes during your maintenance window. For Multi-AZ deployments, this impact is limited to the amount of time it takes for a failover to complete. Therefore, please cross check your maintenance window settings to ensure that they are set as per your needs using the schedule above.

Google翻訳
1つまたは複数のAmazon RDS DBインスタンスが、以下のスケジュールに従って選択したメンテナンス期間中にシステムアップグレードを受けるようスケジュールされています。
(中略)
メンテナンス活動は、2017-5-5 21:00 UTC(金曜日)〜2017-5-12 20:59 UTC(金曜日)に計画されています。

システムのアップグレードが完了している間は、メンテナンス期間中にデータベースの可用性が数分間影響を受けることに注意してください。マルチAZ配備の場合、この影響はフェイルオーバーが完了するまでに要する時間に制限されます。したがって、上記のスケジュールを使用して、必要に応じてメンテナンスウィンドウの設定を確認してください。

■再実行案内

Due to unexpected circumstances, we could not perform maintenance during this period. The upgrades for the resources listed below will now occur between 2017-5-12 21:00 UTC (Friday) and 2017-5-19 20:59 UTC (Friday).

(Google翻訳)
予期せぬ事態のために、この期間中はメンテナンスを行うことができませんでした。下記のリソースのアップグレードは、UTC(金曜日)21:00 UTC(金曜日)と2017-5-19 20:59 UTC(金曜日)の間に行われます。

対象の期間を過ぎても強制メンテナンスが実行されない場合はこんなパターンかもしれません。
メモまで。

【Wii修理】Wiiのピックアップレンズ交換したメモ201705

【まとめ】

長年使ってたWiiがディスクを読み込まなくなってきた。
モーターの高さ調整でピックアップの距離を変更
ピックアップレンズ横のネジ調整
では解決しなかったので、
ピックアップレンズの交換
を行ったところ、サクッと復活した。長期間使っててだんだんディスク読み込まなくなってきた、って人は、上記ネジによる調整は時間の無駄かも(自分はネジをいじりすぎて元の位置が分からなくなったりして、結局まる1日くらい捨ててしまった……)。ピックアップレンズ(1200円くらい)を買って交換するのが良さそうです。

分解手順は上記リンクからどうぞ(手抜)。

【購入品メモ】

Wii 修理用ピックアップレンズ Wii全型番対応 RAF-3350

「全型番対応」とあるけど、実際は

  • RAF-3350


  • RAF-3355

の2種類があるようなので、Wiiを分解した時点でレンズユニットのフィルムケーブルに貼ってあるQRコードで型番を確認してから購入しましょう。

交換用レンズユニットが届いたら
・フィルムケーブルの中央にある静電気防止のショート回路(半田の粒)をぺりっと剥がしてそこだけ断線させる。
 →半田ゴテでやると、余計な個所を焼いちゃうかもしれないので、爪でぺりっと剥がしたほうがいいような気がします。
・旧レンズの横についてる白い位置決めパーツを取り外して、新レンズに取り付ける

で、元通りに組み立てればOK。

久々にお値打ちな感じの修理で楽しかった。