2002年10月にVine Linux 2.6がリリースされました。
Vine Linux 2.6はデスクトップOSとしても手軽に使用できますが、ここでは簡単なサーバ用途で使用する例を紹介します。
今回使用したものはVine Linux 2.6r3のFTP版です。
今回紹介している主なサーバはApache,PostgreSQLでアプリケーションの使用言語はPHP4です(バージョンは以下の通りです)。
・Apache 1.3.27
・PostgreSQL 7.2.3
・PHP 4.2.3
(1)サーバ用途のインストール
まずパーティション構成は次のようにしました。
・/dev/hda1:/boot ext3 50MB ・/dev/hda2:/ ext3 8192MB ・/dev/hda3: swap 256MBインストール時にはインストールの種類として「サーバ」を選択します。
<html>
<head>
<title>Vine Linux 2.6 Apache,PHP,PostgreSQL test!</title>
</head>
<body>
<?php
$mysql="select * from mytable order by code";
echo("SQL : ".$mysql."<br><br>");
$mycon=pg_connect("dbname=template1 user=guest password=guest");
$myrs=pg_query($mycon,$mysql);
echo("<table border=1><tr><th>Code</th><th>Name</th><th>Comment</th></tr>");
$myrows=pg_num_rows($myrs);
for ($i=0; $i<$myrows; $i++) {
$mydata=pg_fetch_row($myrs,$i);
echo("<tr>");
for ($j=0; $j<count($mydata); $j++) {
echo("<td>".htmlspecialchars($mydata[$j])."<br></td>");
}
echo("</tr>");
}
echo("</table>");
pg_free_result($myrs); //free result_set memory
pg_close($mycon);
?>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
<title>Vine Linux 2.6 Apache,PHP,PostgreSQL CSV file output test!</title>
</head>
<body>
<?php
// csvdata関数
// コード変換:EUC_JP ==> SJIS
// a,"b ==> "a,""b"
function csvdata($in) {
return "\"".str_replace("\"","\"\"",mb_convert_encoding($in,"SJIS","auto"))."\"";
}
// table access
$mysql="select * from mytable order by code";
echo("SQL : ".$mysql."<br><br>");
$mycon=pg_connect("dbname=template1 user=guest password=guest");
$myrs=pg_query($mycon,$mysql);
echo("<table border=1><tr><th>Code</th><th>Name</th><th>Comment</th></tr>");
$mydir="tmp/";
$myfilename="mytable.csv";
$myfp=fopen($mydir.$myfilename,"w");
flock($myfp,2); //lock current csv file
$CRLF="\r\n"; //SJIS改行データ
$myrec="";
$myrec=$myrec.csvdata("コード").",";
$myrec=$myrec.csvdata("名称").",";
$myrec=$myrec.csvdata("コメント").$CRLF;
fputs($myfp,$myrec); //タイトル行出力
$myrows=pg_num_rows($myrs);
for ($i=0; $i<$myrows; $i++) {
$mydata=pg_fetch_row($myrs,$i);
$myrec="";
echo("<tr>");
for ($j=0; $j<count($mydata); $j++) {
echo("<td>".htmlspecialchars($mydata[$j])."<br></td>");
$myrec=$myrec.csvdata($mydata[$j]);
if ($j<count($mydata)-1) {
$myrec=$myrec.",";
} else {
$myrec=$myrec.$CRLF;
}
}
echo("</tr>");
fputs($myfp,$myrec);
}
echo("</table>");
pg_free_result($myrs); //free result_set memory
pg_close($mycon);
flock($myfp,3); //unlock current csv file
fclose($myfp);
// CSVファイルへのリンク定義
echo("<br><br>");
echo("<a href=\"".$mydir.$myfilename."\">download CSV file</a>(SJIS)<br>");
?>
</body>
</html>