さくらレンタルサーバのSIN SSL利用してると、Facebook APIがエラーになる

エラーは下記です。

An active access token must be used to query information about the current user.

恐らくさくらのレンタルサーバのSSL使うと、httpsアクセスだと認識されないことが原因なのではないかと思った。facebookのSDKみたらやはり、$_SERVER[‘HTTPS’]を見てたので、下記のようにしたらできた。

if(isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])){
    $_SERVER['HTTPS'] = 'on';
}

ちなみに、このプログラムはcakePHP2を使っているのですが、twitterやfacebookなどのコールバックURLをRouter::url()を使って動的に取得させていて、これまたhttpsアクセスしてるのにhttpsと勘違いされて、http://***というアドレスにされてしまっていた。これについては、core.phpのConfigure::write(‘App.fullBaseUrl’, ‘http://example.com’);に、httpsアドレスをベタ打ちしたら大丈夫になった。

さくらサーバでhttpsアクセスしてもhttpsアクセスしたことにならない

お客さんがさくらサーバでSSL設定されたのですが、httpsアクセスしてもhttpsアクセスしたことにならない。httpsアクセスすると$_SERVER[‘HTTPS’]がセットされるはずですがない。これがセットされてない場合、httpsのURLにリダイレクトするような設定をしてたのでリダイレクトループになりました。

参考:サクラのレンタルサーバーで共有SSLを使うとHTTPSを認識しない問題

if (!isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])) {}

$_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’]がセットされてなければhttpsじゃないと判断できるらしい。

下記のような感じでやったらできた。

private function _chk_https()
{
    if(empty($_SERVER['HTTPS']) && !isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])){
        $this->_forceSSL();
    }
}

private function _forceSSL()
{
    return $this->redirect('https://'.env('SERVER_NAME').$this->here);
}

さくらVPSがssh接続できない

久しぶりにさくらVPSを借りて仮登録完了したからssh接続しようとしたらエラーになって接続できない。
Connection refusedになるので、サーバを再起動してみたけど、今度はOperation timed outになる。

まだ何の設定もしてないまっさらな状態のはずなんだけど、さくらの管理画面についているHTML5のターミナルのようなものを見てみると、下記のようにカーネルパニックとか書いてある。また再起動しても同じになる。

スクリーンショット 2014-10-20 4.12.07

さくらVPS SSH接続できないときにVNCコンソールで頑張って復帰するといった記事もあって、やってみたけどどうもダメなので、OS再インストールしてみた。時間かかる。。。AWSなら一瞬なのになー。。

20分くらいかかった気がするが再起動終わったら普通通りログインできた。

さくらサーバにgitをインストールする

https://code.google.com/p/git-core/downloads/list

ここから最新版をローカルに落として、サクラサーバにSCPでコピーします。

ここに書いてある通りにインストルします。

$ tar xvfz git-1.9.0.tar.gz
$ cd git-1.9.0
$ ./configure --enable-pthreads=-pthread --prefix=$HOME/local
$ gmake all install

インストールまで出来たら、パスをとおします。

/home/hogehoge/.cshrcを編集します。
下記のset pathというところの最後に、$HOME/local/binを追加します。

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin $HOME/local/bin)

そして、下記をやるとcshrcの再読み込みになるようです。

$ source .cshrc

これでgitと打つとgitがでてきます。