PublicDNSを使ってみた

ネットワークの挙動が安定しなかったので新しいルーターに買い替えました。
新しいルーターはもちろんDNSのキャッシュが溜まっているはずもなく、しかも使っているプロバイダのDNS正引きが遅いということもあり、PublicDNSを使ってみることにしました。


DNS正引きとはドメインからipを引っ張ってくる行為であり、PublicDNSとは公開DNSサーバーのことです。


無料で利用可能なDNSサーバサービス - NAVER まとめ

主要なPublicDNSの一覧は上にまとめられてます。
とりあえず今回はGoogleを使うことに。

macの場合

システム環境設定 → ネットワーク → 詳細 → DNS

と進んで、DNSサーバーの「+」ボタンを押してDNSサーバーを増やします。
今回のGoogleの場合、「8.8.8.8」「8.8.4.4」なので設定します。

f:id:sato-m99:20150506002120p:plain

あとは設定を適用させればokです。

iphoneの場合(iPadなど)

設定 → Wi-Fi → 設定したいネットワークを選択 → DHCP

と進んで、DNSを「8.8.8.8, 8.8.4.4」と設定します。
今回は「,」で分けて複数設定できます。

f:id:sato-m99:20150506004741p:plain

これで設定完了です。


これで快適なネットサーフィンができているはずです。
DNSで遅いと感じる人がいたら試してみてはどうでしょうか。

Centos + nginx + WordPress

仕事でWordPressを入れる作業したのでメモ。

nginxのインストールは以前書いたので省略。
http://work.castleman-blog.com/entry/20110826/1314364283


1.yumで各種インストール

# yum install mysql-server php php-mysql php-mbstring php-fpm


2.MySQL設定

# /etc/rc.d/init.d/mysqld start
# chkconfig mysqld on
# mysql_secure_installation  ← passwordだけn、それ以外Enter押してdefault
# mysql -uroot -p
mysql> create database wordpress;
mysql> grant all privileges on wordpress.* to wordpress@localhost identified by 'wordpress';
mysql> flush privileges;


3.FPM設定

# vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
# chkconfig php-fpm on
# /etc/rc.d/init.d/php-fpm start


4.wordpress設定

# cd /var/www
# curl -LO http://ja.wordpress.org/latest-ja.tar.gz
# tar xvzf latest-ja.tar.gz 
# cp wordpress/wp-config-sample.php wordpress/wp-config.php
# vim wordpress/wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'wordpress');
# chown -R nginx:nginx /var/www/wordpress


5.nginx設定

# vim /etc/nginx/nginx.conf

root /var/www/wordpress;
index index.php index.html;

try_files $uri $uri/ /index.php?q=$uri&$args;

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
}

# /etc/rc.d/init.d/nginx restart

「WEB+DB PRESS」電子書籍化

いまさらなんですが、「WEB+DB PRESS」って電子書籍化されてたんですね。

WEB+DB PRESS Vol.80 | Gihyo Digital Publishing


web技術雑誌として有名な本です。
以前は会社で毎号「WEB+DB PRESS」と「Software Design」を読んでいたんですが、買って置いていてくれていた人が辞めてからは誰も買わなくなったので、個人的に読みたい記事があるときだけ買ってました。
ただ、やっぱり雑誌なので自宅だと置き場所に困るんですよね。
でも絶対捨てたくはない。


ダウンロードして読みましたが、7インチタブレットでも十分。
スマホでもアップにして読めば問題ないです。
形式はPDFなので端末を選ばず読めます。


技術書の電子書籍化が嫌いな人も多いでしょうが個人的には大賛成です。

WEB+DB PRESS Vol.80

WEB+DB PRESS Vol.80

  • 作者: 鶴長鎮一,宮下剛輔,縣俊貴,中村知成,西尾泰和,新井俊一,南川毅文,伊藤直也,石垣憲一,浅木朗,渡邊恵太,中島聡,はまちや2,竹原,川添貴生,河合宜文,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/04/24
  • メディア: 大型本
  • この商品を含むブログ (4件) を見る

さくらのVPS2台をPoundで負荷分散

まず、さくらVPS2台をローカルネットでつなげます。
やり方は前回書いたので参考にしてください。
さくらVPSでローカルネットワーク設定 - 城好きwebプログラマーの生態メモ - 仕事編


今回は下記の環境で、server1にPoundをインストールして分散処理するようにします。

グローバルIP ローカルIP
server1 111.111.111.111 192.168.1.1
server2 222.222.222.222 192.168.1.2
Pound設定

server1に対して行います。
Poundのインストール

# yum --enablerepo=epel -y install Pound


Poundの設定

# vim /etc/default/pound
startup=1
# vim /etc/pound.cfg
ListenHTTP
    Address 111.111.111.111     # グローバルIP 
    Port 80
End

Service
    BackEnd
        Address 192.168.1.1   # ローカルIP
        Port    8080
    End

    BackEnd
        Address 192.168.1.2    # ローカルIP
        Port    8080
    End
End

簡単に説明すると、ポート80のHTTPアクセスを受けたサーバー1がBackEndのところで設定したサーバーへポート8080で渡す、ということをしてます。

あとは、確認して起動させます。

# pound -c -v
# /etc/init.d/pound start


これでPoundの準備はできました。

webサーバー設定

先ほどPoundの設定で行ったようにポート8080で受けるように設定します。
これはserver1、server2両方とも設定します。

Apacheでもいいんですが、自分はnginxを使います。

nginxのインストールは以前書いたのでよかったら参考にしてください。
http://work.castleman-blog.com/entry/20110826/1314364283

# vim /etc/nginx/nginx.conf
Listen 8080;

# /etc/rc.d/init.d/nginx restart


これで分散処理の設定は完了です。

ブラウザでアクセスして、ログを見るとアクセスが分散されているのが分かるかと思います。

さくらVPSでローカルネットワーク設定

さくらのVPSでサーバー同士のローカルネットが可能なったので試してみます。
今回はVPSを2台用意して、その2台間での接続を試してみます。

VPSの申し込み

ローカルネットを使うには、2012年3月29日以降申込したもので同リージョンにあるものしかできないので今回は新規で申し込みします。
仮登録ではローカルネットは使えないので本登録まで必要です。
詳しくは、下記のさくらの公式サイトを。

http://vps.sakura.ad.jp/

スイッチを作成

下記ページのタブ、サーバーに移動。

https://secure.sakura.ad.jp/vps/

登録したサーバーのゾーンを確認。今回は「東京第2」です。
本登録後、反映まで1時間ほどかかるみたいなので登録後すぐは確認できないかもしれません。
f:id:sato-m99:20140218172716p:plain


タブ、ネットワークに移動。
スイッチの追加を押して、先ほど確認したゾーンにスイッチを作成します。
名前は分かりやすいものを。
f:id:sato-m99:20140218171439p:plain

接続設定

ネットワークの設定をします
またサーバー画面で、設定したいサーバーの「接続設定」ボタンを押します。
f:id:sato-m99:20140218190420p:plain

すると下記画面が出ると思います。
今回は、eth0はそのままインターネット接続に、eth1をローカルネット接続として使います。
eth1の未接続のボタンを押します。
f:id:sato-m99:20140218190801p:plain

そして下記のような画面が出たら、先ほど作ったスイッチを設定します。
f:id:sato-m99:20140218190808p:plain

もう一台も同じように設定して接続設定は完了です。

サーバー側のネットワーク設定

eth1のネットワーク設定をします。
今回はCentOS-6.5ですが、OSごとに変わってくるので合わせて設定してください。

1台目のローカルipを「192.168.1.1」、2台目を「192.168.1.2」とします。

#  vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Ethernet"
IPV6INIT="no"
IPV6_ROUTER="no"

# /etc/rc.d/init.d/network restart

上記のようにeth1の設定ファイルを作成します。
もう1台も同じように設定しますがipのところは気をつけてください。


これで完了ですが、/etc/hosts のホスト名を分かりやすいようにしましょう。

# vim /etc/hosts
192.168.1.1  web1.internal web1
192.168.1.2  web2.internal web2

上記を追加しておきます。


あとはローカルでつながっていることを

# ping web2
# ssh web2

などして確認してみてください。

macを買って最初にやったこと

ブラウザ

普段使いのブラウザ+確認環境のために、デフォルトで入っているSafari以外にもブラウザをインストール。

Chromeインストール
http://www.google.co.jp/intl/ja/chrome/browser/

Firefoxインストール
http://www.mozilla.jp/firefox/

VirtualBox

IE使うため、下記にあるvagrantを使うためインストール。
https://www.virtualbox.org/wiki/Downloads

vagrant

仮想環境を作るために上記のVirtualBoxと、このvagrantをインストール。
http://www.vagrantup.com/downloads.html

iterm2

初期からあるターミナルでもいいんですけど、個人的にはiterm2の方が好きなのでインストール。
http://www.iterm2.com/

Archive::Zipでのshiftjis変換でハマる

* Archive::Zipのバージョン1.33現在

Archive::Zipを使ってzipファイル作る際にwindows環境を考えてshiftjisに文字コード変換した上で作成しようとしたらハマってしまったのでメモ。

my $zip = Archive::Zip->new;
$zip->addTree($dir);

for my $member ( $zip->members ) { 
    my $filename = $member->fileName; 
    Encode::from_to($filename, "utf8", "shiftjis");  
    $member->fileName($filename); 
}

こんな感じで使っていたんですが、どうやら一部のファイル名が文字化けしていた模様。
一部のファイル名とはshifjisで2バイト目に0x5c(\)を含む文字。

ーソЫⅨ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭偆砡纊犾

このあたり。


原因は、Archive::Zip::Member->fileName

sub fileName {
    my $self    = shift;
    my $newName = shift;
    if ($newName) {
        $newName =~ s{[\\/]+}{/}g;    # deal with dos/windoze problems
        $self->{'fileName'} = $newName;
    }
    return $self->{'fileName'};
}

これが\を置換しているせいでした。

だからこの関数を使わずに

my $zip = Archive::Zip->new;
$zip->addTree($dir);

Encode::from_to( $_->{"fileName"}, "utf8", "shiftjis" )
    for $zip->members;

のように直接変換してしまえば文字化けはおきないです。