2011年04月19日

Squid

最近使わないですが、http proxyのSquidを設定してみた。
ubuntu 10.10ですが、ベースは自分で入れてないからよくわかんない。

プロキシサーバの設定
http://tech.ckme.co.jp/proxy.shtml

大体は上記の情報で設定できる。
でもいくつか、駄目でした。
一番困ったのは「/etc/init.d/squid」が存在しない。
なんだよそれ。
日本語で探したけれど出てこなく、英語サイトを探したらすぐに出てきた。

service squid stop
service squid start

とやるらしい。
この辺に出ていた。

I can't find /etc/init.d/squid
http://ubuntuforums.org/showthread.php?t=1614776

「htpasswd2」のコマンドは「htpasswd」に変更してパスワードファイルを作成。
htpasswd -c /etc/squid/passwd hoge

あとはaptでインストールすると、ncsa_authも入っている。
パスはconfファイルのコメントに書いている。
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd

あとは大体こんな感じ。
下記3行は同じ位置に書かない。
だいたいコメントとか、定義と同じくらいの位置に書いておけばOK。

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
acl password proxy_auth REQUIRED
acl mynet src xxx.xxx.xxx.0/255.255.255.0 ←アクセスするネットワーク設定
http_access allow mynet password

これで、proxyがパスワード付きで使える。
posted by w033 at 23:03| 東京 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2011年03月27日

初心者向けVPSセキュリティー

Linuxとかは趣味程度なので、あまり詳しくはないのですが、というかWindowsでもセキュリティーはさっぱりなので、その程度のたわごとと思って読んでください。

で、VPSで一番大切なのは、他人に迷惑をかけないこと、と思う。
CPU使いまくりとかは、振り分けられているのだから許されていればいいかなと思うのだけれど、クラックされていて、全部他人へのアタックに使われていましたとか、スパムのふみ台でしたとかシャレにならない。
ということで、Linuxでは以下の点には十分注意されたし。

(1)メールの第三者中継
(2)sshのポートは変えておけ
(3)認証系は必ず暗号化
(4)rootは使わない
(5)MD5
(6)DNSに登録する場合のデメリット

簡単なものだけですが、レジュメをあげてみました。
変わったことをやろうとすると、これだけじゃ足りないでしょうけれど。
VPSが良いよと言ったからには、このくらいは載せておこうかなと思ったけで。

続きを読む
posted by w033 at 23:33| 東京 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

個人サーバ設計

VPS(Linux)が安い。
レンタルサーバというか、レンタルスペースを借りるより、お得だと思う。
Linuxをいじれる人なら、rootももらえるし、好きなアプリも入れられる。
頑張ればVNCを入れていろいろできて、\480〜から(メモリ256MB、HDD10GB)。
さらに、500円出せばメモリ、HDDも倍。
GUIを使わないなら、Linuxならメモリ256MBでも余裕です。

でもまあ、構築を自分でしなくてはならない、セキュリティーホール対策とかも自分で対応。
つうか、Windowsと違ってセットアップをたたいて、ダイアログで情報入力だけでOKとかじゃないのがつらいですよね。
勉強すればできるのだけれど、Windowsしか使ったことがない人にはつらいかも。
そんな人にも、そうでない人にも便利なのがこのサイト。

Server World
http://www.server-world.info/query?os=Ubuntu_10.04&p=make_media

私は玄箱時代からDebian系のLinuxが好きなので、Ubuntuを入れました。
情報をいろんなサイトから探さなくてよいのがGood!
さまざまなディストリビュージョンの情報が載っていて、ほぼ同じことができるように構築されているのが素晴らしい。
あともうちょっと、こんなことを実現したい。
記事はそこの寸前で止めていて、自分で探す面白さを教えてくれるサイトだと思います。
人によっては足りないと感じるかもしれないですが。
できれば、セキュリティーに関してもう少し書いてほしかったかな。

Debian GNU/Linux スレッドテンプレ
http://debian.fam.cx/

あと、debian系の情報はこっちですね。
一部、かなりマニアック。
それこそ、玄箱時代によく参照しました。
VPSはSSHくらいまでは、はじめから設定されているので、ここまでの情報はあんまり不要かな?
posted by w033 at 22:31| 東京 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年11月21日

Netwalkerも買ってみた

こっちは1月くらいまえかな。
ちょこっとの間使ってみての感想。
変なものばかり買ってるからヘボなんだとコメントをもらったけど、最近写真ネタだけだったので。
無駄遣いネタを少し。

NetwalkerはシャープのZaurus後継機というか、システム手帳とか、電子版ポケット辞書みたいな感じ。
OSはカスタムしたUbuntuといわれても微妙な人はLinuxのひとつです。
Debian系なので、黒箱以降、好印象なディストリビュージョンだったのと、コミュニティーでのUbuntu9.04サポートが切れたせいか、sofmapでやたらと安かったので買ってみた。

ひとことでいうと、小さいパソコンです。
メモリ(たぶん、ディスクにスワップ領域を作れば増やせるかと)とディスク容量(4GB+MicroSDカード。少なくとも8GBは認識された)が許せば、ubuntuで動くソフトはたいてい動きます(ARM版のバイナリが必要ですが、自分でコンパイルも可能)。
パッケージマネージャでゲームを入れれば、たいてい動きますし、NESをいれればファミコンのゲームもできます(ROMがあれば)
開発ツール入れて、apacheとかrubyとか入れて(そういえばperlははじめから入っていた)開発だってできるみたいです。
辞書を入れると辞書として使えますが、Wifiでネットにつながるので、私は辞書なし版を買いました。
ネットにさえつながれば困らないでしょう。

さて、私は青空文庫形式のテキストが縦書きで読みたかったので、シャープのサイトより、電子ブックリーダをいれました。
あとは、COMIXという画像ビューワ(回転方向とか覚えてくれるので便利)をいれて、電子ブック化しています。
これでネット上のファイルはたいてい見られます。
ごにょごにょ して手に入れたファイルだって見られますが、アングラより青空文庫とかをお勧めします。
あとはSSとかもよいかも。
ブラウザで表示すると横書きだけど。
忘れていましたが、シャープのサイトで電子ブックも買えるみたいです<買ったことはないです

で、電子ブックとしてはそこそこ優秀です。
なんといっても、バッテリーがよく持ちます。
画面を少し暗くして、CPUをあんまり使わなければですが、画面のほうは暗くしなくてもそこそこ持ちますし、ブックを表示するだけならCPUもたいして食いません。
あ、ちなみに、USB機器を接続したりすると、電気を食うかも。
マウス程度ならたいしたことないみたいですが。
タッチパネルは使ったことないので不明。
あとはキーボードがついているので、たいていのことは困りません。

システム停止については、電源ボタンを押してもいいし、本体を閉じてもよい。
立ち上げも、メーカーのいうとおり3秒くらいで立ち上がります(システムをいじるとわからんけど)。
電車の中でも困らないです。

飽きてきたら、ウィンドーマネージャを変えてみたり、システムを壊してみたりと楽しみ方はいろいろ。
別途2GBのmicroSDにバックアップを取っておけば、そいつで再インストールも可能。
コンソールも立ち上がるし、Linuxの勉強にももってこい。
値段を含めて考えても、お勧めの一品です。


Netwalker
http://www.sharp.co.jp/netwalker/pcz1j/index.html
posted by w033 at 21:10| 東京 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年11月05日

Ubuntuをインターネットに公開する

リファをみていたら、こんなものがありました。
http://q.hatena.ne.jp/1187068765

ちょっと興味あったので読んでる。
要約すると「Ubuntuでインターネットに公開するサーバを作りたいけど、なにか気にすることある?」ってところか。
私も一時期玄箱をネットに公開していたことがある。
自分がアクセスするだけのサーバだったけれど、フリーのDynamicDNS(以下、DDNS)に登録して、名前でアクセスができるようにはしていた。
ちなみに、私が使っていたのはこちら。

DynDNS
https://www.dyndns.com/services/dns/dyndns/

うちのブロードバンドルータ(以下、BBR。バッファロー製の安物)が、ここをサポートしていたから。
今のデザインだと、画面右上のCreate Accountで自分の情報(メールアドレス必要)を登録して、アカウントをとったらその上のログインでログインすればOK。
あとは、MyAccount→MyServices→Hostnames→Add New Hostname で自分のIPを登録すればいい。
自分のIPがわからなくても、サイト中にアクセスIPが表示されるので、通常はそれでホストを登録。

ここで一つ注意。
1.DDNS登録より先にセキュリティー対策はやっておく。
2.使わないポートは閉じておく。
3.DDNS登録したらアタックがくると思っておく。

特に3だ。
登録すれば、確実にくるだろう。
なにも手がかりなしでやる訳もなく、おそらくはDDNSを手がかりに探してくるはず。
自分のサーバみたいに誰にも教えていないサイトだからと安心していると、アタックのログが残っているので注意。
特に、SMTP、HTTPは確実にくる。
SMTPはいうまでもなく第三者中継。
HTTPはPHP+XMLのセキュリティーホール関係が多かった。
他にも多くきていたのかもしれないけれど、私はあけていなかったのでログには残っていなかった。

その他、DynDNSの場合は、24時間DNSリクエストがないと、登録が解除されてしまう。
他のサービスも遅かれ、早かれにたような時間制限がある。
DiCEとかつかっていれば、自動でやってくれるかもしれないけれど、うちの場合はBBRに任せっきりなのでプログラムで対処。
私の場合は、cron(Windowsならタスクのスケジュール)でDynDNSの登録アドレスにpingをうってくれるバッチを仕込んだ。
他人に公開するまえの時とか、同じようにしておけば便利です。

DiCE
http://www.hi-ho.ne.jp/yoshihiro_e/dice/


早速公開と思っているけれど、まずはどのようなハード構成にするか?
正直、ここが一番大切。
ハードというより、ネットワークなんだけれど。
構成によっては、リスクをそこで担保ができるから。

うちの場合、面倒だったのでBBRにセキュリティーを任せようと思った。
サーバはクラックされても困らない程度の情報しか持っていなかったし、サーバ以外は使わないときは落としておくのでやはり問題ない。
クラック上等というわけ(いや、してほしい訳じゃなく)。
以上のことにより、我が家では手抜き構成で、公開サーバとクライアントPCが同じセグメントに混在していた。
でも、普通はそんなリスキーなことしちゃいけません。
DMZをちゃんと考えましょう。
インターネットから、公開サーバへのリクエストは通すとして、
自分のクライアントPCから、公開サーバへのリクエスト、これも通していいね。
でも、公開サーバからクライアントPCへのアクセスはさけたい。
あと、SMTPのサーバでもなければ、公開サーバからインターネットへのアクセスもさけておきたい。
これは乗っ取られたときの保証ですね。
でも、アクセスを許可しないとアップデートがかけられなくなります。
私はアップデートのときだけ、ルータの設定を変えることをお進めします。
もうひとつ、公開サーバからルータへのアクセスも禁止しておきましょう(忘れがち)。
こちらも、乗っ取られたとき対策。

そこまで周到な準備がいるの? そう聞かれると微妙です。
現に私はやっておりません。
サーバ乗っ取りなんてそこまで頻度があるかも微妙です。
しかし、あるかないかの1回で、すべてはだめになってしまうもの。
ウィルス対策ソフトを入れていれば、ウィルスなんてないと思っても良いかというと、そういう訳ではないので。
リスクをどこまで回避したいか、それを決めるのはサーバのオーナーです。
仕事でもない限り、それは自分ですよね。
ちなみに、PHPのセキュリティーホールを見ていると、任意のコマンドを実行されてしまうとありますが、これははっきり言って乗っ取られるのと同じです。
Apcheをrootで動かしており、suExecじゃなく、ファイルのパーミッションもすべてrootだったりすると、もう目も当てられません。
ルータで、セグメントを分けられるなら、分けておきましょ。


次にアプリケーションの設定です。
debianでパッケージ数は1万を超すと言われています。
そんなもの、いちいち紹介できません。
なので代表的なものだけ。
セリュリティーホールはいつなんのアプリで発生するかわかりません。
自分(の設定)は完璧だとおもっても、注意するに超したことはないのです。

◆apache
PHPはいまだにセキュリティーホールやバグが見つかっています。
現状、アタックで一番多いのもPHPじゃないでしょうか(既に古い情報かも)。
apacheを動かしているユーザも気をつけましょう。
自分で設定するときは、できればrootをさける方向で。
他、CGIを動かすユーザや、PHP、Monoなど動かす場合は、そのユーザが誰なのか十分に注意しましょう。
なんでもできるからと、rootを設定していながらサーバで任意のコマンドを実行されると、もう何でもできてしまいます。

◆postfix、qmail、他
第三者中継に気をつけましょう。
最近のは簡単なんで大丈夫かと思いますが。
設定の抜けや、常識でしょ? なんて言われているあたりは、曖昧だったり設定が紹介されていなかったりします。
できれば、止めておきたいところです。
CGIがsendmailをたたくので、しょうがなく使う場合もありますが、そのときはネットワークの向こうにあるサーバをたたくようなアプリに修正した方が良いでしょう。
kentwebさんのCGIなどは、設定の簡単さをもとめ、sendmailコマンドをつかっています。
乗っ取られると、スパムの踏み台にされたりもしますので。

◆データベース
localhostならパスワードなしで接続可、なんて設定ができますので、注意。
特に、自分ではパスワードなしはNGに設定したと思ったのに・・・的な失敗はたまにあります。
テストするときは、つながるだけでなく、つながらないことってテストもやっておくべきです。

◆telnet
公開サーバでは、止めておくべきサービスです。
できれば、消す。
IPで、パスワードいらずなんて、だめ設定ができます。
sshを使いましょう。
sshでもなにもなしで接続とかが、設定によってはできますので注意。
できれば、公開鍵方式でやった方がよいでしょう。

◆FTP
こちらもやめておきましょう。
ssh経由でポートフォワーディングをするとか、sftpだったかftpsだったかそういうのがありますので、そちらを使いましょう。
こちらもだめ設定ができます。

◆samba
WebDAVとかのほうが、まだましなのかな。
インターネットで共有はやめた方がよいかと。

このへんまで終わったら、ルータのポートをあけてよいかとおもいますが、最低限のポートだけあけましょう。
いらぬポートはアタックの元です。

・・・眠くなってきたので、この辺でやめます。
内容については全く保証しません。
役に立ちそうなところだけ、拾い読みしてください。
posted by w033 at 00:19| 千葉 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年10月21日

Ubuntu 7.10 (Gutsy Gibbon) リリース

※デスクトップ版(GUIありが前提)

Ubuntuがバージョンアップしたので、aptのsourceリストを書き換えようと思ったら、何に書き換えてよいのかわからない。
検索しても見つからない。
英語も読みたくない。
Gutsy Gibbonって名前でもいれれば、どうにかなるだろうかなんて思いつつ、さて、どうしたものか。
そんなことを思っていたら、GUIで簡単にアップデートできるらしい。
そういうところもDebianとはちょっと違うのね。
※Debianもやったことがないだけで、似たようなのがあるのかも。
 Debianは玄箱の記憶がほとんどなもので、GUIの記憶はほぼなし。
さて、アップグレードをするときは、(デフォルトでは)左上にあるメニーから、以下のように選んでいく。

システム→システム管理→アップデートマネージャ

いつもだとパッケージのリストと、実行のボタンだけだけど、上の方に
「7.10にあげられるよん」ってメッセージが出てくるので、そこのボタンを押すだけ。
apacheとか設定していると、設定を上書きしていい? と聞かれるので好きなように答えていく。
基本的には「はい」ばかりを選んでいけばすぐにバージョンアップが終わります。
コンソールでやっているときのように、バージョンアップのプロセスをbgして設定を手でコピーしたらfgして、なんてやらなくていいので楽ちん。
コピーしたかったら、ダイアログには答えず、もう1つコンソールをあげてコピーすればオッケー。

Linuxのバージョンアップはちょっとずつ進化しているけど、いまいち各ソフトのバージョンアップが面倒なんだなぁ。
自動で設定くらい引き継いでくれればいいのに。
いや、引き継ぐためのアプリを誰か開発してくれないかな。

ubuntu-ja
http://www.ubuntulinux.jp/

Ubuntu 7.10へアップグレードするには
http://www.ubuntulinux.jp/getubuntu/upgrading

続きを読む
posted by w033 at 01:14| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年06月03日

ubuntuでPostgreSQL + mono + ASP.NET(4)

ubuntuでPostgreSQL + mono + ASP.NET(4)

(3)(4)でデータがテーブルになって表示されます。
これができれば、コントロールも大体動くでしょう。
テキストボックスは動かしてみましたが、正常に動きました。
すごいね、moon。
(3)で書き忘れたけれど、日本語があるので接続文字列のencodingを忘れずに。

DataSet


<%@ Page Language="C#" Debug="true" %>
<%@ Assembly name="System.Data" %>
<%@ Assembly name="Npgsql" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="Npgsql" %>
<script runat="server">
// Encode UTF-8.
// ********************************************************************
// PostgreSQL Test.
public void test()
{
    int ret;
    String stmt;
    DataTable dt = null;
    DataSet ds = new DataSet("dmy");
    NpgsqlDataAdapter adp =null;
    NpgsqlConnection cn = null;                 //

    try
    {
        // メモ:Open後に「set client_encoding=UNICODE」という情報を見かけるけど、それだとNGだった。
        cn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=hoge;Password=pwd;Database=test;Encoding=UNICODE;");
        stmt ="select * from items;";
        adp = new NpgsqlDataAdapter(stmt, cn);
        adp.Fill(ds, "t_items");
        foreach(DataRow dr in ds.Tables[0].Rows)
        {
            Response.Write("<tr>");
            foreach(DataColumn dc in ds.Tables[0].Columns)
            {
                Response.Write("<td>"  + dr[dc] + "</td>");
            }
            Response.Write("</tr>");
        }
    } 
    catch(Exception ex)
    {
        Response.Write ("" + ex.Message + "<br>");
    }
    finally
    {
/*
        // drの後始末
        if(null != dr)
        {
            if(! dr.IsClosed)
            {
                dr.Close();
            }
        }
*/
        // cnの後始末
        if(null != cn)
        {
            // System.Data.ConnectionState
            if(ConnectionState.Open == cn.State)
            {
                cn.Close();
            }
        }
    }
}
</script>
<html>
<body>
CLR Version=<%= System.Environment.Version.ToString() %>
<hr>
[items]を表示
<table border="1">
    <tr>
        <th>item_id</th>
        <th>item_name</th>
        <th>model_no</th>
        <th>cost </th>
    </tr>
    <% test(); %>
</table>
</body>
</html>
posted by w033 at 14:15| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでPostgreSQL + mono + ASP.NET(3)

DataReader


<%@ Page Language="C#" Debug="true" %>
<%@ Assembly name="System.Data" %>
<%@ Assembly name="Npgsql" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="Npgsql" %>
<script runat="server">
// Encode UTF-8.
// ********************************************************************
// PostgreSQL Test.
public void test()
{
    int ret;
    String stmt;
    NpgsqlConnection cn = null;                 //
    NpgsqlCommand cm = null;                    //
    NpgsqlDataReader dr = null;                 // IDataReader

    try
    {
        // メモ:Open後に「set client_encoding=UNICODE」という情報を見かけるけど、それだとNGだった。
        cn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=hoge;Password=pwd;Database=test;Encoding=UNICODE;");
        cn.Open();

        stmt ="select * from items;";
        cm = new  NpgsqlCommand(stmt, cn);
        dr = cm.ExecuteReader();
        while( dr.Read() )
        {
            Response.Write("<tr>");
            Response.Write("<td>"  + dr["item_id"] + "</td>");
            Response.Write("<td>"  + dr["item_name"] + "</td>");
            Response.Write("<td>"  + dr["model_no"] + "</td>");
            Response.Write("<td>"  + dr["cost"] + "</td>");
            Response.Write("</tr>");
        }
    } 
    catch(Exception ex)
    {
        Response.Write ("" + ex.Message + "<br>");
    }
    finally
    {
        // drの後始末
        if(null != dr)
        {
            if(! dr.IsClosed)
            {
                dr.Close();
            }
        }
        // cnの後始末
        if(null != cn)
        {
            // System.Data.ConnectionState
            if(ConnectionState.Open == cn.State)
            {
                cn.Close();
            }
        }
    }
}
</script>
<html>
<body>
CLR Version=<%= System.Environment.Version.ToString() %>
<hr>
[items]を表示
<table border="1">
    <tr>
        <th>item_id</th>
        <th>item_name</th>
        <th>model_no</th>
        <th>cost </th>
    </tr>
    <% test(); %>
</table>
</body>
</html>
posted by w033 at 14:09| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでPostgreSQL + mono + ASP.NET(2)

早速テストアプリを作成してお試しです。
ASP.Netで気をつけないといけないのは、
<%@ Assembly name="Npgsql" %>
<%@ import Namespace="Npgsql" %>
あとはクラス名くらい?


<%@ Page Language="C#" Debug="true" %>
<%@ Assembly name="System.Data" %>
<%@ Assembly name="Npgsql" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="Npgsql" %>
<script runat="server">
// ********************************************************************
// PostgreSQL Test.
public void test()
{
    NpgsqlConnection cn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=hoge;Password=pwd;Database=test;");
    try
    {
        Response.Write ("connecting.<br>");
        cn.Open();
        Response.Write ("done.<br>");
    } 
    catch(Exception ex)
    {
        Response.Write (ex.Message + "<br>");
    }
    finally
    {
        Response.Write ("closeing.<br>");
        cn.Close();
        Response.Write ("done.<br>");
    }
}
</script>
<html>
<body>
CLR Version=<%= System.Environment.Version.ToString() %>
<hr>
<% test(); %>
</body>
</html>


接続するだけ。
なにもしてないです。
posted by w033 at 13:54| 千葉 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでPostgreSQL + mono + ASP.NET(1)

やっと本題だ!
ちゃんと取捨選択をしないのが悪いのだけれど、ここまで長かったなぁ・・・

monoよりも、PostgreSQLに苦戦するとは予想外だった。
MySQLと似たようなものかと思っていたよ。
やっぱり、他人にやってもらってばかりじゃだめだね。

それはさておき、やっと目的のタイトルだ。

PostgreSQL + monoをやるときは、ADO.Netのドライバとして「npgsql」がお勧め。
なんといってもADO.Netに即した実装をしている。

npgsql
http://pgfoundry.org/projects/npgsql/

現存の種類としては、以下のとおり。

Npgsql1.0-bin-mono1.1.tar.bz2
Npgsql1.0-bin-mono2.0.tar.bz2
Npgsql1.0-bin-ms1.1.tar.bz2
Npgsql1.0-bin-ms2.0.tar.bz2

msってのは、Microsoft版で、monoってのがmono用のようで。
詳しくは、ヘルプでも見てください。
今回は、mono1.2.2なので、.NetFrameworkでは2.0.xxxというCLRというのは、ASP.NET(ADOと紛らわしいな)のインストールのときに確かめた。
なので、npgsqlはmono2.0を拾ってこよう。

作業フォルダを作成(作業はroot)。

su
cd ~
mkdir work
cd work

作業フォルダにファイルをダウンロードして、解答。
GAC(.Netの共通フォルダ)に登録する。

tar xjvf Npgsql1.0-bin-mono2.0.tar.bz2
cd ./Npgsql1.0-bin-mono2.0/Npgsql1.0/Npgsql/bin/mono2.0
gacutil -i Npgsql.dll

メッセージが「Npgsql installed into the gac (/usr/lib/mono/gac)」などと出てきて終了。
これでnpgsqlのインストールは完了。
ちなみに、メッセージを見て知ったのだけれど、monoのGACフォルダって「/usr/lib/mono/gac」なんだね。
また、./Npgsql1.0-bin-mono2.0/Npgsql1.0/Npgsql/bin/mono2.0/docsには、ドキュメントが入っているのでよく読むと使い方がわかるでしょう。
というか、クラス名さえわかれば、MSSQL(MicrosoftのSQLServer2000 / 2005)と同じです(SQLはちょっと違うかな。前にあげたリンクで、PostgreSQLの日本語ドキュメントの下のほうに、SQLについては書いています)。
クラス名だけしらべて、後はMSSQLでやり方を探すほうが賢いかも。


posted by w033 at 13:54| 千葉 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでPostgreSQL(3)

(3)postgresql.conf

デフォルトのまま使用。


(4)pg_hba.conf
このファイルは、どのユーザがどのIPから接続できるか? といった設定が出来る。
バックアップをとったら、rootでpg_hba.confを編集して、ログインできるものを変更する。
※先走って、postgresユーザ(PostgreSQLのデフォルト管理者)でやろうとすると、ls -alでやっても表示されないので注意。

cp /etc/postgresql/8.2/main/pg_hba.conf /etc/postgresql/8.2/main/pg_hba.conf.orig
vim /etc/postgresql/8.2/main/pg_hba.conf

現状、コメントアウトされていない行(先頭に「#」や「;」がない行)をコメントアウト。
そして、以下の3行を追加。
------------------------------------------------------------------------------
local all postgres ident sameuser
local all all md5
host all all 127.0.0.1/32 md5
-------------------------------------------------------------------------------
上の行は、ローカル接続に限り、postgresというunixユーザでログインしていたら、認証OKと認めるということ。
2行目は、psqlコマンドで他のユーザでログインが出来ますってこと。
下の行は.Net(ネットワークのlocalhostでアクセスした場合)からアクセスできるように設定している。
ちなみに、monoとPostgreSQLを別端末にする場合、127.0.0.1/32の部分を修正する。
192.168.197.*を許可するなら192.168.197.0/24だし、192.168.197.100だけを許可するなら192.168.197.100/32とする。
詳しくは、こちら。

20.1. pg_hba.confファイル
http://www.postgresql.jp/document/pg824doc/html/auth-pg-hba-conf.html

終わったら、サービスの再起動。
こちらも、rootユーザでやること。

/etc/init.d/postgresql-8.2 restart


(5)テスト
作成したユーザで一通り操作できるか試してみる。

もう一度、今度は作成したユーザでpsqlを起動。

psql -U [user_name] [db_name]

私の場合は、[user_name]が「hoge」、 [db_name]が「test」になる。

SQLを一通りやってみて、OKならDBの準備が完了。

insert into items values(999,'test','test',0);
update items set cost = 10 where item_id = 999;
delete from items where item_id = 999;
select * from items;

権限がないときは、Permission denied などがでるので、grantを実行(ファイルのアクセス権と一緒だね)。
※私の手順でやっている場合、grant/revokeはpostgresユーザで「psql test」を実行すること(この手順ではそのユーザしか権限がありません)。

■参考サイト

PostgreSQLを使う
http://www.aqunet.info/debian/postgresql.html#

psqlの使い方
http://ash.jp/db/pg_psql.htm

PostgreSQL日本語ドキュメント
http://www.postgresql.jp/document/

データベースへの接続にユーザ認証させる方法(同じサーバーから接続する場合)
http://tomo.ac/goodstream/database/postgresql/linux/tips/userauth2.htm

PostgreSQLの環境設定
http://ash.jp/db/pg_init.htm

20.1. pg_hba.confファイル
http://www.postgresql.jp/document/pg824doc/html/auth-pg-hba-conf.html

続きを読む
posted by w033 at 13:15| 千葉 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでPostgreSQL(2)

「ubuntuで〜」の続き。

■PostgreSQLのインストール

(1)インストール
以下のコマンドを実行。

aptitude install postgresql8.2

文字コードとかは、なにも聞かれずにインストールは終了するはず(UTF-8になる)。
ubuntuでは「postgresql」だけだとアプリが見つからないといわれてしまう。
postgresql8.2、postgresql8.1、postgresql8.0、postgresql7.4 とかあるだろうけれど、今回は最新の8.2を使う。

(2)接続テストDBを作成

前にもリンクをあげたけれど、こちらを参照。

PostgreSQLを使う
http://www.aqunet.info/debian/postgresql.html#

ここにあがっているテストDBを使います。
まずは、postgresqlになる。

sodo su postgres

これでいけるのかな?(やってみていないので適当に確かめてください)
だめだったら、一度rootになって、そこからsu。

su root
su postgres

※UTF-8以外を使いたい場合は、ここでinitdb -E EUC_JP(EUCの日本語の例)を実行。
 .NetFrameworkはデフォルトUTF-8だからデフォルトで使う。

DBを作成

createdb test

これで作成される。
次に、psqlで「test」DBにログイン

psql test

これで「test=#」というPostgreSQLのプロンプトが表示される。
そうしたら、テーブルを作成してデータを流し込む。
Teratermやら、Gnome端末など(どちらも、文字コードはUTF-8ね)なら、コピー&ペーストで流し込んでOK。
コピー&ペーストが使えない場合は、「\i [ファイル名]」でファイルに保存したSQLを実行可能。
---------------------------------------------------------------------
create table items(
item_id int4,
item_name varchar(20),
model_no varchar(20),
cost numeric(10,2),
primary key ( item_id )
);

insert into items values(101,'デスクトップPC','DTPC001',150000);
insert into items values(102,'ノートPC','NTPC001',250000);
insert into items values(103,'液晶ディスプレイ','LCD001',50000);
insert into items values(104,'レーザープリンタ','LZPRT001',300000);
insert into items values(105,'インクジェットプリンタ','IJPRT001',30000);
insert into items values(106,'スイッチングHUB','SWHUB001',10000);
insert into items values(107,'ブロードバンドルータ','BBLT001',20000);
insert into items values(108,'キーボード','KBD001',5000);
insert into items values(109,'マウス','MUS001',2000);
insert into items values(110,'LANケーブル','LCB001',1500);

select * from items;
---------------------------------------------------------------------
最後に表の内容が表示されたら成功。
次に新しいユーザを作成。

create user [user_name] encrypted password '[password]' nocreatedb nocreateuser;

私の場合、[user_name]は「hoge」、[password]は「pwd」とした(もちろん括弧なしね。以降、書きません)。
nocreatedb nocreateuserはオプション。
パスワードを間違えてしまった場合や変更したい場合は、こんな感じ。

alter user [user_name] with password '[password]';

ユーザを消してしまいたい場合は、こんな感じ。

drop user [user_name];

現在いるユーザがわからなくなったら、こんな感じ。

select * from pg_user;

私の手順どおりにやると、テーブルはpostgresユーザのものになってしまうので、新しく作ったユーザにテーブル操作許可を与える。
先にユーザを作って、そのユーザでテーブルを作った場合はgrantは無用です(多分)。

grant all on [テーブル名] to [user_name];

grantは許可、反対に拒否するときは同じ構文でrevokeを使う。
all以外には、select、update、insert、delete など、SQLのはじめの命令が指定できる・・・はず(いつもallしかやらないんで)。

私の場合、[テーブル名]が「items」、[user_name]が「hoge」。
終わったら「\q」として、psqlを終了。

※この時点では、新しいユーザはログインできないので注意。
posted by w033 at 13:13| 千葉 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年05月31日

UbuntuでPostgreSQL

PostgreSQLはRDB(普通のSQLサーバ)です。
特徴としては、BSDライセンスなことと、機能が多いこと、堅牢なこと。
MySQLにはスピードが劣るといわれていること・・・くらいかな。

インストールはこちらを参照。

PostgreSQLを使う
http://www.aqunet.info/debian/postgresql.html

apt-getのままでも使えるけれど、他のところにあわせるならaptitudeと読み替えると良い。
Ubuntuでは、言語や文字コードは聞かれなかった。
普通に使うなら、設定のところもいらない。
テスト用に、サンプルのDBとテーブル&データはそのまま作った方が良いでしょう。
どっちにしたって、用意するはめになるのだから。

このサイトさんは、サンプルまでソースを公開しているところがすてきです。
続きを読む
posted by w033 at 23:10| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ここまでの参考サイト

PostgreSQLについては、まだこれから。

■□■□■ 参考サイト ■□■□■

Debian GNU/Linux 初心者の A2Z
http://www.h7.dion.ne.jp/~maruyosi/pasocom/debian_trial_0.html

itb-TECH
http://itbtech.itboost.co.jp/inst/httpd_conf.php

smart
http://www.rfs.jp/server/apache/index.html

Apache HTTP サーバ バージョン 2.0 ドキュメント
http://www.stanford.edu/manual/ja/
posted by w033 at 21:30| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでmono 1.2.x(必ず、apacheより後にインストール)

Microsoftの.Net FrameworkをNovelが移植したプログラム。
1.0.x は .Net Framework1.0相当、1.1.x は .Net Framework1.1相当、1.2.x は .Net Framework1.2相当だったはず。

(1)インストール

aptitude update
aptitude install mono libapache2-mod-mono mono-apache-server2

(2)設定ファイル変更
apache2フォルダにmod_mono.confができるので、編集。

vim /etc/apache2/mods-enabled/mod_mono.conf

-------------------------------------------------
Include /etc/mono-server/mono-server-hosts.conf
#Include /etc/mono-server2/mono-server2-hosts.conf
-------------------------------------------------

はじめは、mono-server-hosts.confが有効になっているけれど、
インストールしたのはapache2系なので、以下のように変更。

-------------------------------------------------
#Include /etc/mono-server/mono-server-hosts.conf
Include /etc/mono-server2/mono-server2-hosts.conf
-------------------------------------------------

(3)apache再起動
もはやおなじみのコマンドで再起動。

/etc/init.d/apache2 restart

(4)動作テスト
これだけで動くの?
ということで、text.aspxというファイルを作ってDocumentRootにおいてみた。

[text.aspxの内容]
----------------------------------------------------------------------
<%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
' ********************************************************************
' バージョンの表示
</script>
<html>
<body>
CLR Version=<%= System.Environment.Version.ToString() %>
</body>
</html>
----------------------------------------------------------------------

ブラウザから、以下のURLを表示してみる。
http://localhost/test.aspx
左上にCLR Version=2.0.xxxxとかって表示がされるはず。
簡単に設定できてしまった。

Linuxで動く.NET環境「Mono 1.0」の実力
http://www.atmarkit.co.jp/fdotnet/special/mono10_01/mono10_01_01.html

などを読んでいたので、大変かと思っていたのだけれど、簡単に完了。

続きを読む
posted by w033 at 21:27| 千葉 ☁| Comment(2) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでApache2.2.x

Apacheはwebサーバです。
現状、古い1.3.x系と2.0.x系、最新の2.2.x系があって、安定度は古いほうが安定しています。
・・・といわれていますけれど、Zaurusや玄箱みたいな特殊ならともかく、PCならあまり関係ないんじゃないかな?
玄箱は前回、2.2.x系のアップデートを失敗したように思うのだけれど、腕が無いのでいまいち確証なし。
2.2などはスレッドなどを使っていて、効率よく動くようになった、といわれています。

(1)インストール
Debian系はなにも考えずにaptitudeが簡単。

aptitude update
aptitude install apache2

ついでに、cgiで使いたいのでperl、ruby、pythonも入れます。
Rubyは拡張モジュールも作れるように、devを入れます。

aptitude install perl ruby ruby1.8-dev python

(2)設定ファイル変更

設定ファイルのバックアップ
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.orig
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.orig

/etc/apache2/apache2.conf を編集

# jaを先頭に持ってくる
LanguagePriority ja # 以下、略

# コメントアウトされているので、先頭の「#」を削除。
AddHandler cgi-script .cgi

/etc/apache2/sites-available/default を編集

# 私は以下のように変更。
# ・DocumentRoot以外は不要。
# ・DocumentRootでCGIを動作できるように変更。

DocumentRoot /var/www/

Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
allow from all


ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature Off


(3)apache再起動

/etc/init.d/apache2 restart

サーバ名がおかしいだのなんだの怒られるけれど、Errorでとまるわけじゃないので無視。
気になる場合は、参考サイトを見てください。

(4)動作テスト

DocumentRootに適当なHTMLを置いて表示してみる。

posted by w033 at 21:27| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでsamba

Windows共有の仕掛けをLinuxが使えるようにします。
WindowsからLinuxにアクセスする場合、DNSなどで名前を定義しなくてもアクセスできるようになります。
(Windows同士なら、互いの端末名が見えたり、端末名でアクセスできますよね? あれです)
FTPとか、SCPで十分って人には必要ありません。

(1)インストール
aptitude update
aptitude install samba

(2)設定ファイル変更
/etc/samba/smb.conf のバックアップ

cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

あとはエディタで開いて編集

vim /etc/samba/smb.conf

私の場合はこんな感じ?

# Windowsと一緒のワークグループに変更
workgroup = WORKGROUP

# Apache用のフォルダ
[web_root]
comment = Apache Folder
path = /var/www
writable = yes
browseable = yes
create mode = 0775
directory mode = 0777
public = no
guest only = no
read only = no

# 全部見えるけど、書き込みは許さない
[system_root]
comment = Root Folder
path = /
writable = no
browseable = yes
create mode = 0775
directory mode = 0777
public = no
guest only = no
read only = no

以上の変更を行った後、ファイルを上書きしてサービスの再起動。

/etc/init.d/samba restart

ちなみに、restartのところには、他に、start、stop、reloadなんてものがある。
他にもあるかもしれないけれど、使ったこと無いなぁ。

(3)samba用のパスワードを変更
アクセスしたいユーザ(システムに存在するユーザであること)が「hoge」だった場合は、以下のようにする。

smbpasswd hoge

あとは、新しいパスワードを聞かれるので入力すればよい。
rootでやらないと、現在のパスワードを聞かれてしまうので注意。
設定前は不明なのですよ。

(4)Windowsからアクセスしてみる。

マイコンピュータのアドレスに以下のように指定すると、共有の一覧に表示されます。
\\端末名\

※「browseable = no」にしている場合だったか、共有名の最後に「$」をいる場合だったか忘れたけれど、そうすると共有が一覧にはでないので注意。

一覧に表示しないように設定した場合は、以下のように共有名を指定するだけ。
サンプルだと「web_root」というところですね。
\\端末名\共有名

端末名はインストール時に指定しているけれど、わからなくなってしまった場合は以下のコマンドでわかるはず。
ファイルに書かれているんですよ。

cat /etc/hostname
posted by w033 at 21:26| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでエディタ

Windows Serverではなくても平気だけれど、Linuxではこれが無いと設定変更ができない。
どんな環境にも入っているので、普通はviを使うのだけれど、Windowsに慣れている人には非常に使いにくい。
初めての人には終了方法すらわからないと思われ。
さらには、標準のviだと矢印キーが変な動きをしてしまう。
「←」とか押すと、なぜか改行+Dという文字。
Linuxのディストリビュージョンによっては、viというコマンドに、vimのリンクを上書きしてくれるものがある。
vimだとちゃんと矢印キーなどに対応してくれるし、PC用になっているので使いやすい。
けど、Ubuntu7.04ではなっていないので、自分で設定するか、viとうつときに、vimと打つように癖を直さないといけないのが不便。
また、Debian系の人はnanoというコマンドエディタを好むらしい。
確かに、コマンドのヘルプが表示されていて使いやすい。
私は嫌いだけれど、昔から使えるという話のemacsもありますな。
あとは好みで適当に。
秀丸のLinux版があれば、速攻で買うのになぁ。
というか、Linuxが普及しないのは秀丸が無いからじゃないか?

(1)インストール(はじめから入っていたかな? 忘れた)

aptitude update
aptitude install nano

とか

aptitude install emacs
posted by w033 at 21:21| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuでssh

sshはtelnetみたいなもんで、putty(http://yebisuya.dip.jp/Software/PuTTY/)やteraterm(sshが使えるのは、UTF-8 TeraTerm Pro with TTSSH2:http://sourceforge.jp/projects/ttssh2/)のようなソフトから、別端末のシェル(DOSみたいなもの)をいじれるようにするソフト。
scp、sftp、その他ポートフォワードなんて機能があるので非常に便利だけれど、コマンドがわからないとなんにもできないので、そういう人はだまってGUIを使うか、VNCなんてソフトを使うとよいと思われ。
これを入れ終えると、もうキーボードもモニターも無用になる。
自称「よく知っている人」にsshはtelnetの親戚だなんていうと、まったく別物だと小一時間ほど説教される可能性があるので、ご注意。

(1)インストール

aptitude update
aptitude install ssh

(2)設定ファイル変更

/etc/samba/sshd_config のバックアップ

cp /etc/samba/sshd_config /etc/samba/sshd_config.orig

あとはエディタで開いて編集

vim /etc/samba/sshd_config

私の場合は変更はこんな感じです。

# rootのログインを許さない
PermitRootLogin no

# 空のパスワードは許さない
PermitEmptyPasswords no

# パスワード認証だけでログインを許す(キーファイルによる認証ってのがありますが面倒なので)
PasswordAuthentication yes

続きを読む
posted by w033 at 21:18| 千葉 ☁| Comment(0) | TrackBack(1) | Linux | このブログの読者になる | 更新情報をチェックする

ubuntuで管理者設定

ubuntu(というか最近のデスクトップ系のLinuxの流行で)は、デフォルトではrootのパスワードがわからず、一般ユーザでログインして、sudoというコマンドをつかってrootに成りすましていろいろな設定をやることになります。
ですが、sudoは毎回パスワード(現在ログインしているユーザのパスワード)を聞いてきてウザイ。

sudo aptitude update

なんてやるときにも聞いてきやがる。
面倒なので、rootにパスワードを設定して、suできるようにしてしまいましょう。
コンソールから以下のコマンドを実行。

sudo passwd

これで、パスワードが変更できます。
はじめに現在のユーザのパスワード、次に設定したいrootのパスワードを2回うつとOK。

su

というコマンドで、rootになれる。
ちなみに、環境変数までrootになりきりたい場合は、以下のコマンドを実行。

su -

※これ以降、すべての作業はrootでやっています。
続きを読む
posted by w033 at 21:14| 千葉 ☁| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする