UNIX 関連の情報交換ボード
■ メインページ ■ サブボード修正
> デバイスの構成が違ったら、コピーするだけではできないように思いますが。 > ルートファイルシステムをですよね? 追加でインストールしたファイルだけなのでは? /usr, /bin, /sbin, /etc, /var, /home あたりを tarで固めてもってけば何とかなると思いますが… >> こんなんでは /usr を増設したディスクに移したい時などにも困りそうです。 > それは、cp -r で大丈夫では? cp -r だとパーミッション保存されないからまずいのでは? tar cpf - | (cd aya; tar xpf -) でやってます.わたしは(^^;
> ところで、こうやって出来上がったテスト環境を実機に移したい時ってどうしていますか? > tar とかを使ってファイルをコピーするだけでいいのかな? > まっさらなインストール直後の環境を作って、その上に上書きすれば > 復元できそうですが、普通はどうするものなんでしょうか? デバイスの構成が違ったら、コピーするだけではできないように思いますが。 ルートファイルシステムをですよね? > こんなんでは /usr を増設したディスクに移したい時などにも困りそうです。 それは、cp -r で大丈夫では? tos.
冬休みに入ったこともあって、ここで書かれていた vmware に挑戦してみました。 vmware は Win2000 用で、vmware 上でテストする OS は FreeBSD4.2-Rel. です。 openSSH が標準で入ったりしてここのところ動きが激しかったので、 その辺の変化と、MySQL PostgreSQL PHP3国際化版 PHP4 とフルセット いれてテストしたいといったところです。 それはそうと、ひとつのマシンだけでここまでのテスト環境が出来上がるというのは、 かなりありがたいですね。ほれ込んじゃいました。 弟の場合は Win2000 では対応を打ち切られた EPSON のパラレルスキャナのために Win98 とのデュアルブートにしていたため、vmware に Win98 を入れて スキャナが使えるかも、と言ってがんばっております。 ところで、こうやって出来上がったテスト環境を実機に移したい時ってどうしていますか? tar とかを使ってファイルをコピーするだけでいいのかな? まっさらなインストール直後の環境を作って、その上に上書きすれば 復元できそうですが、普通はどうするものなんでしょうか? こんなんでは /usr を増設したディスクに移したい時などにも困りそうです。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> 一応 htdocs を chown して別のユーザーから変更できるようにし、 > ftp ソフトにディレクトリを覚えさせて htdocs に ftp で > 読み書きできるようになりましたが、何かこう釈然としません。 > ユーザーが chroot されていたらできないことですし、 > もっときちんとした解決法があっていい気がします。 chrootする場合は, /home/username/htdocs などを作成しておき, /usr/local/apache/htdocs/ 以下にシンボリックリンクを 張るか,あるいはVirtualHostのドキュメントルートとして /home/username/htdocs を指定していますね. 最近は,1つのマシンに複数のドメインを割り当てることが 多いので,基本的に /home/username/htdocs を作成して, VirtualHost 指定するってのがわたしのやり方になってます(^^;
> サイトのルートに ftp できなくて困っています。 > 場所が /usr/local/share/apache/htdocs なのは > わかったのですが、どうやってここに ftp でアクセスするか ftp の cdコマンドでカレントディレクトリを変更する、と言う方法では ダメなのでしょうか? ^^; T-Netの場合、ホームディレクトリにソフトリンクしてあるので、すぐに 辿ることもできます。 tos.
一応 htdocs を chown して別のユーザーから変更できるようにし、 ftp ソフトにディレクトリを覚えさせて htdocs に ftp で 読み書きできるようになりましたが、何かこう釈然としません。 ユーザーが chroot されていたらできないことですし、 もっときちんとした解決法があっていい気がします。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
apache を入れて動いたのはいいんですが、 サイトのルートに ftp できなくて困っています。 場所が /usr/local/share/apache/htdocs なのは わかったのですが、どうやってここに ftp でアクセスするか どこを見ても書いていないところが多かったり、書いてあっても ほんとにこうするのがふつうなのかな?と疑問に思うような 内容だったりして、よくわかりません。 ふつうはどのようにするものなんでしょうか? GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> 要するに、アクセスが重なったときに整合性が取れるように > 片方の処理をきちんとひとまとめの処理として終わらせる > と言うような機構のことでしょうか。 たとえば,銀行である人Aが別の人Bにお金を振り込むとき, 1.Aの口座の残高をとりだし,x円引き,結果を書き込む 2.Bの口座の残高をとりだし,x円足し,結果を書き込む という2つの処理をするわけです. もし,ここで1が終わった段階でマシンがフリーズすると, x円が消失してしまいます. また,別の問題として,Aさんが振込処理すると同時に, 別のCさんがAさんの口座に振り込もうとしたとき, 1の処理で残高を取りだしたあとにCさんの振込処理で 残高が増えた場合,その後1の処理で結果を書き込むと, 振込処理で残高が増えた分が消えてしまいます. % 実際このくらいの簡単な操作なら,トランザクション以前に % 1つの塊として処理されますが(^^;; そういった問題を防ぐために,1と2を1つの塊として 処理するのがトランザクションですね. PostgreSQLは良く知りませんが,Oracleなどであれば, トランザクション完了の通知を受け取った段階で, たとえマシンがフリーズしようが電源切ろうが ちゃんと実行した内容は保存されてますし, 途中でダメになったらトランザクション全体が キャンセルされます. >> ただ,速さなら一番でしょう(^^; >> めちゃくちゃ速いはずです. > そうなんですか。いいことを聞きました(^^) > ただ、複数テーブルの処理になると整合性が取れなくなる可能性が > あるわけですね。 複数テーブルの場合,A,B,Cのテーブルがあるなら, その2つのテーブルを排他ロックしてから書き替えれば, (DBが途中で止まらない限り)整合性はとれます. ただ,テーブルのロック順を統一しないとデッドロックに なってしまうのでまずいです.
> MySQLは早いですが,トランザクションがありません. > テーブルロックがあるだけなので,複数テーブルでの > 更新とかをうまく行うのが難しくなりますね. 良く聞くけどトランザクションが分からなかったので調べてみると こんな説明がありました。 http://www.nttpub.co.jp/paso/0400.html 要するに、アクセスが重なったときに整合性が取れるように 片方の処理をきちんとひとまとめの処理として終わらせる と言うような機構のことでしょうか。 > ただ,速さなら一番でしょう(^^; > めちゃくちゃ速いはずです. そうなんですか。いいことを聞きました(^^) ただ、複数テーブルの処理になると整合性が取れなくなる可能性が あるわけですね。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
>> 書き込みの時にsyncしないオプションです. >> これつけると劇的に早くなりますよ. >> そのかわり,データの安全性は低くなりますが… > ほうほう、遅延書き込みなどをするようになるんでしょうか。 > 掲示板みたいな書き込んだ直後にデータを参照するタイプでも大丈夫かな? > 参照したときには書き込むのかもしれませんが。 遅延書き込みみたいなものです. というか,普通にファイルを書き込むのと同じ状態になります. -F を付けないと,トランザクションをcommitするときに,毎回 ディスク上にデータが実際に書き終わるまで待つようになります. > けど実際の運用では必須のオプションになりそうな気がしますね。 > 小さいデータベースに少ない要求なのに結構重い気がしますから。 わたしもいつも付けています.付けないと遅すぎ(^^;; > 小さな用途だったら MySQL の方が向いていますかね? > なんか速いとか聞きましたが。 MySQLは早いですが,トランザクションがありません. テーブルロックがあるだけなので,複数テーブルでの 更新とかをうまく行うのが難しくなりますね. ただ,速さなら一番でしょう(^^; めちゃくちゃ速いはずです.
>> -F オプションってなんでしょうか? postmaster のリファレンスを見ても >> 書いてないです。-o が postmaster に直接渡すオプションってのは分かったんですが。 > 書き込みの時にsyncしないオプションです. > これつけると劇的に早くなりますよ. > そのかわり,データの安全性は低くなりますが… ほうほう、遅延書き込みなどをするようになるんでしょうか。 掲示板みたいな書き込んだ直後にデータを参照するタイプでも大丈夫かな? 参照したときには書き込むのかもしれませんが。 けど実際の運用では必須のオプションになりそうな気がしますね。 小さいデータベースに少ない要求なのに結構重い気がしますから。 小さな用途だったら MySQL の方が向いていますかね? なんか速いとか聞きましたが。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> -F オプションってなんでしょうか? postmaster のリファレンスを見ても > 書いてないです。-o が postmaster に直接渡すオプションってのは分かったんですが。 書き込みの時にsyncしないオプションです. これつけると劇的に早くなりますよ. そのかわり,データの安全性は低くなりますが…
> これ以上の編集は試していませんがデータベースのインターフェイスが > ACCESS になればかなり心強いものがあります。今までのデータベースを > そのまま使えるのもおいしいです。 ACCESS で作ったテーブルを PostgreSQL のデータベースに ODBC で 投げてみたんですけど、yes/no 型のフィールドはだめみたいですね。 データ型はそれぞれの間で統一されていないのでこちらで対応しないと いけませんね。なにかいい資料とか無いでしょうか? ODBC ドライバがどう扱っているかが問題かな? GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> su -l postgres -c "pg_ctl ayaya" でやればうまくいきませんか?(^^; > どちらにしろ,停止時はちゃんとpg_ctlで止めた方が良いと思いますが… > (特に -o "-F" 使ってる場合は…) su -l って・・・おお!これでフルログインした形になるんですね(^^; 自動実行の時には postgres の環境変数がないから困っていたんですけど 助かりました(^^; -F オプションってなんでしょうか? postmaster のリファレンスを見ても 書いてないです。-o が postmaster に直接渡すオプションってのは分かったんですが。 確かにデータベースの安全性を考えると実際に運用するときは 確実に終了させないといけませんね。と言うか実際の運用では 電源を切らないとは思いますが(^^; GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> pg_ctl -w stop で終了させた場合はきちんと無くなっているようなんですが、 > pg_ctl は postgres でログインしないと実行できないし、 > 電源を切りたいときにいちいちそんなことは面倒です。 su -l postgres -c "pg_ctl ayaya" でやればうまくいきませんか?(^^; どちらにしろ,停止時はちゃんとpg_ctlで止めた方が良いと思いますが… (特に -o "-F" 使ってる場合は…)
うちの場合、FreeBSD の入ったマシンを切ることがあるんですが、 マシン起動時に自動的に postmaster (PostgreSQL deamon) を 起動させようとして問題がでました。 環境はここのインストールの手引きの通りにした状態です。 特に環境変数は重要ですので、設定しておいてください。 http://www.sra.co.jp/people/t-ishii/PostgreSQL/7.0/ コントロールスクリプトの pg_ctl をのぞいてみると、 /tmp/.s.PGSQL.5432 と言うソケットと /usr/local/pgsql/data/postmaster.pid と言うプロセス ID を 保存しているファイルを参照しているようです。 pg_ctl -w stop で終了させた場合はきちんと無くなっているようなんですが、 pg_ctl は postgres でログインしないと実行できないし、 電源を切りたいときにいちいちそんなことは面倒です。 そこで、マシン起動時に上の二つのファイルがあったら消すようにしてみました。 結果的にはそれでうまくいったので /usr/local/etc/rc.d に置く 自動実行シェルスクリプトを載せます。 #!/bin/sh if [ -x /tmp/.s.PGSQL.5432 ];then rm /tmp/.s.PGSQL.5432 fi if [ -x /usr/local/pgsql/data/postmaster.pid ];then rm /usr/local/pgsql/data/postmaster.pid fi su postgres -c "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start" su postgres -c "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data status" そういえば一番下のステータスを表示させる部分はモニターのつながっていない うちのマシンには必要ないですね(^^; 起動時に -S -i オプションがないのは /usr/local/pgsql/data/postmaster.opts.default に書いてあるためです。 今まではいきなり電源切っても問題は出ていませんでしたが、 PostgreSQL 7.0 はファイルの存在で起動状態を調べるという仕様らしいので、 問題が出てきたんですね。とりあえず参考までに。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
続きです。 情報はすべてここで手に入りました。 http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html faq もうちの環境を整備するには十分なものでした。UNIX 系の 情報サイトとしてはぴかいちのわかりやすさじゃないかと思います。 PostgreSQL ODBC Driver 日本語版を Win98 にインストールするわけですが 最初はオリジナルの英語版ドライバを入れます。実行ファイルで 普通にインストーラが起動しますので付和雷同しながらインストールします。 コントロールパネルの ODBC データソースのところに PostgreSQL ドライバが 現れました。ユーザデータソース、システムデータソースなどいろいろあるのですが どうもファイルデータソースと言うのが今接続したい PostgreSQL にあたりそうです。 そこでデータソースの追加をしてみました。ドライバはもちろん PostgreSQL です。 するとドライバの設定ダイアログがでてきました。データベース名は 先にサンプルのゲストブックスクリプトで使った postgres を入れました。 createdb で作られるデータベースのデフォルトがこれなんですね(^^; Server は PostgreSQL の入っているサーバの IP なりサーバ名なりを入れます。 Port はそのままでユーザー名は nobody にしました。 PHP などからの接続は nobody として処理されるらしく、 ユーザーとして既にデータベースをいじれるように登録してあったものです。 Password は無しです。オプションの中に ReadOnly のチェックが入っているので 編集したいんですから当然それをはずします。 これで OK を押すと、今まで失敗していた ODBC データソースの登録ができました。 さて ACCESS で試してみよう、と言うわけで適当に空のデータベースを用意して、 ファイル>外部データの取り込み>テーブルのリンクをしてみました。 ファイルの種類の中に ODBC detabase があるのでそれを選ぶと、 登録したデータソースがありますので(ここでも登録できます)それを選びます。 すると、test2 と言う postgres の中のアクセスを許可されているテーブルが 表示されました。ほんとに通信してる〜(T-T)感動 テーブルをリンクさせようとすると、レコードを一意にするためのフィールドを 求められます。文字は化けてるしそれにあたるものはないので困り、 全部選んでみましたが、怒られました(^^;テーブルとしてはあるので 表示してみようとすると接続に失敗しています。 もう一度ドライバのサイトを見てみると、PostgreSQL 7.0 には 2000/06/17版で対応したようです。日本語版は日本ご対応だけでなく そういう部分でも対応が進んでいるようなので、とりあえず入れます。 DLL を \windows\system フォルダにコピーするだけです。 これでもういちどリンクし直すときちんと表示されました! データベースの内容が日本語もきっちりと表示されています。 さてちょっと変更を加えてみようかなと思ったら、変更できませんとか言います。 faq を見ると ReadOnly は切ってあるので主キーがないのが怪しいです。 主キーがないと ACCESS では編集することができないらしいです。 データベース自体に主キーを持たせるのが一番いいんですが、 ドライバ側でも対応できるようです。主キーとして使える値を 付加して渡してくれるのです。ドライバ側の設定でそのチェックを入れて リンクし直すと oid と言う項目が増えています。それを一意に認識する 項目として指定すると、データベースを編集できるようになりました! さて、ゲストブックの PHP を見てみると、変更は反映されていません。 テーブルを閉じてみました。すると反映されました。 テーブルを閉じるか、レコード>更新で反映されるようです。 これ以上の編集は試していませんがデータベースのインターフェイスが ACCESS になればかなり心強いものがあります。今までのデータベースを そのまま使えるのもおいしいです。 ODBC を知らない段階からここまでうまくいくとは思いませんでした。 ODBC 万歳と言うところでしょうか(^^; ここまで持ってきてしまえば、かなり一般的な用途にも使えると思います。 個人で使うにしてもサーバにデータがあると言うだけでも 十分価値のあるものになるでしょう。しかもそのデータを PHP や Perl などの CGI からも参照できるわけですから、 データセンターとしてこれ以上ない気がします。 もちろん掲示板のような web 上のデータをまとめるのにも最適でしょう。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
と言うか、ODBC ってなに?って感じだったんですが(笑) Win98 のコントロールパネルに ODBC データソース、 と言うのがあります。開いてみるとわけ分かりません(笑) ヘルプはヘルプになってません(笑) とりあえず、ACCESS で接続できるらしい事は分かりました。 で、ODBC で接続するらしいんですが、うちの環境でできるのか? とか思いながらも、とりあえず PostgreSQL を --with-odbc で もう一度コンパイルし直しました。(これは必要だったのかどうか 今となっては分かりません) そして、コントロールパネルで適当にごちゃごちゃいじっても 全然うまくいきません。ODBC と言えば ODBC for oracle しかない... 仕方がないのでヒントを求めてインターネットで検索しながら 眺めていると、こんなところを見つけました。 http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html てっきり PostgreSQL ODBC Driver と言うから PostgreSQL の方に インストールするものかと思ったら Win 側のドライバのようです。 そうか、PostgreSQL 用の ODBC ドライバを入れるもんだったのか、と やっと気付きました(^^; ODBC は単一のドライバだとばかり 思いこんでいました。 次のレスにドライバを入れて ACCESS で PostgreSQL のデータベースを 編集するに至るまでを書きます。 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> コンパイル時に --enable-multibyte 付けないとダメですよ. > これを付けても,template DB は ASCII になりますが, > 問題ないです.(たぶん) とりあえずこれでインストールは成功しました。 psql とか createdb dropdb とか多少使い方をつかみながら、 こんな事やっている場合じゃない、とばかりに PHP の方に 手を移していきました(^^; GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> コンパイル時に --enable-multibyte 付けないとダメですよ. > これを付けても,template DB は ASCII になりますが, > 問題ないです.(たぶん) 消さなきゃ良かった(T-T)まあいいやもう一度コンパイルだ。 >> とりあえず日経ソフトウェアの先月号に SQL の特集があったようなので >> 取り寄せてみようかな。 > pgsql-ml を読んでみては? 早速購読しました。web だと最新版の情報ってあまりないですし(^^; GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場