ここのサーバーを調整しました

ここのサーバーはさくらのVPS上でUbuntu 14.04を動かしています。
いくつか問題があったので調整してみました。

nginx+fastcgi+php構成に変更

これまでWordPressのパーマネントの関係で、このブログでは
nginxからリバースプロキシでApacheにリクエストを投げるという無駄なことをしていました。

そこで今回ようやくnginx+fastcgi+php 構成に変更しました。

1. fastcgiのインストール

Ubuntuでは以下のコマンドでインストールします

sudo apt-get install php5-fpm

2. nginxの設定

nginxの設定は以下を参考にさせてもらいました。
nginx+php+fastcgiでwordpressを動かしてみた – polidog lab++
変えているところはfastcgi_passの設定で、UNIXソケットでやりとりするようにしています。

WordPress上でSuperCacheプラグインを使用しているので
http://wiki.dreamhost.com/Nginx#WordPress
を参考にキャッシュが有効になるようにしました。

server {
        listen  80;
        server_name diary.carme-ln.net;
        -- 中略 ---
        location / {
                index index.php index.html index.htm;
                root [path];

                if (-f $request_filename) {
                        break;
                }

                set $supercache_file '';
                set $supercache_uri $request_uri;

                if ($request_method = POST) {
                        set $supercache_uri '';
                }

                # Using pretty permalinks, so bypass the cache for any query string
                if ($query_string) {
                        set $supercache_uri '';
                }

                if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
                        set $supercache_uri '';
                }

                # if we haven't bypassed the cache, specify our supercache file
                if ($supercache_uri ~ ^(.+)$) {
                        set $supercache_file /wp-content/cache/supercache/$http_host$1/index.html;
                }

                # only rewrite to the supercache file if it actually exists
                if (-f $document_root$supercache_file) {
                        rewrite ^(.*)$ $supercache_file break;
                }

                # all other requests go to WordPress
                if (!-e $request_filename) {
                        rewrite ^.*$ /index.php last;
                }
        }

        location ~\.php$ {
                root [path];
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}

無事に表示できているようなのでApacheを起動しないようにします

sudo update-rc.d -f apache2 remove

Apacheを止めたのでサーバーのメモリ使用量を減らすことが出来ました。めでたし。

サーバーの起動が遅い問題

サーバーを再起動した時に起動がやたら長い問題が出ていました。
さくらのVPSのコンソールから起動の様子を観察していると
“Waiting up to 60 more seconds for network configuration…”
と表示されており調べてみると、
どうやらネットワーク設定に問題があってフェイルセーフでウエイトが掛かっていたようです。

/etc/network/interfacesを見て見るとネットワーク設定を読み込む時にethtoolが呼ばれています。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address xxx.xxx.xxx.xxx
        netmask xxx.xxx.xxx.xxx
        gateway xxx.xxx.xxx.xxx
        dns-nameservers xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
post-up /usr/sbin/ethtool -K eth0 tso off

ethtoolのパスを調べてみると/usr/sbinではなく/sbinにありました。
サーバーをアップグレードした際にethtoolのパスが変わって、スクリプトが走らないため起動に時間が掛かっていたようです。
/sbin/ethtool に変更してあげると起動が遅い問題は解消しました

画像の表示などが遅い

起動時にethtoolで設定されるTSOの無効化が有効になっていないせいでした。

post-up /sbin/ethtool -K eth0 tso off

さくらのVPSではこれを入れないと通信が遅くなるみたいです。
このVPSサーバーは初期のVPSマシンなので、最新のサーバーではどうなっているかは分からないです。

Eclipse4.3.2でJava8を書けるようにする

EclipseでのJava8のサポートは6月にリリースされる予定の4.4から

Eclipse 4.3 KeplerでJava8の構文を使おうとすると以下の様にエラーが出てしまう
eclipse_java8_non_support

4.4が出るまで待てないので、4.3.2用のJava8サポートパッチをインストールする
JDT/Eclipse Java 8 Support For Kepler – Eclipsepedia
https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

addedEclipsePatch
インストールして再起動したのち、コンパイラー設定を1.8に変更すればコンパイルが通るようになる
preferenceJava8

eclipse_java8_support

このサーバーのdo-release-upgradeに失敗した

このサーバーのOSをUbuntu 10.04から12.04にアップグレードしようとしたら失敗した

アップグレード方法はいたって簡単
サポートが長いLTSにしたかったので以下のように設定する

 vim /etc/update-manager/release-upgrades
 Prompt=lts

あとはdo-release-upgradeコマンドを実行するだけ…だった

 sudo do-release-upgrade

どこで失敗したか?
パッケージのアップグレード時に設定ファイルの更新を尋ねられる。
その際にシェルに入って直接編集している際にCtrl-Cを押したところ、
作業しているシェルではなくdo-release-upgradeが終了してしまいアップグレードが中断されてしまった。

以下のコマンドで中断したパッケージインストールを再開できるようです。

sudo dpkg -C
sudo dpkg --configure -a

ただ何を血迷ったか、do-release-upgrade -d でさらにアップグレードをして
現在、Ubuntu 14.04 (開発版)になっています。

MavericksのUSBブートディスクを作る

OS X 10.9ことMavericksがリリースされました。
App Storeから無料でダウンロードできるのですが、
複数のMacを持っている方はその都度ダウンロードするのは面倒です。

mavericks_installer

他の記事では、Mavericksのインストーラー内のイメージをディスクユーティリティから書き込む方法が紹介されていますが、今回はインストーラー内に用意された書き込みツールを使用した方法を紹介します。
続きを読む

自宅サーバーをアップデートした

自宅サーバーのHDDを換装に合わせてサーバーの再構築をしました。
この記事では構築時の設定メモを書いてみます。

サーバー機能

自宅サーバーでは以下の機能を提供しています

  • DHCPサーバー
  • DNSキャッシュサーバー
  • Sambaサーバー
  • Web開発サーバー

DHCPとDNSは止めるわけにはいかないので、VMで代替を用意します。
続きを読む

passengerのApacheモジュールがビルド出来なくて詰んでたメモ

CentOS5.7 x86_64環境において
passenger3でapacheモジュールを作ろうとすると
curl-devをインストールしているにも関わらずCurlライブラリがないと怒られる

$gem i passenger
$passenger-install-apache2-module
...
Curl development headers with SSL support... not found

原因はCurlではなくて他のパッケージが足りなかったのが原因でした
以下のパッケージをインストールして無事ビルド完了

$ sudo yum install krb5-devel libidn-devel

これを解決するのに半年かかったとかもうね…

ubuntuのパッケージ管理で最新のgitを使う

新年最初の投稿は新年の挨拶ではなくTipsから

git 1.7.10以降では設定の外部読みこみが出来るのだがubuntu 12.04だと古いバージョンで利用できない
そこでubuntuのgitを更新してみた

パッケージ管理させたいのでソースコードからインストールするのではなく、ppaを利用した。
以下のコマンドで更新できた。

$ sudo apt-add-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get upgrade

引数なしでpushしようとすると警告が出るので、デフォルトの挙動を設定
$ git config --global push.default simple

これでuserやgithubの設定を分離できるのでgithubにgitconfigを置いても問題ない

[参考]
Git stable releases : “Ubuntu Git Maintainers” team
引数なしのgit pushは危険なので気をつけましょう – DQNEO起業日記
.gitconfig に include で設定を読み込めるようになった – TMD45INC!!!