Linux memo

これは自分で調べたことを忘れないようにメモしているだけなので, 正しい情報かどうか保障はありません.
また,このとおりに設定して使っているとも限りません. が,たぶんこれでも動くでしょう.

ApacheにSSLを組み込む

RedHat Linux 7.3でSSLを使えるようにするための設定. 公式サイトに説明がある http://www.redhat.co.jp/manual/Doc73/RH-DOCS/rhl-cg-ja/ch-apache-secure-server.html ので,特に説明もいらないと思われるけど.

パスワード無しの鍵を作って自己証明書を作るには以下のとおり.これだけでも通信路は暗号化される.

$su -
#cd /etc/httpd/conf
#/usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key
#chmod go-rwx /etc/httpd/conf/ssl.key/server.key
#make testcert
#/sbin/service httpd restart
証明書だけを作りなおす場合には,古い証明書 ssl.crt/server.crt を削除かリネームしてから make testcert以降を実行すればOK
以下にちょっと詳しい説明

0.まずは必要なパッケージ一覧
apache
mod_ssl
openssl
mm
apache-devel
apache-manual
openssh
openssh-askpass
openssh-askpass-gnome
openssh-clients
openssh-server
openssl-devel
stunnel
1.続いて鍵の生成
#cd /etc/httpd/conf

古い鍵と証明書を削除
#rm ssl.key/server.key
#rm ssl.crt/server.crt

鍵の生成
#make genkey
(pass phrase入力)

ただし,この方法だとapacheを起動するときにpass phraseを聞かれるようになるから自動起動できない.
そこで,パスワードなしにするには上のじゃなくて,次のを使う.
/usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key

鍵ファイルの権限を変更
#chmod go-rwx /etc/httpd/conf/ssl.key/server.key

2.次に証明書作成.CAに要求するか自己署名.CAに出すとお金がかかるけど警告が出ない証明書が作れる.単に暗号化したいだけなら自己署名でも大丈夫.ただし毎回警告が出る.

2-a.CAに要求する場合
#make certreq
これでserver.csrっていうファイルができてるはずだから,あとはCAの指示に従う.

2-b.自己署名の場合

#make testcert
画面に表示されたとおりにしたがうと /etc/httpd/conf/ssl.crt/server.crt に証明書ができる.

3.最後にapacheの再起動を忘れずに

#/sbin/service httpd restart

up2dateが使えなくなったとき

SSL_connect error ってエラーでup2dateが使えなくなったときは up2dateコマンド自体が古くなってSSL certificate authority fileが古いからです. https://rhn.redhat.com/help/latest-up2date.pxt このへんから最新のup2date(今回は up2date-2.8.40-3.7.3.i386.rpm)を落としましょう.それから,
$ md5sum up2date-2.8.40-3.7.3.i386.rpm
# rpm -Fvh up2date-2.8.40-3.7.3.i386.rpm
# up2date -p

Home

無線LANカードの設定

RedHat Linux 7.2 で,BUFFALO の WLI-PCM-L11 を使えるようにする設定

次のファイル
/etc/pcmcia/wireless.opts
を開いて
Lucent
WLI-PCM-L11
のところで
ESSID="essid"
MODE="Managed"
KEY="key"
essid, key は正しいものを入力
/etc/rc.d/init.d/pcmcia restart

Home

DHCPサーバの設定

RedHat 7.2 をDHCPサーバにするために.

dhcpdが動いているか,入っているか,を確認.
ps -ax | grep dhcpd
これで何か出ればすでに動いてるはず.とりあえず
/etc/rc.d/init.d/dhcpd stop
とやって,停止させてから設定を確認しましょう.動いてなければ
rpm -qa | grep dhcp
とやって,
dhcp-* というのは出れば入ってます.入ってれば設定を確認しましょう. dhcpcd-* っていうのは DHCPクライアントっぽいので違います.

入ってなければ http://www.redhat.com とかから探してください. (今は ftp://ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386/RedHat/RPMS/dhcp-2.0pl5-8.i386.rpm これが最新っぽい.)ダウンロードできたら
rpm -ivh dhcp-*.rpm
とやるとdhcpdが入ります.

設定の確認
まず,
/etc/sysconfig/dhcpd ファイルの中で
DHCPDARGS=eth1
というように,対象となるNICを指定します.これを間違うと きっと偉い人に怒られます.指定したら
/etc/dhcpd.conf
の中に設定を書きます.書き方は不明^^; man dhcpd.conf とかを見るのが正しい. (きゃ〜英語)
予想によると,

グローバルな設定1;
グローバルな設定2;
サブネット1特有の設定開始{
  サブネット1特有の設定1;
  サブネット1特有の設定2;
  サブネット1内の特定のホスト1の設定開始{
    サブネット1内の特定のホストの設定1;
  }
}

こんな感じでしょう.

default-lease-time 75600;
max-lease-time 86400;
option domain-name "mydomainname";
option domain-name-servers 192.168.0.1, 192.168.0.2;
subnet 192.168.0.0 netmask 255.255.255.0{
  range 192.168.0.4 192.168.0.254;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;

  host mydesktopmachine{
    hardware ethernet 00:00:00:00:00:00;
    fixed-address 192.168.0.3;
 }
}

もっと細かい設定はいろいろありますが,いちおうこれで動くでしょう. 設定が終わったら
/etc/rc.d/init.d/dhcpd start
とやって,DHCPサーバを動かしましょう.設定が間違ってると動いてくれないので エラーメッセージみながら確かめましょう. 今回はまったのは,対象になるNICが動いてないとDHCPサーバも動けないって ことかな^^; ちゃんと
/etc/sysconfig/network-scripts/ifcfg-eth1
の中に
ONBOOT=yes
の1行があることを確かめときましょう.もちろんこの中でIPアドレスとか 設定しておかないと泣けます.
DEVICE='eth1'
BROADCAST='192.168.0.255'
IPADDR='192.168.0.1'
NETMASK='255.255.255.0'
NETWORK='192.168.0.0'
ONBOOT='yes'
こんな感じかな
Home

DHCPクライアントの設定

ネットワークを使うようになっているか確認
/etc/sysconfig/network ファイルの中に次の文があるかどうか
NETWORKING=yes

NICが認識されているか確認
dmesg | grep eth

動かしてみる
ifconfig eth0 up

/etc/sysconfig/network-scripts/ifcfg-eth0 ファイルに次の内容を書く
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

再起動するか以下
/etc/rc.d/init.d/network restart

IPアドレス等の確認
ifconfig

DHCPサーバから取得した情報を見る
cat /etc/dhcpcd/dhcpcd-eth0.info
Home

PHP+PostgreSQLを使えるようにする

Vine Linux 2.5 で PHPからPostgreSQLを使えるようにするためのメモです.

Vine の FTPサイトに行って,VinePlus から
php*.rpm
php-pgsql*.rpm
をダウンロードしてくる.(今回はphp-4.1.2-0vl1.i386.rpm php-pgsql-4.1.2-0vl1.i386.rpmだった)
rpm -ivh php-4.1.2-0vl1.i386.rpm php-pgsql-4.1.2-0vl1.i386.rpm
とやってインストールする.

/etc/php.ini を編集する.Dynamic Extensions のところに
extension=pgsql.so
を追加.
extension_dir = ./ となっているところを以下に変更.
extension_dir = /usr/lib/php4

PostgreSQLの初期設定をする
rootで
/etc/rc.d/init.d/postgresql start
とやると初期化される

Apacheからデータベースを使えるようにユーザを追加.Apacheはapacheというユーザ権限で 動いてるみたいなので以下のように
su postgres
createuser apache
再起動するか,root権限で以下を実行して変更を有効にする.
/etc/rc.d/init.d/httpd restart

データベースを作るには
createdb databasename

Home