和風売り専【夢遊び】オーナーの日常

和風売り専【夢遊び】の高橋の日常&NEWS

サーバー設定やら何やら色々終わって燃え尽き症候群?

Pocket

毎度高橋です。なんだか少し燃え尽き症候群…というわけではないのですが、なんだか少し疲れ気味の毎日です。
まぁメインは新しいサーバーの設定にとっても疲れた…ということにしておきましょう。

それ以外の大きなトラブルも無かったわけではなく、ご迷惑をおかけしましたお客様方にはこの場を借りまして深くお詫びいたします。
またメールや電話、ご来店にて暖かなお言葉や対応を頂きましたこと、感謝してもしきれない思いでございます。
より一層の努力と精進を重ねて参りますので、これからも何卒宜しくお願い申しあげます。

さて、本題のサーバーですがなんとかかんとか小さなバグも潰し終わり、無事正常稼働しております。
「えっ?サーバーなんて全部環境一緒じゃないの?」
と思われたそこのあなた。そんあこたぁないのですよ。

とりあえず何故サーバーを変えたのかですが、夢遊は自社サーバー(というか自宅サーバー)で自前でサーバーを持っているのですね。で、前のサーバーは作業用も兼ねておりましたので、リソースがさすがに足りなくなってきたのです。(夢遊び以外にも運営してるサイトがいくつかあるしね)
んで、新専用サーバーという事になったのですが、これまた大変でした。

サーバー環境は以下
PC:NECのノートパソコン
OS:ubuntu server12.04
CPU:core 2 duo 2.0G
メモリ:4G
HDD:SSD128G

でまぁ、このOSが問題でしてubuntu server最新版に収録されているのはphp5.3。これ今まで使っていたphp5.2とかなり違います。データベースでsqliteてのがあるのですが、slqite2が使えなくてsqlite3しか使えない。互換性全くなし…っておいw
php5.3にはsqlite2用の関数もなくなってる\(^o^)/オワタ
しょうがないのでsqlite2用の関数をphp5.3にて再定義して無理やり動かしたわけですがw
以下備忘録としてその手順とソースを公開。php5.2から5.3に乗り換えてsqliteで困っている人は参考にしてちょw

とりあえず以下はubuntu server 12.04での手順。うろ覚えなので多少間違えてるかも。
1)sudo apt-get install sqlite
上記でsqlite2をCUIからインストールしてsqlite2とsqlite3を共存させる(php.iniでsqlite2モジュールを入れる必要はなし)
2)sqlite old.sqlite .dump | sqlite3 new.sqlite
CUIでsqlite2をsqlite3に変換
3)sqlite2_function.incとかでも適当につくって以下のソースをぶち込む

<?php
//sqlite3になりsqlite_open,sqlite_close,sqlite_queryが使えなくなったのでこの関数作っちゃう
define(‘DBDIR’,’データベースのフルパス’);
function sqlite_open($db_dir){
$dbcon=new SQLite3(DBDIR);
return $dbcon;
}
function sqlite_query($sql,$dbcon){
$result=$dbcon->query($sql);
if($result){
return $result;
}
else{
return false;
}
}
function sqlite_fetch_array($result){
$result = $result->fetchArray(SQLITE3_ASSOC);
return $result;
}
function sqlite_close($dbcon){
if($dbcon->close()){
return true;
}
else{
return false;
}
}
function sqlite_escape_string($str){
return $str;
}
?>

<?php

//sqlite3になりsqlite_open,sqlite_close,sqlite_queryが使えなくなったのでこの関数作っちゃう

define(‘DBDIR’,’データベースのフルパス’);

function sqlite_open($db_dir){

$dbcon=new SQLite3(DBDIR);

return $dbcon;

}

function sqlite_query($sql,$dbcon){

$result=$dbcon->query($sql);

if($result){

return $result;

}

else{

return false;

}

}

function sqlite_fetch_array($result){

$result = $result->fetchArray(SQLITE3_ASSOC);

return $result;

}

function sqlite_close($dbcon){

if($dbcon->close()){

return true;

}

else{

return false;

}

}

function sqlite_escape_string($str){

return $str;

}

?>

上記ソースで注意点がひとつ。sqlite_query関数ですがphp5.2でも以下どちらもでも動いた模様。(というか実証済みw)
sqlite_query($dbcon,$sql);
sqlite_query($sql,$dbcon);
引数の順序がどっちでも動いてしまうという欠陥仕様だったので、引数の順番を統一したコードであること。定義した関数の引数は自分のコードに合わせて順序を変えてくれたらおk。
んであとはinclude_onceにてそれぞれのコードの先頭にでも呼び出したらおk。
あとdumpして変換したsqlite3だけどテーブルの型の定義がちゃんとできているかどうかは要確認。sqlite2だと曖昧でも動いてくれたのだけど、sqlite3だと型の定義をしていないとupdate文が通らなかったりする。エラーも出ないしかなりハマったので一応記載。

んで、どうせもう一般のお客様向けの内容でも無くなってきたので、サーバー関連で書きたいこと書いちゃえとwwwwwwwww

とりあえずサーバー中身は以下。
apache2.24だっけか。php5.3は御存知の通り。
ftpにはpre-ftpd。ハッキリ言うと設定が死ぬほど楽。というか設定すること殆どなしなので、かなり楽。
DNSにまdnsmasqを使用。これも設定がかなり楽。ただ一つ難点があって/etc/resolv.conf(どこにDNSの問い合わせします?的なファイル)が再起動とかすると勝手に書き換わる。
ネットワーク関連の設定が邪魔してる模様。なので適当に「ubuntu resolv.conf 書き換わる」てキーワードで検索して下さい。基本的にはネットワーク関連の設定ファイルに「書き換わらないように」設定して、サービスを再起動するだけ。

あとデスクトップ環境入れようかとも思ったのだけれど、サーバー設定するだけならSSHにてCUIで十分。というかデスクトップ環境でできる事はほぼ無いwwwwwww
ですので構築しようとしている方がいたら、CUIにてチャレンジして見ることをおすすめします。意外と簡単だし。

ということでなが~い長い高橋のひとりよがりな備忘録終了…うん、今回はかんべんして欲しいんだ。だって最近良いことがあまりないんだもん。これくらいしか書けること無いし。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

和風売り専【夢遊び】オーナーの日常 © 2018 Japanese Style Delivery GAY HOST YumeAsobi OSAKA