見出し画像

Linux(PC-UNIX)紹介、奮闘記

Linux(PC-UNIX)紹介、奮闘記 ☆ '98/10-


今、コンピュータ業界でホットな話題といえば、Linux(PC-UNIX)。あの、天下のマイクロソフトでさえ、脅威とみとめた「Linux」。「ハロウィーン文書」。映画「タイタニック」の中で、豪華客船を波間に沈め去った 壮麗なコンピュ-タ・グラフィックス(CG)の数々は記録に新しい。その(CG)の作成に使われた160台のコンピュ-タのうち、55台はマイクロソフトの「WindowsNT」が、残り105台には「Linux」という無償のOSが搭載されていたという、裏話もあります。私もずっと以前からPC(UNIX)の存在は知っていましたが、ハッカ-の玩具程度にしか考えていませんでした。又、NTの出荷をみると、数年後にはUNIXが無くなるのではないかとまで思っていました。98年の初め頃から、一部の雑誌で取り上げられるのを、横目で見ていました。今みたいな、大ブレ-クが来るとは思っても見ませんでした。こんな次期が来るので有れば、もっと勉強しておけば良かったと反省しています。 出会いは、たった1枚のCDから。出会いから、2台のサーバ構築までの悪戦苦闘を簡単にまとめてみました。悪戦苦闘記を読んでいただいき、皆様方のサーバ構築のお役に立てれば、とても嬉しいです

98/10/21 大阪で行われた、Oracle ISVサミットに参加。お土産でいただいた、Linux版Oracle8 CD。(当日は長女の11回目の誕生日)PC-UNIX、難しそう。 なんで、世界のOracle社が、Linuxにここまで、興味を持つのか、そのときはわかりませんでした。後で、調べてみると インテル社が9月にRedHat社に出資、次期64ビットのCPUでは「Linux」をサポ-トするなどの、今までとは違った環境が出来つつあることを知りました。このとき、もしも「Linux」が「NT」より高性能なら、今までの業務開発スタイルを変更していかなければ、市場から取り残されるのではないかという、 強い危機意識が頭の中をよぎりました。

  • 98/10/30 たまたま目にした雑誌の9月号に、Linuxの特集記事が掲載されているのを発見。体験版Liteの添付と、簡単な導入方法が掲載されていた。なんとなく出来そうな気持ちも出て、古いパソコン(486DX 100MHZ 500MB)に導入でもしてみようかと、安易に考えてしまった。後で考えると、これから大変な勉強が待っているとは、その時は予想もつきませんでした。UNIXの経験は、6年前に半年間ほど、N社のEWS4800を 触ったのが少し。初めて体験するLinux。CDを入れてもインストールされない。BOOT FDを作成しなければならないことがわかり、数日かかる。 とにかく、最初は標準で導入。内臓CDを認識しない、RE2000のLANカードを認識しないなど、多くのトラブルに遭遇。IDE-CD、3COM 3C50Xに交換。色々失敗して、6回目にやっとOSの導入が成功。

  • 98/11/20 Apache1.2.4 による、WWWに挑戦。Win95側のHtml、CGIをftpにてLinuxに転送。ASC2とEUCの改行コ-ド等の問題で、トラブルが続く。httpd.confのCGI動作の修正、その他 の調整後やっと、正常動作を確認。その後、Apache1.3.1の導入を行い、初めてのコンパイルに挑戦するが、途中で失敗。今まで動いていた、Apache1.2.4が動作しなくなり、再度導入。 しかし動かない。再度、モジュール、関連を削除して導入するが、動作せずまた苦悩の日々が続く。httpd.confを再度見直し、修正。やっとのことで1.2.4の 環境が復活し、正常動作時に戻る。12/1 掲示板、アクセスカウンターを作成しました。1台目は、デイスク容量が無いのと、別環境を試してみたくなり、2台目の構築を考える。

98/12/20 やっと、今まで猫に小判だったあのCDを使用して、Oracle8の導入に挑戦が出来る環境が整いました。ユ-ザ-、グル-プを登録して、./install実行、dbaが登録してあるかどうか聞いてくる、登録してあるので、enterを押すが、最初の導入時点でエラー。やはり最初はうまくいかないものだと、かってに思う。とりあえず中断して、別のデータベースのPostgreSQLの導入に挑戦して、足慣らしをすることを決断。こちらは、ほとんどマニュアル通り、問題なく導入が終了。 しかし初期データベースの作成(createdb)がわからずこちらも途中で挫折。数日後に作成方法が解り、データベースの作成、Postmaster、PSQLの実行も確認。Oracleは ユーザ登録、グループ登録に少し問題があることが判明。再度導入するが、だめ。導入ログインをOracleにして再度導入。こんどは、うまく導入が出来て一安心。 次に、初期データベースの作成(root.shの実行)。こちらも問題なく1時間で終了。次に、svrmgrlを起動してOracle8の開始を行い問題がないことを確認。 ここまで来るのに、2ヶ月。忘れられない最高のクリスマスになりました。最新版Oracle8が486DX4 100MHZの4年前のコンピュ-タで問題無く動作する。これだけでも、事件です、すごいことです。ここに到達する過程で、Orcaleメーリングリストの皆さんに、とてもお世話になりました。 12/29 仕事最後の日に、ODBC経由でOracle8、PostgreSQLに接続が出来るようになり、開発効率が向上します。

Oracle .bash_profile の内容

export USERNAME BASH_ENV PATH                                

export PATH=$ORACLE_HOME/bin:$PATH                           

export ORACLE_BASE=/home/oracle                             

export ORACLE_HOME=/home/oracle/8.0.5                       

export ORACLE_SID=ORCL                                     

export ORACLE_TERM=vt100                                   

export LD_LIBRARY_PATH=$ORACLE_HOME/lib                      

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data       

export PATH=/bin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin    

export NLS_LANG=japanese_japan.ja16euc


  • 99/1/5 年が明けて、Oracle8のテスト用に作成した約1万件のCSVデ-タを、PostgreSQLのCOPYコマンドで導入。途中何回か失敗しましたが、最終的に問題無くロ-ド出来ました。 ODBC経由でデ-タを見て、問題が無いことを確認。デ-タSELECTも早く、十分実務でも実用に耐えれると確信しました。Oracle8へテスト用のデ-タベ-スを悪戦苦闘しながら作成。併せて、表の定義を行い、デ-タをインサ-ト。   SELECT * FROM 表 でデ-タが見えた。嬉しい。次は1万件のデ-タをロ-ドする方法を勉強。

    SVRMGR> insert into emp values (1,'藤井','123',100,200,300,600);
    1行処理されました。
    SVRMGR> select * from emp;
    SYAIN_NO SYAIN_NAME SYA SYAIN_TEIJ SYAIN_ZANG SYAIN_SHIN SYAIN_GOKE
    ---------- -------------------- --- ---------- ---------- ---------- ----------
    1 藤井 123 100 200 300 600
    1行選択されました。

1/7 Oracle8へどうしてもデ-タが持っていけない。SQLLDR EXP/IMPでもエラ-が出る。

接続: Oracle8 Release 8.0.5.0.0 - Production                                 

PL/SQL Release 8.0.5.0.0 - Production                                           

                                                                                

IMP-00003: Oracleエラー:942が発生しました。                                     

ORA-00942: 表またはビューが存在しません。                                       

IMP-00021: OSエラーが発生しました-エラー・コード(dec:84,hex:0x54)。           

IMP-00023: インポート・ビューはインストールされていません。DBAに連絡してください

。                                     

IMP-00021: OSエラーが発生しました-エラー・コード(dec:84,hex:0x54)。            

IMP-00000: エラーが発生したためインポートを終了します。                         

                                                                                

IMP-00021: OSエラーが発生しました-エラー・コード(dec:84,hex:0x54)。
  • 併せて、デ-タのロ-ドも出来ました。デ-タベ-スを作成したあとで、カタログ類のインスト-ル、catalog.sql cataproc.sql catdbsyn.sql pupbld.sql を実行しておかなければならないことが解る。 NT版Oracleにはこんな事は無かったので、解らなかった。実行後、再度実行
    SQL*Loader: Release 8.0.5.0.0 - Production on 火 Feb 1 16:15:17 2000

    (c) Copyright 1998 Oracle Corporation. All rights reserved.

    ロードは完了しました。 - 論理レコード件数:11004
    出来ました
    今度はデ-タベ-スとの連携に挑戦です。

  • デ-タがOracle8へ持って行けたので、前々から考えていたNT対Linuxのスピ-ト比較を行いました。(Oracleさん、すみません)環境はNT (WindowsNT4.0 SP3 Pentium2 300MHZ + MM96MB Orcale7.3.4)対 Linux (486DX4 100MHZ + MM24MB +Oracle8.0.5)で約1万件のデ-タのUpdate Rollbackを行いました。
    結果 Update Nt(22sec) Linux(20sec)
    Rollback Nt(28 sec) Linux(22 sec) 噂では、りなちゃんが早いと聞いていましたが、実際に体験してみてLinuxの方が比べものにならない位、早いですね。MSの名誉の為に、これが「NT」対「Linux」の比較のすべてではないことを付け加えておきます。

    余談ですが、この比較については、アスキ-社から取材の申し込みがありましたが、Oracle社より記事で発表してはダメとの事で、幻の比較になりました。DX4-100でOracle8を動かしているいる所はないでしょうね。

    1. Oracle8 Release 8.0.5.0.0 - Production PL/SQL Release 8.0.5.0.0 - Productionに接続されました。 SQL> update emp set syain_gokei=444; 11004行が更新されました。 SQL> rollback 2 ; ロールバックが完了しました。

  • 2/2 こちらのお客さんでも、そろそろ「Linux」に気が付き始めて来ました。WindowsNT(4.0)のSP4を当てると、他に影響が出るなど、これでは安心してユ-ザ-がサ-バ-として使用出来ないと思います。最近のマイクロソフトは、新しい事に注力しすぎて、今までのユ-ザ-を置き去りにしているとしか思えません。 これでは、ユ-ザ-が他へ流れてもしかたありません。話を本題に戻して、いよいよ今回業務でWEBサ-バ-を構築することになりました。NT+IISでも良かったのですが、NTのあまり良い評判を聞きませんので、やはりここはApacheで決まりかな。今までの勉強の成果と、さらなる飛躍を目指して、Linux(RedHat5.2)を採用しようと 考えています。業務は在庫照会と、注文入力を受けるシステムです。又順次、経過(失敗も)は公開していきますので、ご期待を。

    2/9 CGIとPerl5、Cookieによる、ショツピングバスケットシステムのテストに着手。2/10 PostgreSQL用のPerlモジュ-ルを入手して、make install中。2/12(DBD,DBI)のmake,Installが終了(ランスの小野さん、ありがとうございました)。nkfもインスト-ルしてテストをしていますが、どうしても日本語表示部分あたりで、(500)Internal Server Errorが出て、回避出来ません。 午後から環境を変えてテスト。私の契約しているプロバイダ-のBiglobeとか、Turbolinux2.0J(EUC対応のPerl)だと問題なく動作します。RedHat5.2のPerl特有の問題か?。EUC対応のPerlに差し替えてみようかな。

    2/15 Linux版のCGI+Perlがうまく動作しないので、NT(4.0)+IIS(3.0)+ASP(1.0)+ACCESS97による電子ショツピングに挑戦。商品は選択出来るのですが、注文の数の入力項目がこない。なぜだろう。どこかASPの記述が悪いのかな。どうも、ASPのSession.contentsが動作していない様子。ここにたどり着くのに、約5時間。

    2/16 アドバイスをいただき、NT用のIIS(4.0)を導入。NT4.0+SP3+IIS(4.0)+ASP(1.0)の環境で再度テストをすると、今度は完璧に動作しました。原因はこれでした。やはり、DBとの連携はASPの方が簡単か、なかなかマイクロソフトも捨てた物ではないな。セッション管理が簡単だし。

    2/19 Perl+PostgreSQL(DBI+DBD)のテストを昨日から行っていますが、どうもうまく動作しません。(500)Internal Server Errorが取れません。
    #!/usr/bin/perl use 5.004; use CGI qw(:standard); use Postgres; print header, start_html("Postgres connection test"); $conn = db_connect("drink") or die "coud not connect -- $Postgres::error"; print p("Connected Database: ", $conn->db()); print p("Connected Host: ", $conn->host()); print p("Connected Options: ", $conn->options()); print p("Connected Port: ", $conn->port()); print p("Connected tty: ", $conn->tty()); print p("Connected Error Message: ", $conn->errorMessage()); print end_html;

2/23 Perl+PostgreSQL(DBI+DBD)のテストが前進しません。サ-バ-側で単独でテストすると下記のエラ-、前進したいなあ。もう、1週間ちかく停滞しています。

Can't locate Postgres.pm in @INC (@INC contains:

/usr/lib/perl5/i386-linux/5.00404 /usr/lib/perl5 /usr/lib/perl5/site_perl/i386-linux 

/usr/lib/perl5/site_perl . at chap7-6.pl line 5.                                                    

 

BEGIN failed--compilation aborted at chap7-6.pl line 5.

どうも、Postgres.pmが無いといって怒られているみたい。PostgresPerl1.3が導入されていないようだな、DBI+DBDを導入したら、postgres.pmは使用出来ると勝手に思っていました。しかしこれは、間違いだとわかりました。1週間悩みました。

  • 2/24、Linux版のCGI+Perlでの電子ショツピングがやっと動きました。やはり、漢字の部分でエラ-になっていました。少し前進しました。あとは、DBへ情報が書ければ、完成なのですが。

    2/25 やっとPostgresqlPerlのありかがわかり、ダウンロ-ド。makeに何回か失敗しましたが、どうにか、make installが終了。テストで作成していたCGIから、デ-タベ-スへの接続テストに成功。次は、検索処理に挑戦します。しかし、検索へ入ったとたんに、ダンマリでストップ。

    2/26 PostgrePerlとDBI+DBDと両方のテストでは、前に進めないとアドバイスをいただき、DBI+DBDへ当面はフォ-カスする予定。DBI+DBDでは下記のエラ-になるため、もう一度、先日のDBI+DBDをインスト-ル後、再度テスト、結果はまたしても、エラ-

    1. install_driver(pg) failed: Can't locate File/Spec.pm in @INC (@INCcontains: /usr/lib/perl5/i386-linux/5.00404 /usr/lib/perl5
      /usr/lib/perl5/site_perl/i386-linu x /usr/lib/perl5/site_perl .) at /usr/lib/perl5/site_perl/DBI.pm line 506. Perhaps the DBD::pg perl module hasn't been installed, or perhaps the capitalisation of 'pg' isn't right. Available drivers: ADO, ExampleP, Pg, Proxy.

3/1 何が、悪いのだろう。あきらめて、Oracle用のDBDを入れて、テストしてみようかな。90日評価版の期限も切れそうだし。再度、DBI+DBDをpostgresユ-ザ-で入れ直して、トライ
[postgres@pokemon tmp]$ perl test301.pl
DBD::Pg::st execute failed: ERROR: drink: Table does not exist.
Cannot execute: ERROR: drink: Table does not exist.
テ-ブル名が無い????。いゃあ、単純なミスをしていました。デ-タベ-ス名とテ-ブル名を勘違いして、"Select * from テ-ブル名 "なのに、デ-タベ-ス名を書いていました。なんと、恥ずかしい。これで、1週間も悩んでいました。Perlのデバッグは初めてで、頭の中がパニックになっていました。 DBD+DBIもPostgresPerlも問題無く導入出来ていました。うれしい。再度CGIのテスト。表示は完璧でした。最後の、DBへの書き込み部分をコ-デングします。もう少しで、この項も終了です。(ランスの小野さん、アドバイスありがとうございました)

  • 3/2 オンラインショツピングの最終局面に入っています。同じ人からの注文の場合、何回も同じ名前、住所とかを打つのは大変ですから、この情報をCookieへ書き出し、保存しておき、注文時に表示をさせます。もう一息です。
    3/3 NT版、オンラインショツピングはCookieからのデ-タの引き渡しもうまくできて、終了しました。原理はいっしよなので、LinuxでもCookieは問題無し。(CookieとJavascriptを猛勉強しました)残るは、Linuxでの、DBD+DBIを使用したデ-タへの最終書き込みだけになりました。

    3/5 Linux版オンラインショツピングはDBI+DBDが、Linuxコンソ-ルからは、動作するのですが、WEB上からはどうしても動作しないので、PostgrePerlに変更。PostgreSQLへデ-タを問題なく書き込むことを確認。後は、文字列操作、EUC等の微調整のみになりました。引き続き、DBI+DBDの件は調査しますが、とりあえず、この項は無事終了しました。

    3/8 やっとDBI+DBDがWeb上から動作するようになりました。

3/8 来月、東京で行われる、Linux+Oracle研修会に参加することに決まりました。研修には、Oracle8,Linuxサ-バ-の製品版がセットになっていますので、即商売が出来るはずです。4月以降時間が取れれば、これを使用してDBDもしくはPHP3(OCI)で、社内システムにでもに挑戦したいと考えています。現在でもOracle8を単体で使用するのは問題ありませんが、WEBからだと、DBI+DBD、PHP(OCI)、Java(servlet)のいずれかが必要になります。
3/11 Perlによる文字列操作が出来るようになり、商品コ-ドと数の取り出しが出来るようになりました。しかしどうしても、最後の漢字の変換が出来ない。JISをEUCに変換するだけなのに、どうしてだろう。本屋で見つけた、ル-チンを書いているのですが。

$name=DATA[0]; 

while ($name =<>) { 

      &jcode'convert(*name, 'euc'); } 

たったこれだけのル-チンなのに。$nameの値がブランクになってしまいます。


3/15 思い切ってwhile文をコメントにして実行。なんとEUCでデ-タベ-ス(postgreSQL)に書けるではありませんか。大成功です、1週間近く悩みました。Access95からしかアタッチ出来なかったDBへ、ACCESS97のODBCも再度テストをしました。キ-の部分を少なくすると、うまくリンクも出来て、大成功でした。 併せて、今までCookieはクライアントからJavascriptで設定していましたが、Apache1.2.6側でもトレ-スが出来るとのことで、mod_usertrack.cモジユ-ルを組み込む予定です。これが出来れば、PHP/2.0からでも簡単にデ-タ保持が出来そうですので、私がやりたい事も実現出来そうです。


3/22 いつもお世話になっている、小野哲さんと、岡山でミニオフ大会を行いました。





この記事が気に入ったらサポートをしてみませんか?