格安サーバ・ロリポップを使い倒す

zuzara.comの各サービスはロリポップのサーバで運営されています。日頃の感謝を込めて月額263円のサービスを「ホリデープログラミング」する上でいかに使い倒しているか紹介したいと思います。

安い

ムームードメインで独自ドメインの.comを買っても初年度約5000円の投資のみ。これは、ものすごいコストパフォーマンスだと思う。

サブドメイン

バーチャルホストと思われる設定をWeb上の管理画面から行え、サブドメインが無制限に作れる。(ドキュメントに明記されていない模様だが制限はあるかもしれない)各サービスごとに絶対パスが/になってくれるので管理がちょっと楽。

PHP+MySQL

2009年6月現在はPHP5を選択できるようになった。今から使うのであれば自動的に5になる。バージョンは5.2.6。コンパイルオプションは以下。curlやopensslが使えるようになった。5から登場のPDOやjsonも使える。

'./configure'
'--prefix=/usr/local/php5'
'--sysconfdir=/usr/local/php5/etc'
'--with-config-file-path=/usr/local/php5/lib'
'--disable-debug'
'--enable-bcmath=yes'
'--enable-debug=no'
'--enable-discard-path'
'--enable-dom'
'--enable-exif'
'--enable-force-cgi-redirect'
'--enable-ftp'
'--enable-gd-native-ttf'
'--enable-magic-quotes=yes'
'--enable-mbregex'
'--enable-mbstring'
'--enable-safe-mode'
'--enable-simplexml'
'--enable-soap'
'--enable-sockets'
'--enable-sqlite-utf8'
'--enable-zend-multibyte'
'--with-curl'
'--with-bz2'
'--with-gettext=/usr/local'
'--with-iconv'
'--with-iconv-dir=/usr/local/include'
'--with-gd'
'--with-jpeg-dir=/usr/local'
'--with-png-dir=/usr/local'
'--with-freetype-dir=/usr/local'
'--with-ttf'
'--with-zlib=/usr'
'--with-zlib-dir=/usr'
'--with-ttf'
'--with-openssl'
'--with-mcrypt=/usr/local'
'--with-xsl=/usr/local'
'--with-xmlrpc'
'--with-mysql=/usr'
'--with-pcre-dir=/usr'
'--with-pear=/usr/local/php5/php'
'--with-pdo-mysql=/usr'
'--with-pdo-pgsql=/usr'
'--with-pdo-sqlite'
'--with-pgsql=/usr'
'--with-sqlite'

PHPは2006年7月現在4.3.11でコンパイルオプションは以下。gdが動くので特に困ったことはない。

'./configure'
'--enable-ftp'
'--with-mysql'
'--with-gd'
'--with-ttf'
'--with-apxs=/usr/local/apache/bin/apxs'
'--enable-track-vars'
'--enable-trans-sid'
'--enable-zend-multibyte'
'--enable-mbstring'
'--enable-mbregex'
'--enable-mbstr-enc-trans'
'--enable-memory-limit'
'--enable-sockets'
'--with-jpeg-dir=/usr'
'--with-png-dir=/usr'
'--with-freetype-dir=/usr'
'--with-zlib-dir=/usr'
'--enable-exif'
'--with-dom=/usr/local'
'--with-dom-xslt'
'--enable-xslt'
'--with-xslt-sablot'

MySQL3.23.49はphpMyAdminで管理。データベースは1つしか作れない。

*.so

PHP5での動作は未確認。特に必要ないだろう。

PHP4環境ではdlで拡張できてしまう。php-jsonADOdb辺りが便利。コンパイルは別の環境で行ってsoファイルをアップロードすれば使える。

ローカルに開発環境は必要

ロリポップはFTPしか使えないので開発環境はローカルにないと不便。FTPは昔からFFFTP。
自分は先日無料になったVirtualPC2004上のWhiteBoxLinuxでSambaを動かしてWindowsのgvimで編集している。なおVirtualPCはCentOS4などいくつかのOSがインストールできないので要注意。(動作確認したOS一覧が表になったページがあったが失念⇒コメントで教えていただきました:What Works and What Doesn’t in Microsoft Virtual PC 2004

他にもVMwareやcoLinuxも無料で使える。

追記
最近は Mac 使いなのでそのまま apache+mysql+php 環境が整う。Windows なら VMware を使うところ。

PEAR

PHPのPEARはデフォルトではあまり充実していないので自分でPEARのサイトからダウンロードして解凍、必要なファイルをアップロードする必要がある。一番使っているのがCache_Lite。
Cache_Liteのベースになるコード。

<?php
require_once 'Cache/Lite.php';

$cacheOptions = array (
    'cacheDir' => 'tmp/',
    'lifeTime' => 3600, // seconds
);

$cacheId = $url;

$objCache = new Cache_Lite($cacheOptions);

if ($cache = $objCache->get($cacheId)) {
    $buf = $cache;
} else {
    $buf = file_get_contents($url);
    $objCache->save($buf, $cacheId);
}
?>

参考:
ブラウザからPEARをインストールする

cron

cronは使えない。どうしても必要な時は別のcronが使えるサーバからping(HTTPでアクセスするだけ)して代用。

.htaccess

PHP5環境では.htaccessやini_setで設定を変えられない。ロリポップのユーザ画面から設定できる項目は以下に載っている。PHP4のときに設定できた項目のため、という雰囲気だが display_errors の設定ができないのが痛い。(2009年6月現在ロリポップに問い合わせ中 => 要望として受け入れられた模様)

php.iniの設定が古めなので必須。

php_flag register_globals Off
php_value error_reporting 2047
php_flag display_errors Off
php_flag log_errors On
php_value error_log ログへのパス

見られたくないディレクトリ用。PukiWiki参照。

Order allow,deny
Deny from all

mod_rewriteも動く。2.0っぽいきれいなURLを実現。Zend_Framework参照。

RewriteEngine on
RewriteRule !\.(html|txt|js|ico|gif|jpg|png|css)$ index.php

404ページはロリポのページなので設定しておいた方が無難。

ErrorDocument 404 /notfound.php
ErrorDocument 403 /notfound.php

MySQLのコネクション数の制限が厳しい

共有サーバだけあって若干重い。MySQLのToo many connectionsエラーが比較的目に付く。PEARのCache_Liteなどでキャッシュする必要がある。

静的なページなら1日2万PVぐらいは平気。ただ、PVが増えるとHDDの容量が(おそらくはapacheのログで)すぐいっぱいになってしまうので月額+105円で500MBまで増やす必要が出てくるかも。
ちなみに容量を一度増やすと減らせないので(月額料金はずっと増えたまま)要注意。
追記
2009年6月29日から月額は同じで容量が1GBに増える。また、契約更新時に増量プランから元に戻せるそうだ。

アクセス解析は別サービスの方がよさげ

管理画面からanalogの解析結果を見れるが、GoogleAnalyticsの方が断然いい。一応、apacheの生ログもホスト名ごと、日別にダウンロードできる。リアルタイムではなく、半日ほどずれて昨日のログがダウンロードできる、という具合。

というわけでおすすめです、ロリポップ

  1. #1 by totok on July 24th, 2006 - 5:31 am

    地図で探すゴルフ場検索「ファー!」も
    ロリポ+ムームーです。

    サブドメインぼこぼこ作れるのが便利ですね。
    ただDNSサーバーがいじれないのが、ちょっと残念。

  2. #2 by funaki on July 24th, 2006 - 8:06 pm

    DNSサーバいじれない関係で、ロリポからの引越すとなると大変ですよね。大ヒットしたサービスがあったらそのサブドメインだけ別サーバにしたいところではありますが。

  3. #3 by これ on July 26th, 2006 - 9:55 am

    >(動作確認したOS一覧が表になったページがあったが失念)
    ttp://vpc.visualwin.com/
    もしや、ここでは?

  4. #4 by funaki on July 27th, 2006 - 12:38 am

    ぁ、まさにそれです。どうもありがとうございます!

  5. #5 by レンタルサーバー探し中 on October 3rd, 2006 - 9:06 pm

    ロリポップというところは使いやすそうですね。

    いま、100円サーバーで失敗して
    レンタルサーバーの比較ページを歩いているところですが、
    価格的にもロリポップが手ごろですかね。

  6. #6 by ロリプ~! on October 8th, 2006 - 12:07 am

    はじめまして。ずいぶん前ですが、ロリポでMySQLのテーブルを無意味に大量に作っていったら700個あたりまで作れた記憶があります、これがMySQLの仕様かロリポの仕様かはわからないですが。

  7. #7 by リルーン on November 8th, 2006 - 10:41 pm

    はじめましてヽ(●´ー`●)/
    リルーンです!>ω・*

    リルーンも使っていますよ~!

    PHPもCGIも使えますし、レンタルブログや自分でのブログ設置もできる、という面が素晴らしいです!(o^▽≦o)゜*

    大変重宝していますよ!Web2.0に沿ったホームページの作成を学ぶ機会にもなりますし!(≧ε≦○)

    ではっ!>∀<∩

  8. #8 by making on March 29th, 2007 - 11:58 pm

    > PHPのdlで拡張できてしまう。
    ってことでSQLiteも使えるんですね
    http://mtr.boy.jp/blog/sqliteinlolipop.html

  9. #9 by funaki on March 30th, 2007 - 8:50 am

    おぉ。いいですね。

  10. #10 by Neo on January 7th, 2009 - 1:21 pm

    参考になりました

(will not be published)
Subscribe to comments feed

SetPageWidth