mod_proxyをインストールする。Apacheは、既にインストールされているという前提。
Apacheは、./configure --enable-shared=so としてコンパイルしてあるものとする。
$ cd /usr/local/src/apache_1.3.17/src/modules/proxy/
$ /usr/local/apache/bin/apxs -c *.c
$ su
# /usr/local/apache/bin/apxs -i mod_proxy.so
/usr/local/apache/libexecに配置される。
/usr/local/apache/conf/httpd.conf あるいは、/etc/apache/httpd.confに以下の2行を追加する。
LoadModule proxy_module libexec/mod_proxy.so
AddModule mod_proxy.c
# /usr/local/apache/bin/apachectl configtest
# /etc/init.d/apache restart
簡単にインストールできて、すぐに使えるところが魅力。しかもフリー。
作業時間は、約30分。
から、
Darwin Streaming Server 5.5
For Red Hat Linux 9.
用をダウンロードする。 MiracleLinuxでも大丈夫。
解凍後、Installを実行する。
# ./Install
http://www.mydomain.com:1220/
などの情報を見たり、変更できる。
ファイアウォール、ルーター等で、rtsp用のポート554番を空けることを忘れずに。
企業によっては、554番へのアクセスを許可していない場合もあるので、対策としてはhttp用の80番を使って公開する。ただしhttp用のポート80番を使う場合は、Apacheを同時に使うことはできなくなる。よって、別マシンを用意する必要があるのだ。
もし、IPアドレス、サーバに余裕があれば80番で公開するのがベスト。
もし、1台のマシンで運用する場合は、 Helix Universal Server の導入を検討する。このストリーミングソフトウェアは、
のように柔軟な設定が可能になる。ま、その分値段が高いんだけどね。RealやWinMediaを使う必要が無ければ、インストール開始30分後に稼働を開始できるQuickTime Streaming Server(Darwin Streaming Server)がベスト。
MySQLをインストールしようとしたら、glibc-2.2を要求している。さて、自分のマシンは?
/lib/libc.so.6を実行する。
1行目に、version 2.3.4 と記述されている。
$ /lib/libc.so.6
GNU C Library stable release version 2.3.4, by Roland McGrath et al.
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.4.3 20050227 (Asianux 2.0 3.4.3-22.1.1).
Compiled on a Linux 2.4.20 system on 2005-08-03.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
The C stubs add-on version 2.1.2.
BIND-8.2.3-T5B
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Glibc-2.0 compatibility add-on by Cristian Gafton
GNU Libidn by Simon Josefsson
libthread_db work sponsored by Alpha Processor Inc
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
もしハードディスクが PIOモードで動いていたらDMAモードに変更するだけで、14倍の速度アップ!
まずは、HDDの読み出し速度を測る。
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1856 MB in 2.00 seconds = 929.07 MB/sec
Timing buffered disk reads: 10 MB in 3.48 seconds = 2.87 MB/sec
-Tスイッチは、キャッシュシステム、つまりメモリ、CPU、バッファキャッシュをテストするという意味。
-tスイッチは、キャッシュ上に無いデータを読み出して、ハードディスクのパフォーマンスをテストする。
読み出し速度が2.87MB/秒。Ultra ATA100の理想値 100MB/秒 のたった3%かい!!
/dev/hdaの設定を調べる。
# hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 0 (default 16-bit) ←I/Oが16ビット
unmaskirq = 0 (off) ←他の割り込みタスクに対応していない
using_dma = 0 (off) ←DMAがオフになっている!(PIOモードということ)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 65535/16/63, sectors = 40020664320, start = 0
/dev/hdaのHDD情報を取得する。
# hdparm -i /dev/hda
/dev/hda:
Model=ST340016A, FwRev=3.05, SerialNo=3HS1JMCX ←ハードディスクのモデル名
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 ←udma5はUltra ATA100を指す
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version:
* signifies the current active mode ←udma5が現在の設定という意味
シーゲートの ST340016A をホームページで検索してみると、Ultra ATA/100 インターフェースだということが分かり、udma5(Ultra ATA/100モード)で動いているので、チューニングする必要はない。
同じシーゲートの ST340016A を別のLinuxマシンで調べてみると、udma2(Ultra ATA/33)で動いていた。このマシンはマザーボードが古いので、これ以上の転送速度は出せないということなのだ。残念。
-u1 (unmaskirq)要求したデータがディスクから返ってくる待ち時間に、ネットワークトラフィックなど他の割り込みタスクに応答できるようになる。
-c3 (I/O support)モード3、つまり同期32ビットモードをサポート。
-d1 (using_dma)DMAモードをオンにする。-d1 でオンになる。-d0 でオフになりPIOモードに戻る。
# hdparm -u1 -c3 -d1 /dev/hda
/dev/hda:
setting 32-bit IO_support flag to 3
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
IO_support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 1 (on)
HDDの読み出し速度を測る。
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1860 MB in 2.00 seconds = 931.07 MB/sec
Timing buffered disk reads: 122 MB in 3.02 seconds = 40.40 MB/sec
読み出し速度が40.40MB/秒になり、14倍の速度アップ。
ちなみに -c 1 オプションを付けて実行して、16ビットを32ビットモードへ変更しても速度アップしない。
再起動すると、設定がPIOモードへ戻るので、rc.localに記述しておく。
# vi /etc/rc.d/rc.local
次の一行をお尻に追加する。
/sbin/hdparm -u1 -c3 -d1 /dev/hda
MySQLのパフォーマンスを向上するために
hdparm
Linuxマシンにハードディスクを追加したときのメモ。
ディスク容量を確認
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 36G 4.5G 29G 14% /
/dev/hda1 99M 8.5M 85M 10% /boot
ディスクパーティションを確認
# fdisk -l /dev/hda
ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 4865
ユニット = シリンダ数 of 16065 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4735 37929465 83 Linux
/dev/hda3 4736 4865 1044225 82 Linux スワップ
IDEハードディスク
1台目 /dev/hda (プライマリのマスタ)
2台目 /dev/hdb (プライマリのスレーブ)
3台目 /dev/hdc (セカンダリのマスタ)
SCSIハードディスク
1台目 /dev/sda
2台目 /dev/sdb
3台目 /dev/sdc
今回追加するのはIDEの2番目のディスクなので/dev/hdbとなる。
ハードディスクを物理的に取り付けてケーブル、電源を配線する。
Linux起動後、fdiskを行う。
# fdisk /dev/hdb
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-9964, 初期値 1): (Enterキーを入力)
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-9964, 初期値 9964): (Enterキーを入力)
初期値 9964 を使います
「終了シリンダ」で「+1024M」と入力すれば1GBの領域を指定したことになる。
新規に作成されたパーティションは、デフォルトで「83 Linux」に設定されている。変更したいばあいは、「l」でタイプをリストアップして確認し「t」でタイプ変更する。
一連の作業が完了したら「w」で設定内容をハードディスクに書き込む。設定を無効にしたいときは「q」を入力する。
行ったパーティションの設定を確認する。
# fdisk -l /dev/hdb
ディスク /dev/hdb: ヘッド 255, セクタ 63, シリンダ 9964
ユニット = シリンダ数 of 16065 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hdb1 1 9964 80035798+ 83 Linux
新規に作成したパーティション上にファイルシステムを作成する必要がある。新規に作成したパーティションの数だけmke2fsコマンドを実行する必要がある。
# mke2fs /dev/hdb1
# (mke2fs /dev/hdb2)
# (mke2fs /dev/hdb3)
ハードディスクをマウントする。
最初にマウント先を用意する。(マウントポイントの作成)
マウントポイントといっても普通のディレクトリを作るだけ。
# mkdir /home1
試しにマウントする。
# mount /dev/hdb1 /home1
確認する。
# mount
/dev/hda2 on / type ext2 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hdb1 on /home1 type ext2 (rw)
ディスク容量の確認
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 36G 4.5G 29G 14% /
/dev/hda1 99M 8.5M 85M 10% /boot
/dev/hdb1 75G 20k 71G 1% /home1
アンマウントして外すとき
# umount /home1
システム起動時に自動的にマウントするように/etc/fstabファイルを編集する。最後に1行追加した。
# vi /etc/fstab
LABEL=/ / ext2 defaults 1 1
LABEL=/boot /boot ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/hdb1 /home1 ext2 defaults 1 2
項目1 項目2 項目3 項目4 項目5 項目6
項目4
defaultsは、rw,suid,dev,exec,auto,nouser,asyncと指定するのを省略したかたち。fdやcdromはnoautoを指定している。defaults,usrquotaと指定すればユーザクォータが有効になる。
項目5
ユーティリティでバックアップする頻度を指定する。0はバックアップなし。1は1日に一回。2は2日に一回。
項目6
起動時にfsckがチェックする順番を指定する。0はチェックなし。ルートファイルシステムは1で、それ以外は2または2以上を指定する。
再起動する。
# shutdown -r now
自動マウントされたか確認する。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 36G 4.5G 29G 14% /
/dev/hda1 99M 8.5M 85M 10% /boot
/dev/hdb1 75G 20k 71G 1% /home1 (hdb1がhome1に自動マウントされている)
# rpm -qa | grep lynx
lynx-2.8.5-18
# rpm -e lynx
Lynxのダウンロード
Lynxのインストール方法
http://lynx.isc.org/release/lynx2-8-5/INSTALLATION
$ tar zxvf lynx2.8.5.tar.gz
$ cd lynx2-8-5
$ ./configure
$ make
$ su
# make install
インストールされたバイナリの場所
/usr/local/bin/lynx
設定ファイルの場所
/usr/local/lib/lynx.cfg
$ /usr/local/bin/lynx
yahooにアクセスして動作を確認する。
g ←gを入力
URL to open: www.yahoo.co.jp
www.yahoo.com cookie: XXXXXXXX Allow? (Y/N/Always/neVer) A
www.yahoo.comは、このように表示される。 うむむ、シンプル!


■日本語を表示できるようにする
lynx.cfg の396行目あたりのCHARACTER_SETを編集する。
$ vi /usr/local/lib/lynx.cfg
396G
Shift_JISを設定したいので、コメントアウトしてshift-jisを指定する。
CHARACTER_SET:shift_jis (396行目あたり)
ASSUME_LOCAL_CHARSET:utf-8 (476行目あたり)
PREFERRED_LANGUAGE:ja (549行目あたり)
その他
Japanese (EUC-JP) euc-jp
Japanese (Shift_JIS) shift_jis
UNICODE (UTF-8) utf-8
■その他設定
o (オー)でオプション設定する。
Save options to disk: [X] ←リターンキーでxを入れないとせっかくの設定が保存されない!
Cookies (!) : [accept all]
Invalid-Cookie Prompting (!) : [force no-response_]
Use locale-based character set(!): [ON_]
Display character set : [UNICODE (UTF-8)________________]
Assumed document character set(!): [shift_jis_______]
Preferred document language : ja_______________________________
設定を変更したら、一番下の Accept Changes を忘れずに。
Save option to diskにチェックを入れ忘れなければ、$HOME/.lynxrc として保存される。このチェックを入れていないがために、「なぜ、設定が保存されないんだー??」と悩むこと数時間。(英語力無しな自分)
それから、保存されない項目があるのでよく見ると、(options marked with (!) will not be saved)と保存されないんだとさ(!)がついている項目は。しょうがないので、$HOME/.lynxrcで設定することになる。
■$HOME/.lynxrcを設定する
以下、製作中...
ヘルプを表示してくれる。
mysql> ?
データベースを指定して、テーブル名を一覧する。
mysql> show databases;
mysql> use データベース名;
mysql> show tables;
列名を一覧で表示する。
mysql> show columns from テーブル名;
mysql> select last_name, first_name from emp;
mysql> alter table テーブル名 add (
-> フィールド1 int,
-> フィールド2 varchar(10)
-> );
first オプションで、カラムの先頭に追加する。
mysql> alter table テーブル名 add (
-> フィールド int first
-> );
フィールド1の後ろにフィールド2を追加する。
mysql> alter table テーブル名 add
-> フィールド2 varchar(100) after フィールド1;
旧カラム名を新カラム名に変更する。intやnot nullなども再度設定し直す必要あり。
mysql> alter table テーブル名 change 旧カラム名 新カラム名
-> int not null auto_increment;
テーブル名1 から テーブル名2 に変更するとき、
mysql> alter table テーブル名1 rename as テーブル名2;
emp_idが123の社員の名前をSUZUKIに変更する。
mysql> update emp
-> set
-> first_name = 'SUZUKI'
-> where emp_id = 123;
empテーブルからidが1番のデータを削除する。
mysql> delete from emp where id = 1;
mysql> delete from emp ;
テーブル作成など長いSQL文を例えば、 create.sql として保存しておき、シェルからそのファイルを実行する。
バッチ処理などもこの方法で実行できる。
ユーザ名が tanaka で、データベースが test_db で、create.sql を実行するときは、
$ mysql -u tanaka -p test_db < /home/tanaka/create.sql
Enter password: xxxxxx
データベースmydbのempテーブルにテキストデータをインポートする。
$ mysqlimport --local mydb emp.txt -u root -p
mydb: データベース名
emp.sql: テーブル名.sql(中身はテキストタブのデータ)
テキストエディタやExcel等で、TEXT-TAB形式で書き出した後、「テーブル名.txt」へ変更する。
--localを指定しないと、「Access denied」エラーが発生する。
データベースmydbのempテーブルからタブ区切りのテキストデータでエクスポートする。
$ mysql -B --skip-column-names -D mydb -e 'select * from emp;' -u tanaka -p > out.txt
--skip-column-namesを削除して実行すれば、カラム名も出力されるので便利。
データを修正後、
他のUNIXマシンにデータベースを移したいとき。
データベースに含まれている複数のテーブル、そしてデータをまとめてゴソッと移せる。
$ mysqldump xxxdb > xxxdb.sql -u tanaka -p
xxxdbデータベース内のテーブル全てをエクスポートする。
中身は、vi等で見ればSQL文が入っていることが分かる。
$ mysql xxxdb < xxxdb.sql -u tanaka -p
書き出したSQL文を実行してあげるための作業になる。
つまり、同じテーブル名が存在しているとエラーになるのでDROPしておく。
mysqlimportは、使わなくてよい。
mysql> create database xxxdb;
データベースに文字コードを指定する場合は、
mysql> create databaase xxxdb default character set utf8;
tanakaユーザを作って、パスワードはpassに設定する。
mysql> grant all privileges on xxxdb.* to tanaka@localhost identified by 'pass';
mysql> show grants for tanaka@localhost;
列名を変更するコマンドがないので、次の方法で行う。
例:first_nameが正しいフィールド名なのに、fast_nameとしてフィールドを作ってしまった。
1. 新しい列を追加する。
mysql> alter table emp
-> add
-> first_name varchar(100);
2. 新しい列に古い列の情報をコピーする。
mysql> update emp
-> set
-> first_name = fast_name ;
3. 古い列を削除する。
mysql> alter table emp
-> drop
-> fast_name;
root でログイン後、登録されているユーザを調べて、外部IPアドレスを追加登録する。
mysql> use mysql;
mysql> select user, host from user;
+---------+----------------------+
| user | host |
+---------+----------------------+
| root | aaa-web.mydomain.com |
| root | localhost |
| kataoka | localhost |
+---------+----------------------+
5 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| xxxdb |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
kataokaユーザ が 192.168.1.* から xxxdb へアクセスできるように追加設定する。
mysql> grant all privileges on xxxdb.* to kataoka@"192.168.1.%"
-> identified by 'hoge' with grant option ;
kataoka@"%" 全てのホストからアクセス可能
kataoka@localhost サーバにログインしてからアクセス可能
kataoka@"192.168.1.12" IPアドレスが192.168.1.12のホストからアクセス可能
kataoka@"mydomain.co.jp" ドメインがmydomain.co.jpからのアクセスが可能
外部ホストからのログイン方法:
$ mysql -h 192.168.1.12 -u kataoka -p
その他の情報。
ポート番号:3306
TCP WrapperやIP TABLESをチェック。
Excelからデータをテキストで書き出して、それをMySQLにインポートしたまではよかった。
しかし一部のフィールドだけ、勝手に "ダブルクォーテーション" で囲んでいたのであった。
余計なことばっかりするExcelの被害対策の方法。
empテーブルのlast_nameフィールドを対象とする。
mysql> update emp
-> set
-> last_name = replace( last_name, '"', '');
replaceで " を 何もなし で置き換える。
ということで、余計な " を消すことができる。
文字化けを防ぐために、文字コードの確認と設定を行う。
mysql> show variables like 'character_set%';
または、
mysql> status
データベースごとに文字コードを設定できるので、現在の文字コードを調べる。
(テーブルごとではなく、データベースごと)
mysql> show create database データベース名;
文字コードを指定してデータベースを作るには、
mysql> create databaase xxxdb default character set utf8;
テーブルごとに文字コードを設定できるので、現在の文字コードを調べる。
mysql> show create table テーブル名 \G
/etc/my.cnf を編集する。
[client]
default-character-set=utf8
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[client]と[mysqld]の設定に、上記の記述を加える。
utf8: UTF-8を指定するとき。
sjis: Shift JIS を指定するとき。
ujis: EUC JP を指定するとき。
skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするため。
インストールしたMySQLの中のサンプルをコピーする。
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
再起動して有効になる。
マニュアルで停止する。
# /usr/local/mysql/bin/mysqladmin shutdown
マニュアルで起動する。
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
RPMではなく、バイナリでもなく、ソースを落としてくる。
http://dev.mysql.com/downloads/mysql/5.0.html#source
makeに30分くらいかかった。(Celeron766MHzで)
$ tar zxvf mysql-5.0.41.tar.gz
$ cd mysql-5.0.41
$ ./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql
--prefix=/usr/local/mysql
$ make
$ su
# make install
初期設定ファイルとして/etc/my.cnfに、my-medium.cnfをコピーして置く。
# chown -R mysql:mysql /usr/local/mysql
# cd /usr/local/mysql
# cp share/mysql/my-medium.cnf /etc/my.cnf
# bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql:mysql var
確認する。
# ls -l
合計 40
drwxr-xr-x 2 root mysql 4096 7月 8 21:19 bin
drwxr-xr-x 3 root mysql 4096 7月 8 21:19 include
drwxr-xr-x 2 root mysql 4096 7月 8 21:35 info
drwxr-xr-x 3 root mysql 4096 7月 8 21:19 lib
drwxr-xr-x 2 root mysql 4096 7月 8 21:20 libexec
drwxr-xr-x 4 root mysql 4096 7月 8 21:19 man
drwxr-xr-x 8 root mysql 4096 7月 8 21:20 mysql-test
drwxr-xr-x 3 root mysql 4096 7月 8 21:19 share
drwxr-xr-x 5 root mysql 4096 7月 8 21:19 sql-bench
drwx------ 4 mysql mysql 4096 7月 8 23:59 var
データをしまうvarを確認する。
# ls -l var
合計 600
drwx------ 2 mysql mysql 4096 7月 8 23:59 mysql
-rw-rw---- 1 mysql mysql 14701 7月 8 23:59 mysql-bin.000001
-rw-rw---- 1 mysql mysql 578125 7月 8 23:59 mysql-bin.000002
-rw-rw---- 1 mysql mysql 38 7月 8 23:59 mysql-bin.index
drwx------ 2 mysql mysql 4096 7月 8 23:59 test
mysql: システムデータベースをしまうディレクトリ。
マニュアルで起動する。
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
マニュアルで停止する。
# /usr/local/mysql/bin/mysqladmin shutdown
起動スクリプトのサンプルをコピーして利用する。
# cp share/mysql/mysql.server /etc/init.d/mysqld
自動起動にするには、rc2, rc3, rc4, rc5 にシンボリックリンクをはるか、chkconfigで行う。
# chkconfig mysqld on
起動スクリプトから、MySQLを起動する。
# /etc/init.d/mysqld start
MySQLのrootユーザのパスワードを設定する。
$ /usr/local/mysql/bin/mysqladmin -u root password 'XXXXXX'
rootのパスワードを設定する。
$ /usr/local/mysql/bin/mysql -u root -p
Enter password: XXXXXX
mysql> select user, password, host from mysql.user;
mysql> delete from mysql.user where user="";
MySQLユーザを追加する。
mysql> status
--------------
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.41, for pc-linux-gnu (i686) using
EditLine wrapper
Connection id: 4
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.41-log Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 14 min 23 sec
Threads: 1 Questions: 13 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6
Queries per second avg: 0.015
--------------
毎回、/usr/local/mysql/bin/mysql で起動するよりは、mysqlだけで起動したい。
/etc/profileの最後に次の1行を追加するか、各ユーザの.bash_profileに追加する。
export PATH=/usr/local/mysql/bin:$PATH
とても便利なFTPクライアント。プロクシ越えでFTPできるところが特にありがたい。Webサーバのログを毎晩自動で取得することに使うことが多い。
http://www.ncftp.com/download/
今回はFTPクライアントのソースをダウンロードする。FTPサーバもあるので間違えないように。
まずは解凍する 。
$ tar zxvf ncftp-3.1.9-src.tar.gz
$ cd ncftp-3.1.9
インストール方法を知るため、リードミーを読む。
$ vi README.txt
(途中省略)
2. General Instructions-----------------------
To build NcFTP and the utility programs, you can simply do the following:
1. (Optional) Install ncurses (available from a GNU mirror).
2. Run the "./configure" script in the NcFTP source directory.
3. (Probably not necessary) Inspect the Makefiles in each subdirectory.
4. (Probably not necessary) Browse and edit config.h.
5. "make"
6. "make install"
リードミーの通り、インストールを実行する。
$ ./configure
$ make
$ su
# make install
インストールされたバイナリ。
/usr/local/bin/ncftp
/usr/local/bin/ncftpbatch
/usr/local/bin/ncftpbookmarks
/usr/local/bin/ncftpget
/usr/local/bin/ncftpls
/usr/local/bin/ncftpput
/usr/local/bin/ncftpspooler
▼普通のユーザXXXとして接続するとき
$ ncftp -u XXX [host]
$ ncftp -u XXX [ftp://host.name/directory/]
▼anonymous で接続するとき
$ ncftp [host]
$ ncftp [ftp://host.name/directory/]
詳細は、man ncftp してみると、いろいろな情報あり。
$ ncftp -u myname 192.168.3.4
$ ncftp -u myname -p mypassword 192.168.4.5
社内proxyサーバなどを越えてftpするときは、ホームディレクトリの設定ファイルを設定する。
$ cd $HOME
$ cd .ncftp
$ vi firewall
▼$HOME/.ncftp/firewallファイルの設定箇所
firewall-type=0 (ファイアウォールのタイプ)
firewall-host=192.168.7.8 (ファイアウォールサーバ)
firewall-user=myname (必要であれば、ファイアウォールのユーザ名を指定する)
firewall-password=fwpass (必要であれば、ファイアウォールのパスワードを指定する)
firewall-port=21 (必要であれば、ファイアウォールのポート番号を変更する)
firewall-exception-list=.mydomain.com,localhost,localdomain (社内のサーバなどを指定する)
#passive=on (パッシブで接続するときはコメントアウトする)
ntpdで時刻合わせを自動で行う。Oracleなど時刻の影響を受けるものは止めておく。
# ntpdate ntp1.jst.mfeed.ad.jp
# hwclock --systohc
ntp1.jsp.mfeed.ad.jpやntp.nict.jpなどのNTPサーバを指定して時間を合わせる。
hwclockコマンドで、システム時刻をハードウェアクロックに反映させる。(sys to hc)
参考URL:
/etc/ntp.confでNTPサーバを指定する。
# ntp.nict.jp
restrict 133.243.238.164 nomodify notrap noquery
restrict 133.243.238.243 nomodify notrap noquery
restrict 133.243.238.244 nomodify notrap noquery
restrict 133.243.238.163 nomodify notrap noquery
# mfeed.ad.jp
restrict 210.173.160.27 nomodify notrap noquery
restrict 210.173.160.57 nomodify notrap noquery
# servers
server ntp.nict.jp
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
下3行で指定しているサーバのIPアドレスをrestrictで指定する。dig ntp1.jst.mfeed.ad.jpのようにIPアドレスを自分で調べる。restrictでは、IPアドレス指定しないと上手く動かなかった。
ntpdを起動する。
# /etc/init.d/ntpd start
参考URL:
http://blog.c--v.net/2007/02/15/3
ntpdの動作状況を確認する。約5分後の表示。*が先頭についているサーバと同期している。
同期のポーリング間隔(poll)は、64秒。安定してくると最大1024秒になる。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp-b3.nict.go. .PPS. 1 u 8 64 17 8.237 -44.432 4.224
+ntp1.jst.mfeed. fs-monntp1.mfee 2 u 9 64 17 7.012 -44.346 6.555
+ntp2.jst.mfeed. fs-monntp1.mfee 2 u 6 64 17 7.162 -43.608 3.598
restrict指定でちゃんとIPアドレスを指定しないとこのような表示になってしまうので注意。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==================================================
ntp-b2.nict.go. 0.0.0.0 16 u - 64 0 0.000 0.000 4000.00
ntp1.jst.mfeed. 0.0.0.0 16 u - 64 0 0.000 0.000 4000.00
ntp2.jst.mfeed. 0.0.0.0 16 u - 64 0 0.000 0.000 4000.00
NTPサーバの参照状態を確認する。
# ntptrace
localhost.localdomain: stratum 2, offset -0.000004, synch distance 0.01590
ntp-b3.nict.go.jp: stratum 1, offset 0.000206, synch distance 0.00037, refid 'PPS'
# ntpq 127.0.0.1
ntpq> pe
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp-b3.nict.go. .PPS. 1 u 55 64 37 8.155 -29.989 14.443
+ntp1.jst.mfeed. fs-monntp1.mfee 2 u 54 64 37 6.975 -29.715 14.631
+ntp2.jst.mfeed. fs-monntp1.mfee 2 u 50 64 37 6.811 -28.743 14.866
ntpq> rv
status=0664 leap_none, sync_ntp, 6 events, event_peer/strat_chg,
version="ntpd 4.1.2@1.892 Fri May 14 00:10:37 EDT 2004 (1)",
processor="i686", system="Linux2.6.9-11.19AX", leap=00, stratum=2,
precision=-17, rootdelay=7.593, rootdispersion=199.987, peer=40604,
refid=ntp-b3.nict.go.jp,
reftime=ca162048.5070a808 Sun, Jun 10 2007 16:01:28.314, poll=6,
clock=ca16204a.425b8561 Sun, Jun 10 2007 16:01:30.259, state=4,
offset=-22.767, frequency=-139.653, jitter=11.259, stability=44.186
ntpq> q
rvしたときにsync_ntpが表示されているのでOK。
■OracleのためのTips
1. Oracleを終了する。
2. ntpdateコマンドを-bオプションで実行する。
# ntpdate -b ntp1.jst.mfeed.ad.jp
3. -xオプションでNTPデーモンが起動するように /etc/sysconfig/ntpd を修正する。
OPTIONS="-x -U ntp -p /var/run/ntpd.pid"
一気に時間を変更するstopモードではなく、徐々に時間を合わせるslewモード(-x)に設定する。
4. NTPデーモンを起動した後にOracleインスタンスを起動する。
# /etc/init.d/ntpd start
# /etc/init.d/oracle-xe start
サーバ再起動時もntpdを起動するようにしておく。
# chkconfig --list | grep ntp
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig ntpd on
Nucleusをブラウザでアクセスすると、このようなエラーがある日発生。
mySQL error with query SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE i.iblog=1 and i.iauthor=m.mnumber and i.icat=c.catid and i.idraft=0 and i.itime<="2007-11-04 21:12:24" ORDER BY i.itime DESC LIMIT 0,15: Can't open file: 'nucleus_item.MYD' (errno: 145)
以下、復旧作業。
エラーメッセージをよく見ると、
FROM nucleus_item ... とあるので、とりあえず、nucleus_itemを修復する。このテーブルが正常であれば、nucleus_member, nucleus_category も修復・復旧する。
テーブルを検査、修復、最適化するには myisamchkコマンドを利用する。(ISAM型テーブルの場合は isamchkコマンド)
以下、rootユーザーで検査を実行する。
# myisamchk /path/to/database_dir/nucleus/nucleus_item.MYI
修復と最適化を行うために、-rオプションを与えて実行する。
# myisamchk -r /path/to/database_dir/nucleus/nucleus_item.MYI
-rオプションでもエラーが発生する場合は、-oオプションを使用して修復を試みる。
MySQLが動いているときに実行して問題なかったが、なるべく、
・mysqldを停止しているとき。
・mysqldに --enable-lockingオプションを指定して実行しているとき。
にmyisamchkを使用してテーブルを検査、修復することをお勧めする。
ネットショップ用のオープンソースosCommerceを試しにインストールしてみた。
参考サイト
http://www.bitscope.co.jp/tep/INSTALL_catalog2.2/INSTALL_catalog.html
$ tar zxvf oscommerce-2.2ms1j-R6a.tar.gz
$ cd oscommerce-2.2ms1j
$ mkdir /home/myname/public_html/shop
$ mv catalog /home/myname/public_html/shop/
$ mv admin /home/myname/public_html/shop/
$ chmod 706 /home/myname/public_html/shop/catalog/includes/configure.php
$ chmod 706 /home/myname/public_html/shop/admin/includes/configure.php
# vi /etc/php.ini
----------------------------------------------------------------------
[PHP関連の設定]
output_buffering = Off
register_globals = On
[mbstring関連の設定]
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.detect_order = auto
mbstring.substitute_character = none;
----------------------------------------------------------------------
変更したら、apacheを再起動しておく。
# /etc/init.d/httpd restart
インストールスクリプトが起動して、[New Install]ボタンと[Upgrade]ボタンが選択できる。
[New Install]ボタンを押してインストールを続ける。
データベース・サーバ: localhost
ユーザ名: xxxxx
パスワード: yyyyy
データベース: xxxxx_catalog (複数人でMySQLを使っているのでxxxxx_を付けた)
データベースxxxxx_catalogは、あらかじめMySQLのrootユーザーで作っておく。
mysql> CREATE DATABASE xxxxx_catalog;
mysql> GRANT all privileges on xxxxx_catalog.* to xxxxx@localhost IDENTIFIED BY 'MyPassword' ;
ブラウザで、[Continue]ボタンを押す。
次のページで、「データベースへの接続テストが成功しました。次のインストール・プロセスに進んで、データベースのインポート処理を実行してください。」と表示されたので、さらに[Continue]ボタンを押す。
次のページで、「データベースのインポートに成功しました。」と表示されたので、さらに[Continue]ボタンを押す。
次のページで、ウェブ・サーバに関する情報が表示されたので、確認して[Continue]ボタンを押す。設定は、ここに書き込まれる。
/home/xxxxx/public_html/shop/catalog/includes/configure.php
/home/xxxxx/public_html/shop/admin/includes/configure.php
次のページで、「設定ファイルの書き込みが成功しました。」と表示される。[Catalog]、[Administration Tool]ボタンをそれぞれ押す。
$ chmod 644 /home/myname/public_html/shop/catalog/includes/configure.php
$ chmod 644 /home/myname/public_html/shop/admin/includes/configure.php
$ rm -rf /home/myname/public_html/shop/catalog/install
引き続き、管理者用の設定を行う。
[各種ツール]の[バックアップ]を選択する。
ページの一番上に「バックアップ・ディレクトリ」が存在しないメッセージが表示されているので、作成する。
backupではなく、backup"s"。
$ mkdir /home/xxxxx/public_html/shop/admin/backups
このディレクトリにapacheが書き込みできるように権限を与える。
$ chmod 777 /home/xxxxx/public_html/shop/admin/backups
管理メニューに戻って、[基本設定] - [ユーザ] - [ユーザ管理]を選択して、ユーザ管理画面でシステム管理者(admin)のパスワードを変更する。
管理メニューに戻って、[基本設定]でショップ名等を変更する。
ちょっとした変更。
www.mydomain.com/shop/catalog/default.phpまで入力しないとForbiddenエラーになるので、Apacheのhttpd.confの設定を変更した。
httpd.confを編集して、DirectoryIndexのおしりにdefault.phpを追加。
DirectoryIndex index.html index.php default.php
忘れずにApacheをリスタート。
# /etc/init.d/httpd restart
$ chmod 777 /home/xxxxx/public_html/shop/catalog/images
$ chmod 777 /home/xxxxx/public_html/shop/admin/images/graphs
ダウンロードしたmanual.pdfを見ながら、とりあえずいじってみた。
<基本設定>
基本設定の画像表示のところで、この初期設定を変更できる。
これで、ようやく自分のショップらしくなった。
# perl -MCPAN -e shell
Are you ready for manual configuration? [yes]
CPAN build and cache directory? [/root/.cpan]
Cache size for build directory (in MB)? [10]
Perform cache scanning (atstart or never)? [atstart]
Cache metadata (yes/no)? [yes]
Your terminal expects ISO-8859-1 (yes/no)? [yes]
File to save your history? [/root/.cpan/histfile]
Number of lines to save? [100]
Policy on building prerequisites (follow, ask or ignore)? [ask]
Where is your gzip program? [/bin/gzip]
Where is your tar program? [/bin/tar]
Where is your unzip program? [/usr/bin/unzip]
Where is your make program? [/usr/bin/make]
Where is your links program? [/usr/bin/links]
Where is your wget program? [/usr/bin/wget]
Where is your ncftpget program? [/usr/local/bin/ncftpget]
Where is your ftp program? [/usr/kerberos/bin/ftp]
Where is your gpg program? [/usr/bin/gpg]
What is your favorite pager program? [/usr/bin/less]
What is your favorite shell? [/bin/bash]
If you don't understand this question, just press ENTER.
Parameters for the 'perl Makefile.PL' command?
Typical frequently used settings:
PREFIX=~/perl non-root users (please see manual for more hints)
Your choice: []
Parameters for the 'make' command?
Typical frequently used setting:
-j3 dual processor system
Your choice: []
Parameters for the 'make install' command?
Typical frequently used setting:
UNINST=1 to always uninstall potentially conflicting files
Your choice: []
Timeout for inactivity during Makefile.PL? [0]
Your ftp_proxy?
Your http_proxy?
Your no_proxy?
(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
Select your continent (or several nearby continents) [] 2
(1) China
(2) Hong Kong
(3) India
(4) Indonesia
(5) Iran
(6) Israel
(7) Japan
(8) Malaysia
(9) Philippines
(10) Republic of Korea
(11) Russian Federation
(12) Saudi Arabia
(13) Singapore
(14) Taiwan
(15) Thailand
(16) Turkey
Select your country (or several nearby countries) [] 7
(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(2) ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
(3) ftp://ftp.kddilabs.jp/CPAN/
(4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/
(5) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(6) ftp://ftp.u-aizu.ac.jp/pub/CPAN
(7) http://ftp.cpan.jp/
Select as many URLs as you like (by number),
put them on one line, separated by blanks, e.g. '1 4 5' [] 3 2 1
Enter another URL or RETURN to quit: []
cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')
cpan> install Jcode
cpan> install Bundle::LWP
cpan> q (終了する)
# perl -MCPAN -e shell
cpan> install Bundle::CPAN (CPANモジュール自身をバンドルモードでアップデートする)
cpan> install MIME::Lite (MIME::Liteモジュールをインストールする)
cpan> q (終了する)
インストールの途中で、Do you want to install the HEAD alias? [n] と聞いてきたら、そのままリターンする。
モジュールの名前が不明なときは、ここで検索して調べる。
例えば、mime で検索すると、MIME::Fast や MIME::Lite などインストール時のモジュール名称を正しく指定できる。
色々なことができることが魅力のグループウェア。使いにくいインターフェースと、訳わからん洗練されていない管理メニューがたまにキズ。この使いづらさを寛容に受け止められる人だけに勧められるソフト。
シンプルさと分かりやすさ、そしてすぐに使い始められることを重視すれば、Group-Officeの方が断然イイ!
ただ、Group-Officeでのメールクライアント機能は、キビキビと動いてくれないので断念した。(今回のお客様の要件は、メール機能を重視するということだったので...)
この2つをダウンロード。
自分のhtmlドキュメントルートに解凍する。
$ cd /myhome/myweb/
$ tar jxvf /tmp/phpgroupware-jp-0.9.16.003-pre1.tar.bz2
$ tar jxvf /usr/local/src/phpgroupware-doc-jp-0.9.16.003-pre1.tar.bz2
$ su
# chown -R apache:apache phpgroupware
# chmod -R 770 phpgroupware
/myhome/ に作るとする。ついでにfiles/homeも作る。
# mkdir -p /myhome/phpgw/files/home
# chmod -R 700 /myhome/phpgw/files
# chown -R apache:apache /myhome/phpgw/files
# mkdir /myhome/phpgw/files/img
# cd /myhome/myweb/phpgroupware/img/
# ln -s /myhome/myweb/phpgw/files/img images
# chmod 700 /myhome/myweb/phpgw/files/img
# chown apache:apache /myhome/myweb/phpgw/files/img
■データベースを作る
MySQLの場合、
$ mysql -u root -p
mysql> create database phpgroupware;
mysql> grant all on phpgroupware.* to MyName@localhost identified by 'NewPassword';
または、
mysql> grant all on phpgroupware.* to MyName@localhost;
■phpGroupWare をセットアップする
http://www.mydomain.com/phpgroupware/setup/ へブラウザでアクセスする。
以下は、自分の好みで設定。
持続的データベース接続: False
セッションタイプ: php4
DB名: my_phpgroupware
DBユーザー: myname
DBパスワード: mypassword
DBタイプ: mysql
コンギュレーションパスワード: configpassword
設定を終えたらログアウトする。
■ セットアップを続ける
http://www.mydomain.com/phpgroupware/setup/ へブラウザでアクセスする。
コンフィギュレーションにパスワードを入力してログインする。
■管理者アカウントを作成する
一度、ログアウトする。
再度http://www.mydomain.com/phpgroupware/setup/ へブラウザでアクセスする。
コンフィギュレーションにパスワードを入力してログインする。
環境設定 > 管理者アカウント作成画面 をクリック。
ユーザID: administrator
姓:
名:
パスワード: password
パスワード再入力: password
デモ用アカウント作成: そのときの気分で選ぶ。
■管理者権限でログインする
一度、ログアウトする。
http://www.mydomain.com/phpgroupware/ へブラウザでアクセスする。
ユーザ名: administrator(さっき設定したユーザID)
パスワード: password(さっき設定したパスワード)
■利用ユーザを登録する
一番左のアイコン、環境設定 > ユーザーアカウント
ユーザー名を入力して、追加ボタンをクリックする。
利用アプリケーションをチェックして追加ボタンをクリックする。
■ログインして利用する
http://www.mydomain.com/phpgroupware/ へブラウザでアクセスしてログインする。
ほんとに、訳のわからんユーザインターフェースで頭にくることがよくあるが、一から自分で作ることを考えたら、まぁ仕方ないなぁと思う。感謝して使うとしよう。
環境設定 > ユーザアカウント > 編集
Quota(MB)を無制限にする。
Windows用のffftpは、NLIST -alLを利用しているが、今のProFTPDは対応していないので、LISTを利用するようにffftpを設定する。
また、バージョン1.2.10以降のProFTPDサーバのときは、このオプションを指定すれば「ドットファイル」がちゃんと表示される。
次の一行を/usr/local/etc/proftpd.confのお尻に追加する。
ListOptions "-a"
ホームディレクトリ以上のディレクトリへ移動できないようにさせる
DefaultRoot ~ !staff
自分の好みを保存しておくと、サーバの設定ごとにコピーペーストするだけなので便利。
/usr/local/etc/proftpd.confのお尻に追加。
ServerIdent off
TimeoutIdle 10800
TimeoutNoTransfer 10800
TimeoutStalled 10800
IdentLookups off
UseReverseDNS off
RequireValidShell off
tcpNoDelay off
WtmpLog off
AuthPAM off
#ExtendedLog /var/log/ftp.log
AllowForeignAddress on
DefaultRoot ~ !staff
qmailでセキュリティ安心
目的
●qmailがシステム起動時に起動されないようにするためにスタートアップファイルS80sendmailを無効にする。
# cd /etc/rc.d/rc3.d/
# mv S80sendmail _S80sendmail
sendmailそのものを使用されることを防ぐため、名前を変更し、更に実行権も無くしておこう。
# which sendmail
/usr/sbin/sendmail
# cd /usr/sbin/
# mv sendmail sendmail.bak
# chmod 0 sendmail.bak
ここで、再起動するが、筆者の場合MiracleLinuxを使っているので、miracleserviceと入力し実行して、エンターキー、Xキーで実行を止める。(TurboLinuxの場合、turboservice)
# miracleservice (MiracleLinuxを使っている場合のみ)
# reboot
●pop, imapサーバも起動しないようにする。(qmailはqmail用のpopサーバが付属している)
/etc/inetd.confを変更する。
# vi /etc/inetd.conf
次のようにpop-3をコメントアウトする。imapも同様。
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
この新しい設定を有効にするために次のコマンドを実行する。
# killall -HUP inetd
●ダウンロード前の作業
今回はダウンロード先を自分のディレクトリにtempディレクトリを作ってそこに保存した。
# cd ~/
# mkdir temp
# cd temp
●qmailをゲットする。
http://www.jp.qmail.org/(日本語)
http://www.qmail.org/(英語)
2001年7月現在、1.0.3を以下からダウンロードした。
ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-1.03.tar.gz
●パッチファイルをゲットする。
ヘッダ日付の世界標準時をローカルタイム日本時間に修正するパッチ。
ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch
●checkpasswordをゲットする。
パスワードチェックのプログラムで、qmailのpopが使用する。
http://cr.yp.to/checkpwd/install.html
checkpassword-0.90.tar.gzをダウンロードする。
●解凍する。
tarコマンドを使って解凍する。
tar -zxvf k
解凍したらこのようになっているはず。(自分のディレクトリにtempディレクトリを作って作業した)
# cd ~/temp
# ls
checkpassword-0.90.tar qmail-1.03.tar.gz
checkpassword-0.90/ qmail-1.03/ qmail-date-localtime.patch
●パッチを当てる。
qmailのディレクトリ内に移動して、patchコマンドを実行する。
# cd qmail-1.0.3
# patch < ../qmail-date-localtime.patch
ftpで使用する主なコマンド
ftp
open
ls
!ls
cd
pwd
bin
asc
bye
字を間違えて入力したらctl+hでバックスペースの機能を果たす。
●グループnofilesとユーザの登録
●ユーザのシェルを変更
デフォルトの/bin/bashではなく、/bin/trueに変更しよう。
# vi /etc/passwd
以下のように変更。
alias:x:507:502::/var/qmail/alias:/bin/true
qmaild:x:508:502::/var/qmail:/bin/true
qmaill:x:509:502::/var/qmail:/bin/true
qmailp:x:510:502::/var/qmail:/bin/true
qmailq:x:511:503::/var/qmail:/bin/true
qmailr:x:512:503::/var/qmail:/bin/true
qmails:x:513:503::/var/qmail:/bin/true
MEMO
Linux以外のプラットホームでのユーザ登録方法
http://www.jp.qmail.org/q103/jinstall/install.ids.html
●コンパイル&インストール
いよいよコンパイルとインストールを実行する。
qmailを解凍したディレクトリに移動する。そしてmakeコマンドを実行する。
# cd ~/temp/qmail-1.0.3
# make setup check
わらわらとメッセージが表れるので眺めていればよい。
速読のできる人以外は読めないしね(^^)
メッセージの最後は./installと./instcheckで終わっていると思う。/var/qmailをのぞくといくつかのディレクトリができているはず。
●自分のホストの名前を設定する
インストールが終わったら、やはりqmailを解凍したディレクトリでconfig-fastを実行する。
# cd ~/temp/qmail-1.0.3
# ./config-fast dns.mydomain.com
Your fully qualified host name is dns.mydomain.com.
Putting dns.mydomain.com into control/me...
Putting mydomain.com into control/defaultdomain...
Putting mydomain.com into control/plusdomain...
Putting dns.mydomain.com into control/locals...
Putting dns.mydomain.com into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to dns.mydomain.com.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
そして以下のようなファイルが/var/qmail/controlのディレクトリに作成されるので確認しよう。
# ls -lt /var/qmail/control
total 20
-rw-r--r-- 1 root root 16 Jul 15 10:38 defaultdomain
-rw-r--r-- 1 root root 20 Jul 15 10:38 locals
-rw-r--r-- 1 root root 20 Jul 15 10:38 me
-rw-r--r-- 1 root root 16 Jul 15 10:38 plusdomain
-rw-r--r-- 1 root root 20 Jul 15 10:38 rcpthosts
なぜ自分のホスト名を手動登録したかとゆうと、ネットワークダウンでDNS検索できない状態でもローカルでメール配送できるように配慮しているからだそうだ。
●エイリアスを登録する
# cd /var/qmail/alias
# touch .qmail-postmaster
# touch .qmail-mailer-daemon
# touch .qmail-root
# chmod 644 .qmail*
●rcファイルをコピーする
/var/qmail/boot/homeを/var/qmail/にコピーする。
# cd /var/qmail/boot/
# ls
binm1* binm2* binm3* home* proc*
binm1+df* binm2+df* binm3+df* home+df* proc+df*
# cp home ../rc
これでqmailのインストールは完了。お疲れさまでした(^^)
筆者はここでコーヒータイムにしました。
●送信テスト
qmail-injectを手動で実行して、手動でメールを送信しよう。qmail-injectは起動するとカーソルが表示されるだけなので、そのままタイプすればよい。ユーザ名はこのホストに登録してあるもの。
# /var/qmail/bin/qmail-inject
to: kitano
test
配送されたユーザのホームディレクトリにMailboxという名前のファイルが作られる。
# ls -l /home/kitano/public_html/
-rw------- 1 kitano users 366 Jul 15 11:43 Mailbox
/etc/passwdの設定によってはログインディレクトリが違うのでチェックしておこう。筆者の場合はwebでの利用を中心としたユーザなのでpublic_htmlに設定してある。
ローカル配送が無事確認できたら、外部アドレスにメールを送信してみよう。qmail-injectを実行しても何もメッセージが現れないが、to:と入力していく。タイトルのTestを入力してリターンした後はcontrol+Dで抜ける。
# /var/qmail/bin/qmail-inject
to: y_sasaki@mac.com
Test
自分にメールを送ってみた。ちゃんと受け取れたのを確認して感動にひたった筆者であった(^^)
●受信テスト
qmailのSMTPデーモンであるqmail-smtpdを起動する。qmail-smtpdをinetdによって起動するように/etc/inetd.confを修正する。
# vi /etc/inetd.conf
次のように以前のsmtpはコメントアウトして新しい1行を追加する。
#smtp stream tcp nowait root /usr/bin/smtpd smtpd
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
修正・保存したらinetdを再起動する。
プロセス番号を調べる。
# ps ax | grep inetd
453 ? S 0:00 inetd
HUPシグナルで再起動。
# kill -HUP 453
外部からこのホスト宛にメールを送ってみよう。kitano@dns.mydomain.comに送ってみた。
受信できたかを確認しよう。
# cd /home/kitano/public_html
# vi Mailbox
下の方に今送ったメールのメッセージが書かれているはずだ。
メールログも確認しておこう。
# vi /var/log/maillog
下の方に今送信したメールアドレスなどが記録されているはず。
次にMaildirにメールを配送するように.qmailファイルを記述する。ホームディレクトリに.qmailというファイルを作り1行加える。
$ vi $HOME/.qmail
次の1行を書き込む。
./Maildir/
で保存する。
以上をユーザごとに行なえばよい。
●qmailブートスクリプトである/var/qmail/rcをこのように修正する。
# vi /var/qmail/rc
このようにMailboxをMaildirに修正する。
| #!/bin/sh # Using splogger to send the log through syslog. # Using qmail-local to deliver messages to ~/Mailbox by default. exec env - PATH="/var/qmail/bin:$PATH" \ |
●qmail-pop3dを使おう
前準備としてcheckpasswordをインストールしよう。さっき自分のホームディレクトリの下のtempディレクトリにftpしてあるので、そこに移動する。
# cd ~/temp/checkpassword-0.90
コンパイルとインストールを行なう。
# make setup check
inetd.confでqmail-pop3dを使えるようにしよう。
# vi /etc/inetd.conf
| # # Pop and imap mail services et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d pop-3 stream tcp nowait root /usr/sbin/tcpd /var/qmail/bin/qmail-popup dns.mydomain.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir #imap stream tcp nowait root /usr/sbin/tcpd imapd # |
修正を有効にする。
# killall -HUP inetd
特定クライアントへのリレー許可とアクセス許可の設定
# vi /etc/hosts.allow
| # # hosts.allow # tcp-env :127. :setenv = RELAYCLIENT qmail-popup :ALL ALL :127.0.0.1 |
このサーバが自宅から離れたところにあったとして、
・自宅からso-net等のメールでmydomain宛にメールを送信できる
・自宅からmydomainに届いたメールを読むことができる
・自宅からこのmydomainのアカウントでメールを送信できない(不正中継防止)
ことを確認しよう。
TDVIAのマザーボードにIDEハードディスクを接続してLinuxを起動するとやたらと遅い。
hdparmで調べてみた。
# hdparm -t /dev/hda
なんと、200KB/sec程度のスピードしか出ていないことが分かった。
hdparmで現在の設定を調べてみた。
# hdparm /dev/hda
DMAがオフになっていたので、オンにしてみた。
# hdparm -d1 /dev/hda
すると、DMAの設定はできませんでしたというメッセージが表示された。
原因は、BIOSの設定だった。
Onboard IDE RAID chip をEnabledに設定したところ、DMAが使えるようになった。
UDMA 100 IDEを利用できるようにするとのこと。てっきりRAIDのためだけの設定だと思ってDisabledにしていたのでした。
hdparm -Xオプションのメモ
-X08: PIOモード0
-X09: PIOモード1
-X10: PIOモード2
-X11: PIOモード3
-X12: PIOモード4
-X16: シングルワード DMAモード0
-X17: シングルワード DMAモード1
-X18: シングルワード DMAモード2
-X32: マルチワード DMAモード0
-X33: マルチワード DMAモード1
-X34: DMAモード2
-X67: UDMAモード3
-X66: UDMAモード2(Ultra ATA33)
-X68: UDMAモード4(Ultra ATA66)
-X69: UDMAモード5(Ultra ATA100)
-X70: UDMAモード6(Ultra ATA133)
参考ページ
TDVIAのマザーボードでアダプテックのSCSIカード(Adaptec 2940 Ultra Wide)を使おうと思ったら、起動時にこのようなメッセージが表示されて停止する。
ACPI: PCI interrupt device [ pci pin ]: no GSI - using IRQ irq11
[pci pin] は、000...というような数字。
調べてみると、「OS設定にてACPI機能によるIRQ割り振りが有効であった時、pciルーティング・テーブルにもブリッジにもIRQの定義がなかったことを示す」とのこと。
TDVIAのBIOSでACPI FunctionをDisabledに設定して解決した。
参考ページ
pciルーティング・テーブルにもブリッジにもIRQの定義がなかったことを示すメッセージ
Postfixなど、設定がうまくいっているかチェックしたいときには、ターミナル上でテストするんだけど、手順を忘れちゃうんだよぉ!(記憶力無し)
http://www.atmarkit.co.jp/fnetwork/rensai/tcp03/01.html
wwwダウンローダを自動運転
目的
2 Webサイトをゲットする作業を自動化する。
3番目の引数はゼロです。
viを使って新たにファイルを作成する。
以下のように書き込んでいく。
複数のサイトを読み込みたかったら3行目移行に追加しよう。
以下の内容を書き込む。
ログメールが必要ないときは MAILTOの一行を記入しないと、このcrontabの所有者にログをメールする。wgetではものすごく長いメールになるので受け取りたくなかったら上のように一行書けばよい。
その前に現在crontabに何か書き込まれているか確認してみよう。
何もないよと言っている。 では、早速お願いしてみよう。crontab.txtに書き込んだスケジュールを実行してくれと。
お願いを聞いてくれたか確認してみよう。
一番最後に先ほど書いたスケジュールが表示されていればOK。スケジュールを変更したらもう一度cronにお願い作業を実行しよう。 |
wu-ftp
目的
【変更前】 ホームディレクトリである/home/kitanoを/homeに変更する。 【変更後】 webをアップロードすることが多ければ、アップロード先のpublic_htmlまで指定すればよい。
しかし/homeより上のディレクトリは一切アクセスできなくなった。 なぜなら、/bin/lsが利用できないからだ。 ユーザはログインしたとき/homeが/に見えるので、/home/binと/home/libを作成すればよい。 ユーザのディレクトリに移動して、binとlibディレクトリを作る。 lsコマンドが必要とするライブラリを調べる。 よって、/bin/lsには/lib/libc.so.6と/lib/ld-linux.so.2が必要なのが分かった。 # cp /bin/ls /home/bin/ 最後の2行、mkdirとrmdirも忘れずにコピーしよう。
path-filter guest /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^- 参考までにguestとrealの記述方法。 |
www検索エンジンの設置
| 目的 自分のサイトに検索エンジンを設置する。比較的ポピュラーなNamazuを使用する。 完成図 1. インデックスを作成する $ cd ~/index/www.avant-tokyo.com インデックスを保存するディレクトリを指定するときは、-Oオプション(オー)を使う。これで、どこのディレクトリにいても上と同じ結果を得られる。 $ mknmz -0 ~/index/www.avant-tokyo.com ~/web/www.avant-tokyo.com 2. ファイルの削除 $ rm -f NMZ* 3. 検索してみよう インデックスの作られたディレクトリに移動する $ cd ~/index/www.avant-tokyo.com インデックスを見てみよう。これらがインデックスだ。 $ ls 早速、WebObjectsという言葉を検索してみよう。 $ namazu WebObjects これで、検索結果が表示されるはずだ。 4. Webで検索できるようにしよう (制作途中です) |
Miracle Linux 4にインストール。
▼PDFマニュアル(英語)をダウンロードして眺めておく。
このマニュアルに従って、サーバ側のインストールから始める。 (2007年版のマニュアル39ページ)
http://www.zabbix.jp/modules/download1/
▼ThinkITの記事
http://www.thinkit.co.jp/cert/article/0611/19/1/2.htm
Miracle Linux 4.0のNET-SNMPがアップデートされていたので、rpm -Fvhでインストールしておく。
http://www.miraclelinux.com/support/index.php?q=node/99&errata_id=1218
snmpdとsnmptrapdが、Linux起動時にスタートするようにしておく。
# chkconfig --list | grep snmp
# chkconfig snmpd on
# chkconfig snmptrapd on
現在、起動していなかったらスタートさせる。
# service snmpd start
# service snmptrapd start
▼参考情報:ITmedia SNMP
http://www.itmedia.co.jp/enterprise/articles/0705/31/news042.html
▼ソースからインストールする場合は本家から。
http://net-snmp.sourceforge.net/
ZABBIXサーバプロセスをrootで実行するのはセキュリティリスクがあるので、専用のユーザを作る。
# useradd zabbix
$ tar zxvf zabbix-1.4.5.tar.gz
設定や観測値を保存するためのデータベースを用意する。
MySQL, Oracle, PostgreSQL, SQLiteが利用できる。今回は、MySQLを使用する。
$ mysql -u root -p
mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
スキーマを作り、初期データとイメージをインポートする。
$ cd /usr/local/src/zabbix-1.4.5/create/schema/
$ cat mysql.sql | mysql -u zabbix -p zabbix
$ cd ../data/
$ cat data.sql | mysql -u zabbix -p zabbix
英語のPDFマニュアルでインストールでは、ZABBIXアラートを受け取るために--with-Jabberを指定しているが、自分の環境では利用しない。
$ ./configure --enable-server --with-mysql --with-net-snmp
$ make
# make install
/usr/local/sbin/zabbix_serverが出来ている事を確認した。
# mkdir /etc/zabbix
# cp /usr/local/src/zabbix-1.4.5/misc/conf/zabbix_server.conf /etc/zabbix/
/etc/zabbix/zabbix_server.confを設定する。
DBName=zabbix
DBUser=zabbix
DBPassword=password
# mkdir /var/run/zabbix
# mkdir /var/log/zabbix
# chown zabbix:zabbix /var/run/zabbix
# chown zabbix:zabbix /var/log/zabbix
# cp /usr/local/src/zabbix-1.4.5/misc/init.d/fedora/core/zabbix_server /etc/init.d/
fedora, redhat, suse用などが用意されている。
/etc/init.d/zabbix_serverを編集する。
BASEDIR=/usr/local
FULLPATH=$BASEDIR/sbin/$BINARY_NAME
PIDFILE=/var/run/zabbix_server/$BINARY_NAME.pid
/usr/local/binではなく、/usr/local/sbinにzabbix_serverがインストールされていたので、FULLPATHのbinをsbinに変更した。
起動する。
# /etc/init.d/zabbix_server start
$ mkdir /path/to/html/zabbix
$ cp -a /usr/local/src/zabbix-1.4.5/frontends/php/* /path/to/html/zabbix/
http://zabbix-server/zabbix/
"Check of pre-requisites"等でFailが表示された項目を修正してリトライする。
◎PHP max execution time: 300 seconds
memory_limit = 128M
post_max_size = 8M
max_execution_time = 300
◎BC math
PHP自体を --enable-bcmathでコンパイルする必要があるので、再コンパイルしてインストールした。
PHPインストール時のconfigureオプションは、php -iで確認する。
◎MySQLへの接続情報を入力する。
◎MySQLへの接続情報を「save」ボタンでダウンロードして、
/path/to/html/conf/zabbix.conf.php としてアップロードする。
◎ここまでで一段落。
よく使うコマンド
Linuxを使い始めたときのメモ。こんな感じで自分用のメモを作ることをおすすめ。
ファイルを探す
# updatedb
# locate ファイル名
| cp -R /home/name/cgi-bin/countcgi ./countcgi |
ファイルの削除(まとめて一度に削除)
| $ rm -f NMZ* |
ディレクトリの削除(サブディレクトリもまとめて削除)
| $ rm -rf dirctories |
ディスク容量を調べる
| $ df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/hda7 2023 43 1877 2% / /dev/hda5 38 3 33 8% /boot /dev/hda8 2023 516 1404 27% /usr /dev/hda9 509 36 448 7% /var /dev/hda10 129 0 122 0% /tmp /dev/hda11 16878 2815 13205 18% /home |
ディレクトリまたはファイルのディスク容量を調べる
| $ du -ms 128 . |
| $ ps auxw ... qmailr 4706 0.0 0.1 1044 332 ? S Jul15 0:00 qmail-rspawn qmailq 4707 0.0 0.1 1036 344 ? S Jul15 0:00 qmail-clean root 7436 0.0 0.8 4284 2140 ? S 01:16 0:01 httpd nobody 7438 0.0 0.7 4616 2036 ? S 01:16 0:00 httpd nobody 7439 0.0 0.8 4616 2072 ? S 01:16 0:00 httpd nobody 7440 0.0 0.8 4612 2088 ? S 01:16 0:00 httpd ... |
| $ date Sun Jul 15 09:49:27 JST 2001 $ date -u 協定世界時間(UTC) Sun Jul 15 00:51:10 UTC 2001 |
●日付の設定
筆者はこのコマンドを探すのに苦労しました。掲示板CGIで表示される時間が狂っとると言われて、時間設定はどうすれば変更できるか本とネットで調べまくった覚えがある。
# date
| # /etc/rc.d/init.d/named status |
| # ps aux | grep named |
| # /etc/rc.d/init.d/named start |
LinuxマシンAの電源周りが壊れたので、余っていたPCのハーディスクを置き換えた。
ネットワークだけがうまくつながらないのであった。起動時に、なんちゃらかんちゃらeth0 insmod errors ...。
その原因は...。
■ネットワーク周りを変更するときに確認するファイル
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network デフォルトゲートウェイ
/etc/sysconfig/network-scripts/ifcfg-eth0 カードに割り当てるIPアドレス
/etc/modules.conf 今回、これが原因でした!
■ネットワークカードを認識しているか調査するコマンド
# cat /proc/ioports
# cat /proc/interrupts
# cat /proc/modules (lsmodと同じ)
# lsmod
■ハード的なアクション
IRQなどの問題があるときは、イーサネットカードを引っこ抜く。起動して、起動メッセージでコンフィグレーションを削除するか、という問いに削除と答える。再度イーサネットを差して起動する。(別なPCIスロットも試す)
あきらめて、別のイーサネットカードを買ってくる。という手もあり。
■ifconfig -a でネットワークインターフェースの情報を得る
# ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4038 errors:0 dropped:0 overruns:0 frame:0
TX packets:4038 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
eth0 の情報が出てこないなんて、悲しすぎる!
■ifcfg-eth0 の情報が正しいか確認する
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.27
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
■イーサネットカードを交換したときはココをチェック!
いやー、イーサネットカードを置き換えたら、ここを自分で書き換える必要があるんですなー。
/etc/modules.conf
(変更前)
alias eth0 eepro100 ←以前のLinuxで使っていたイーサネットカード
alias eth1 eepro100 ←以前のLinuxで使っていたイーサネットカード
alias scsi_hostadapter aic7xxx
alias parport_lowlevel parport_pc
alias eth2 8139too ←今回、追加したカード。
(変更後)
alias eth0 8139too ←これで、/etc/sysconfig/network-scripts/ifcfg-eth0 を参照するようになる。
alias scsi_hostadapter aic7xxx
alias parport_lowlevel parport_pc
つまり、コレガのイーサネットカードをちゃんと自動認識して、新規に追加してくれたんだけど、eth2として登録してくれちゃうんだな。以前のマシンのeepro100という情報は消さないのね。なるほど...。
■参考サイト