ubuntu作業 のバックアップ(No.18)

※※このサイトは2012年頃より更新を停止しています。※※

Endeavor NT-1000にて

2005-08-27あたりからNT1000にturbolinux10 Desktopをインストールして自宅サーバテスト環境として使っていたけど、この頃のLinuxのUTF-8対応情勢と、新し目のパッケージを色々いじくり倒してみたいことと、何より既にインストールしてあるturbolinuxの各種設定がグジャグジャになってることとがあいまって(笑)、またまたOSを載せかえることにした。

最初はCentOS入れようとしたけど、PC/NETのetcetra/2006-09-29の経緯を経てubuntuを
入れることにした。
ubuntuのserver版にしようかとも思ったけど、対象マシンがノートパソコンでもあるし、ラップトップの機能にも配慮してくれているであろうdesktop版でよしとすることに。

その端末での作業記録を、自分用に残していきます。
何かの場合に同じ作業をたどれるように。
 ※内容に関して指摘・コメントなどございましたらどうぞ。

  • 祥人 -- 大橋 2007-06-03 (日) 23:24:26

環境

マシンエプソンダイレクト Endeavor NT-1000
OSubuntu-6.06.1-desktop
使ったCDイメージubuntu-6.06.1-desktop-i386.iso
LAN card(pcmcia)MELCO LPC2-T

インストールと初期設定

特に特殊なところはない。
CD挿入して電源ONしてLiveCDからubuntuが起動。
インストールアイコンをクリックして、基本的にデフォルトインストール。
パーティションは手動で設定。
ネットワークは勝手にDHCPになってた。
OSのインストールに慣れていればほとんど迷わないはず。

インストール後のパーティション構成

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda2       /               ext3    defaults,errors=remount-ro 0       1
/dev/hda1       /boot           ext3    defaults        0       2
/dev/hda7       /home           ext3    defaults        0       2
/dev/hda3       /usr            ext3    defaults        0       2
/dev/hda5       /var            ext3    defaults        0       2
/dev/hda6       none            swap    sw              0       0
/dev/hdb        /media/cdrom0   udf,iso9660 user,noauto     0       0

ネットワーク設定

IPアドレスを手動で変更

  • DHCPになっているところをstaticにする
    • http://goww.blogspot.com/2006/04/ubuntu.html
      上記URLよりDebian系ディストリビューションのIPアドレス設定として下記の内容あり。

      man ifupから辿って、/etc/network/interfacesを変更するらしい。

      $ sudo ifdown eth0

      としてから、/etc/network/interfacesを変更。

      #iface eth0 inet dhcp # ←これをコメントアウト
      iface eth0 inet static
          address 192.168.11.12
          netmask 255.255.255.0
          gateway 192.168.11.1

      これで、

      $ sudo ifup eth0

      とやってOK。

      だそうな。
      その他のeth2、ath0、wlan0も最初っから記述されてるけど、そんなNICは持ってないはずなのでコメントアウトした。
    • でもうちのNT-1000はNICをeth1と認識している。
      2枚あるPCMCIAスロットのうち上段にNIC挿してるけど、下段がeth0なのかな?
      そこで下記のようにした。
      auto eth1
      # iface eth1 inet dhcp
      iface eth1 inet static
          address 192.168.5.5
          network 192.168.5.0
          netmask 255.255.255.0
          gateway 192.168.5.1
          broadcast 192.168.5.255
      で、一般的には下記でネットワークをrestartする。
      # /etc/init.d/networking restart
      でもなんとなくPCMCIAの環境って素直にいくかどうか不安なのでrebootで対応した(笑
  • /etc/resolv.conf にDNSサーバーを書く
    うちのルータはDNSリレーをしてくれるようなので、とりあえず下記のみ記述。
    nameserver 192.168.5.1
  • /etc/hosts の内容を確認
    こんなんなっとった。
    127.0.0.1       localhost
    127.0.1.1       host
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts
    下記を加えた。
    192.168.5.5     host.hoge.jp

パッケージのアップデート

オリジナル版のCDイメージを使ってインストールしているので、ubuntu-jaのパッケージを組み込む。

  1. /etc/apt/sources.listの変更
    • extraレポジトリを追加する
      dapper
      dapper-updates
      dapper-backports
      dapper-security
      上記の行の末尾に「 universe multiverse」を書き加える。(加えた行は先頭の#を削除して有効にする)
    • Japanese Teamが提供するパッケージを利用できるようにする
      上記に加え、以下を追記
      deb http://archive.ubuntulinux.jp/ubuntu-ja dapper/
      deb http://archive.ubuntulinux.jp/ubuntu-ja dapper-ja/
    • そしてアップデート
      # apt-get update
  2. ubuntu-jaのGPGキーのインストール
    # apt-get install ubuntu-ja-keyring
  3. もいっちょアップデート(今入れたGPGキーを有効にする)
    # apt-get update
  4. ubuntu-desktop-jaのパッケージをインストール
    # apt-get install ubuntu-desktop-ja
  5. パッケージのアップグレード
    # apt-get upgrade
  6. /etc/X11/xorg.confを適切に変更(日本語キーボードの場合のみ)
    「Option "XkbModel" "pc105"」を「Option "XkbModel" "jp106"」
  7. 追加でsshdを入れてどっからでも操作できるようにする。
    sudo apt-get install openssh-server
    /etc/ssh/sshd_config に、希望の設定をする。
    俺にとってのミソは下記。
    • Port
    • PermitRootLogin
    • PermitEmptyPasswords
    • AllowUsers

起動設定の変更

  1. GUI起動をとめる。
    S13gdm --> K13gdm
  2. runlevel 2,3の起動スクリプトをなるべく同じに。
    runlevel 3 をGUI起動に、runlevel 2をCUI起動にするため。
    • cp -a /etc/rc2.d/S10powernowd.early /etc/rc3.d/
    • cp -a /etc/rc2.d/S99stop-readahead /etc/rc3.d/

運用開始

ここから色々追加したりしてテストしていこう。

開発ツールをインストール

ソースからコンパイルができる環境はとりあえず用意しておきたい。

# apt-get update
# apt-get install gcc-4.0* make g++ autoconf automake libtool expat linux-headers-386

そしたら下記のパッケージがインストールされることになった。

autoconf automake1.4 autotools-dev binutils cpp cpp-4.0
expat g++ g++-4.0 gcc gcc-4.0 gcc-4.0-doc libc6-dev
libstdc++6-4.0-dev libtool linux-kernel-headers m4 make
linux-headers-2.6.15-27 linux-headers-2.6.15-27-386 linux-headers-386

不要なパッケージを削除

普段メインで使ってるPCのVMware Serverでubuntuデスクトップの使用環境が整ったので、NT-1000のdesktopパッケージを削除することにした。

  • openoffice
    sudo apt-get --purge remove openoffice*
    これすると ubuntu-desktop とか ubuntu-desktop-ja とか language-support-ja とか language-support-en も削除される。
    いいのか?
    とりあえずVMwareのデスクトップ環境では同じことをやっても特に問題なく使用できている。gnomeで日本語とかが使えなくなるわけじゃないみたいだね。
  • evolution
    sudo apt-get --purge remove evolution*
    これでekigaってやつも一緒に削除されるもよう。

ユーザ管理関係

  1. rootユーザを有効にする。
    $ sudo passwd root
  2. ユーザを作る
    • GUIでやる
      GNOMEのシステムメニューとかその辺で直感的にできたはず。
    • CUIでやる
      参考:ヨシオオ日記 2006-11-12
      ここ見て、実際にやってみて確かにびびった。
      しかしちょっと調べてみると、コマンドラインでユーザ作成する場合、ubuntuでは「useradd」と「adduser」とでどうやら挙動が異なるよう(他の昨今のディストリでも似たような状況かも)。
      # useradd hogetest
      上記で作成したユーザは、「useradd -D」で参照できるデフォルト値(もしくは/etc/default/useradd で指定されてる内容)で/etc/passwdへ登録されるよう。そして
      # useradd hogename -d /home/hogename -s /bin/bash
      上記で作成したユーザは、/etc/passwdにはその通りにユーザ情報が記載されるが、なんとどちらもディレクトリは作られてない。そしてGIDを見るとUIDと値が同じではない。

      どうしたことかと調べてみると、どうやらUIDとGIDを同一にしてユーザを作成するのは、割と最近生まれた「User Private Group(UPG)」という概念(scheme?)らしい。
      で、useraddではなくadduserって対話型コマンドがあって、adduserで作成したユーザはUser Private Group(UPG)の形式でしかもホームディレクトリも作られ、/etc/skel/配下のファイルもコピーされる。
      というわけで、useraddとadduserを使い分けした方がよさげ。

      rpm系ディストリビューションを使ってる人はadduserに慣れがあるんじゃなかろうか。
      ものによっちゃuseraddもUPG化してるUNIX系システムもあるようなので、ユーザ作成でCUI作業する際にはテストとチェックをすべしってことだな。

  3. 各ユーザのHISTSIZEを大きくする
    • /.bash_profile に追記。

      export HISTSIZE=10000
      rootは.bashrcにでも。
      つーか、新規ユーザ作る前に/etc/skel/配下のそれぞれを書き直すべきな。
  4. /etc/skel/配下に手を加える
    $ su -
    • HISTSIZE
      # echo "export HISTSIZE=10000" >> /etc/skel/.bash_profile
    • SSHのキープアライブを設定しておく
      DebianのOpenSSHはProtocolKeepAlivesのパッチを宛ててパッケージングしてるらしい。
      Debian系のUbuntuでも同じく有効になってるらしい。
      # mkdir /etc/skel/.ssh
      # touch /etc/skel/.ssh/config
      # echo "ProtocolKeepAlives 120" >> ~/.ssh/config
    • 後々のmutt導入の下準備
      メールの読み書きを楽にするためにmutt入れちまおう。
      # apt-get update
      # apt-get install mutt
      そして /etc/skel/ 配下に下記を配置しておく。
      # mkdir /etc/skel/tmp
      # mkdir /etc/skel/.mutt
      # vi /etc/skel/.mutt/muttrc   ※あれこれ参考にして書くべし

rsyncで特定ディレクトリを同期したい

参考:rsyncのREADME邦訳
参考:Backup by rsync (+ssh)
参考:rsyncによるミラーリングの設定
参考:パソコンおやじ - Rsyncによるデータバックアップ

  • バックアップ元もバックアップ先も同じユーザという前提で。
    $ rsync -avzr -e "ssh -p ***" --delete --force /home/user/dir/ hostname:/home/user/dir
    初回実行はけっこう時間かかるそうな。
    マクドナルドの無線LANでやったら118MBぐらいのデータが10分もかからんかったはず。
    次回以降は差分同期してくれるそうな。
    つーか、引数の同期元ディレクトリの指定は末尾に / をつけるけど、同期先ディレクトリの末尾には / をつけないようにしないと俺の意図したことはうまくいかないという恐ろしい罠があった。

SMTPが動くようにした

使うMTAはpostfix。

  1. インストール
    # apt-get update
    # apt-get install postfix
    すると postfix ssl-cert の二つのパッケージがインストールされることになった。
    続行してたら下記のようなことを聞かれた。
    なんのこっちゃか判らんのでEnterですっとばし。(笑
    あとでdpkg-reconfigure Postfixすれば大丈夫でしょきっと。
    Postfix Configuration
    ---------------------
    
    You have several choices for general configuration at this point.  If 
    you have your debconf priority set to 'low' or 
    'medium', you will be asked more questions later.  You can always run 
    "dpkg-reconfigure --priority=low postfix" at a later 
    point if you want to see these questions again.
    
    No configuration - IF YOU WANT THE INSTALL TO LEAVE YOUR CONFIG ALONE, 
    CHOOSE THIS OPTION.  No configuration changes will be 
    [移動]  ##  ←ここでEnter
    
    done now:  If you have not already configured Postfix, your mail system 
    will be broken and should not be used. You must then 
    do the configuration yourself by editing /usr/share/postfix/main.cf.dist 
    and saving your changes as /etc/postfix/main.cf, or 
    by running dpkg-reconfigure Postfix.  main.cf will not be modified by 
    the Postfix install process.
    
    Internet site - mail is sent and received directly using SMTP. If your 
    needs don't fit neatly into any category, you probably
    want to start with this one and then edit the config file by hand.
    
    Internet site using smarthost - You receive Internet mail on this 
    machine, either directly by SMTP or by running a utility 
    [移動]  ## ←ここでEnter        
    
    such as fetchmail. Outgoing mail is sent using a smarthost. optionally 
    with addresses rewritten. This is probably what you 
    want for a dialup system.
    
    Satellite system - All mail is sent to another machine, called a "smart 
    host" for delivery.  No mail is received locally.
    
    Local delivery only - You are not on a network.  Mail for local users is 
    delivered.
    
      1. 設定しない    3. スマートホスト付きインターネット  5. ローカルのみ
      2. インターネットサイト  4. サテライトシステム
    [移動]   ## ←ここでEnter
    
    General type of configuration?  ## ←ここで「1」を入力してEnter
    これでとりあえずインストール処理が進む。
    postfixの展開の時にdebconfが「フロントエンドの初期化に失敗しました」とかゆってくるけど、ほっとく。
    インストール処理終了後にこんなフォローメッセージがあった。
    Postfix was not set up.  Start with 
      cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
    .  If you need to make changes, edit
    /etc/postfix/main.cf (and others) as needed.  To view Postfix 
    configuration
    values, see postconf(1).
    
    After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.
    よくわかってないけど心得たフリ。
    • 補足
      SmartHostってなに。
      ようするに「とりあえずここにメール投げれ」っていうサーバのことらしい。
      ISP指定のSMTPサーバとか。
      この頃はどのISPでもOutbound Port 25 Blocking(OP25B)を実施し始めてるから、自宅サーバの場合はスマートホストを指定したほうがいいんだはずね。
      (2006-10-12 ここまで)
  2. 細かい設定をし直す(2007-01-22)
    とりあえず
    # dpkg-reconfigure postfix
    してみた。
    インタラクティブ(対話的)に設定項目の入力画面が進み、下記のように処理されるような入力内容にした。
    setting synchronous mail queue updates: true
    setting myorigin
    setting destinations: $myhostname, localhost.localdomain, localhost
    setting relayhost: (うちのプロバイダのSMTPサーバ)
    setting mynetworks: 192.168.0.0/28 127.0.0.0/8
    setting mailbox_size_limit: 102400000
    setting recipient_delimiter:
    setting inet_interfaces: all
    setting inet_protocols: all
    そして出来たmain.cfに一部書き加えて、下記の内容に。
    smtpd_banner = $myhostname ESMTP
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # TLS parameters
    smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    smtpd_use_tls=yes
    smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
    smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
    
    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.
    
    myhostname = hostname.domain.jp
    mydomain = domain.jp
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = $myhostname, localhost.localdomain, localhost
    #relayhost = (うちのプロバイダのSMTPサーバ)
    mynetworks = 192.168.0.0/28 127.0.0.0/8
    mailbox_size_limit = 102400000
    recipient_delimiter =
    inet_interfaces = all
    inet_protocols = all
    うちの使ってるプロバイダはうちの地域にまだOP25Bを実施していないようなので、とりあえず「relayhost」の項はコメントアウトして保存。
    # /etc/init.d/postfix reload
    で設定ファイルを再読み込みさせて下記のメール送信テストを実施。
    ・ローカルからローカルの配送成功。
    ・ローカルから外部ドメインへの配送成功。
    ・外部からtelnetでつないでローカル内への送信成功。
    ・外部からtelnetでつないで外部ドメインへの送信reject。
    とりあえず暫定的にはこれでよし。
    変なことが起きてないかまめにログチェックすべし。

    その他細かいところや、スマートホストでプロバイダのSMTPサーバをSMTP AUTHでやる為の設定は
    参考:PostfixによるSMTPサーバ構築メモ
    参考:postfix with SMTP-Auth part2
    参考:smtp authが処理されない。
    ここらへんを参考にしてじっくりやってみよっかな。
    (書きかけ:2007-01-22)

  3. OP25B対策と、SMTP-AUTHの有効化
    参考:パソコンおやじ - OP25B対策(Outbound Port 25 Blocking対策)
    参考:パソコンおやじ - PostfixによるSMTPサーバの構築(CentOS標準版編)
    参考:エンジニアきまぐれTips←むっちゃ解り易かった
    • saslauthdに必要なパッケージを追加
      apt-get install postfix-tls sasl2-bin
    • main.cfの編集
      上記まででコメントアウトしてた「relayhost」の項を有効にする。
      その上で、下記を追記。
      # SMTPクライアントとしての設定(op25b対策)
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/isp_data
      smtp_sasl_security_options = noanonymous
      smtp_sasl_mechanism_filter = cram-md5, plain, login
      
      # SMTPデーモン設定
      smtpd_sasl_auth_enable = yes
      smtpd_sasl_security_options = noanonymous
      smtpd_sasl_exceptions_networks = $mynetworks
      smtpd_recipient_restrictions = 
      permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
      broken_sasl_auth_clients=yes
    • /etc/default/saslauthd を編集
      START=yes   # ←コメントアウトを解除するだけ
      MECHANISMS="pam"  # ←最初からこうなってた
    • /etc/postfix/sasl/smtpd.conf を新規作成
      中身はこれだけ。
      pwcheck_method: saslauthd
    • postfixとsaslauthd とが通信できるように仕込む
      どうやらpostfixは/var/spool/postfix/ に chroot して動作するらしい。
      ので、下記を実施。
      rm -r /var/run/saslauthd/
      mkdir -p /var/spool/postfix/var/run/saslauthd
      ln -s /var/spool/postfix/var/run/saslauthd /var/run
      chgrp sasl /var/spool/postfix/var/run/saslauthd
      adduser postfix sasl
      最後の adduser で、/etc/group の sasl に postfix が追加されるらしい。
      へー。
    • postfix と saslauthd を再起動
      /etc/init.d/postfix restart
      /etc/init.d/saslauthd start
      以上で、とりあえずSMTP-AUTHが動いたことを25番ポートで確認。
    • /etc/postfix/master.cf の submission設定を有効に
      下記のコメントアウト部分を解除する。
      submission inet n      -       n       -       -       smtpd
            -o smtpd_etrn_restrictions=reject
            -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      ルータの外からの587番ポートを開けて、送信確認済み。
      設定完了!(2007-02-27)
  4. 補足
    「ユーザ管理」のところでは触れなかったけど、/etc/default/useradd
    の中には CREATE_MAIL_SPOOL なんていう変数がある。
    postfixインストール後に、既存ユーザのメールスプールを作る方法ってどんなだ?
    adduser で作成するユーザにはメールスプール用意されるみたいだけど。
    useraddで作ったユーザに対して準備するのは、ちゃんと仕組みわかってないと危ないかも。

不具合

  • 2007-02-02 発生
    プロバイダ提供ドメイン宛や独自ドメイン宛のメールは普通に送信できるんだけど、Willcom P.H.Sに送信してみたところ、届いてくれない。
    logを見るとdefferedとなってしまっている。
    この辺を参考に、後ほど対処しよう。
    おしえてBP!
    パソコンおやじ
    ちなみに、dovecotはPOPとかIMAPサーバ。
  • 2007-02-27 解消
    OP25Bの対処と共に、ISPのSMTPサーバへrelayして送信するようになったことで、PHSへの送信が問題なくできるようになった。

Apache、MySQL、PHP、PostgreSQL (書きかけ:2007-01-21)

参考:Life is a Gamble

パッケージインストール

  • まずはとっつきやすいパッケージをインストール
    sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql libdbd-mysql-perl
    けっこう時間かかる。
    mysqlはインストール完了直後から起動する。
    こうして起動してるmysqlはrootのパスワードなしでログインできるので、インストール完了したらすぐに変更した方が良い。
    手っ取り早く変更するには下記で。
    # mysqladmin -u root password '[パスワード]' -p
    Enter password:         ※ここで何も入力せずにエンター
  • 加えてPostgreSQLとPHPのPECLを
    参考:dozo pukiwiki - PDOのドライバーインストール //めっちゃありがたい。
    参考:Harmonic Howl - 2006-11-24 //これまたありがたい
    PECL(ぴっくる) - はてなダイアリーより
    PECLはPerlで言うCPANのようなポジションだそうな。
    利用にはビルド環境が必要。
    ~# apt-get install apache2-threaded-dev php5-dev php-pear php5-cgi php5-sqlite \
       libmysqlclient15-dev postgresql-client-common postgresql-common libpq-dev \
       postgresql-server-dev-8.1 libapache2-mod-auth-pgsql php5-pgsql php5-gd

PHP PECLで各種モジュールビルドとphp.ini設定

  • PECLでpdoをビルド
    ~# pecl install pdo
    これは通った。出来上がったのは
    /usr/lib/php5/20051025/
    にある。
    PECLでインストールしたもののバージョンや状態を確認するには
    # pecl list
  • /etc/php5/cli/php.ini
    PECLはcli版で動作するので、/etc/php5/cli/php.iniに下記を記述。
    ;;;;;;;;;;;;;;;;;;;;;;
    ; Dynamic Extensions ;
    ;;;;;;;;;;;;;;;;;;;;;;
    extension=gd.so
    extension=pdo.so
    extension=mysql.so
    extension=mysqli.so
    extension=pgsql.so
    extension=sqlite.so
    5つの.soは、インストール直後に勝手にphp.iniの一番下に追記されてるかも。
  • ビルド完了するまでの道のり
    で、その後なぜか以下のビルドが通らない。
    ~# pecl install pdo_sqlite
    ~# pecl install pdo_mysql
    ~# pecl install pdo_pgsql
    原因究明中。3つともこんなこと言われるんですけど。
    ~# pecl install pdo_sqlite
    downloading PDO_SQLITE-1.0.1.tgz ...
    Starting to download PDO_SQLITE-1.0.1.tgz (868,469 bytes)
    ..........................................................................................................................................done: 868,469 bytes
    111 source files, building
    running: phpize
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20050922
    Zend Extension Api No:   220051025
    building in /var/tmp/pear-build-root/PDO_SQLITE-1.0.1
    running: /tmp/tmpXcwct8/PDO_SQLITE-1.0.1/configure
    checking for egrep... grep -E
    checking for a sed that does not truncate output... /bin/sed
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables...
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ANSI C... none needed
    checking whether gcc and cc understand -c and -o together... yes
    checking if compiler supports -R... no
    checking if compiler supports -Wl,-rpath,... yes
    checking build system type... i686-pc-linux-gnu
    checking host system type... i686-pc-linux-gnu
    checking target system type... i686-pc-linux-gnu
    checking for PHP prefix... /usr
    checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext
    checking for PHP extension directory... /usr/lib/php5/20051025
    checking for PHP installed headers prefix... /usr/include/php5
    checking for re2c... no
    configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
    checking for gawk... no
    checking for nawk... nawk
    checking if nawk is broken... no
    checking for sqlite 3 driver for PDO... yes, shared
    checking for PDO includes... checking for PDO includes... /usr/include/php/ext
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for char *... yes
    checking size of char *... 4
    checking for usleep... yes
    checking for nanosleep... yes
    checking time.h usability... yes
    checking time.h presence... yes
    checking for time.h... yes
    checking for fdatasync in -lrt... yes
    configure: error:
    You've configured extension pdo_sqlite, which depends on extension pdo,
    but you've either not enabled pdo, or have disabled it.
    
    ERROR: `/tmp/tmpXcwct8/PDO_SQLITE-1.0.1/configure' failed
    ↓こんなん実行したら
    <?php
           if(dl('pdo.so')){
                   echo "success\n";
           } else {
                   echo "boo!\n";
           }
    ?>
    期待通りに
    Warning: Module 'PDO' already loaded in Unknown on line 0
    boo!
    て出るから、pdo有効になってるはずなんだけどなぁ。

    参考:dozo pukiwikiさんの「ハマリどころ 」を参考に下記のように1024行目〜1029行目をコメントアウト

    ~# vi /usr/lib/php5/build/acinclude.m4
      1024 dnl   if test "x$is_it_shared" = "x" && test "x$3" != "xtrue"; then
      1025 dnl     AC_MSG_ERROR([
      1026 dnl You've configured extension $1, which depends on extension $2,
      1027 dnl but you've either not enabled $2, or have disabled it.
      1028 dnl ])
      1029 dnl   fi
    そしたら3つともビルド通りよった。
    いいのか?もういいや。
  • 適宜php.iniの書き換え
    ~# cd /etc/php5/apache2/
     # cp -a php.ini php.ini.ORG
    参考:SugarCRM日本語ドキュメントプロジェクト - TOP > 日本語関連の動作設定
    参考:PHP/tips/日本語環境php.ini設定
    上記リンクを参考に下記を記述。
    magic_quotes_gpc = off
    〜〜〜 中略 〜〜〜
    default_charset = "UTF-8"
    〜〜〜 中略 〜〜〜
    mbstring.language        = Japanese
    mbstring.internal_encoding    = UTF-8
    mbstring.http_input           = auto
    mbstring.http_output          = pass
    mbstring.detect_order         = auto
    mbstring.substitute_character = none
    〜〜〜 中略 〜〜〜
    extension=gd.so
    extension=pdo.so
    extension=pdo_sqlite.so
    extension=pdo_mysql.so
    extension=pdo_pgsql.so
    extension=pgsql.so
    extension=mysql.so
    extension=mysqli.so
    extension=sqlite.so
  • ところがどっこい
    後で気が付いた。
    php.iniで
    default_charset = "UTF-8"
    としていると、ブラウザに基本でUTF-8の文書を返してしまうよう。
    xoopsでテストしようとしたら、インストールウィザードが文字化けてたので気が付いた。
    /etc/php5/apache2/pnp.ini で、
    ;default_charset = "UTF-8"
    としたら、事態が回避された。
    今後もUTF-8系のWebアプリで挙動を確認しておこう。(2006-12-06)
  • 機能追加 - php-json (2007-08-14)
    手順参考:miraclelinuxのblog:拓かれた世界へ向かって - PHPでJSONしたい
    SugarCRMの実験のためにphp-jsonを導入。
    1. 入手
      配布サイト
      2007-08-14時点で最新版はVersion 1.2.1。
      php-json-ext-1.2.1.tar.bz2をサーバでwget
      wget http://www.aurore.net/projects/php-json/php-json-ext-1.2.1.tar.bz2
    2. ビルド&設定
      $ tar jxf php-json-ext-1.2.1.tar.bz2
      $ cd php-json-ext-1.2.1/
      $ ./configure
      $ make
      $ su
      # make install
      # vi /etc/php5/apache2/php.ini
          extension=json.so
      # /etc/init.d/apache2 restart

Perl CPAN

参考:Jcode.pm - jcode.pl の後継、Encode.pm への架け橋
参考:[Linux][perl] URLリスト
参考:CPAN/SITES

  • CPANのフェッチ先URL修正
    ~# perl -MCPAN -e shell
    cpan> o conf urllist   # これで現在リストされてるURLを確認
    cpan> o conf urllist push ftp://ftp.kddilabs.jp/CPAN/
  • ちょっと要るようになったものをインストール
    cpan> install LWP
    〜〜〜略(質問にはデフォルトでEnter。あとはコンパイル処理とか)〜〜〜
    cpan> install Jcode

apache2のconf調整

参考: トサ日記(tech side) [utuntu] Apacheインストール/設定
参考:Ubuntu 6.06 "Dapper Drake"インストール個人的ノート
参考:[ubuntu-jp] apache2でcgiの設定

~# cd /etc/apache2/
 # ln -s /etc/apache2/mods-available/cgid.conf mods-enabled/
 # ln -s /etc/apache2/mods-available/cgid.load mods-enabled/
 # ln -s /etc/apache2/mods-available/headers.load mods-enabled/
 # ln -s /etc/apache2/mods-available/include.load mods-enabled/
 # ln -s /etc/apache2/mods-available/mime_magic.conf mods-enabled/
 # ln -s /etc/apache2/mods-available/mime_magic.load mods-enabled/
 # ln -s /etc/apache2/mods-available/rewrite.load mods-enabled/
 # ln -s /etc/apache2/mods-available/imap.load mods-enabled/

さらに/etc/apache2/apache2.confを編集。
以下にオリジナルとのdiffを示す。

 # pwd /etc/apache2
 # diff apache2.conf apache2.conf.ORG
 14d13
 < ServerName *********.jp:80
 178c177
 <         LanguagePriority ja en es de fr
 ---
 >         LanguagePriority en es de fr
 299c298
 < LanguagePriority ja en da nl et fr de el it ko no pl pt pt-br ltz ca es sv tw
 ---
 > LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
 335,336c334,335
 < AddType application/x-httpd-php .php
 < AddType application/x-httpd-php-source .phps
 ---
 > #AddType application/x-httpd-php .php
 > #AddType application/x-httpd-php-source .phps
 342c341
 < AddHandler cgi-script .cgi .pl
 ---
 > #AddHandler cgi-script .cgi

そして/etc/apache2/mods-enabled/userdir.conf に ExecCGI を書き加えた。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
        </Directory>
</IfModule>

それから/etc/apache2/sites-available/default で以下の行を修正。
(DocumentRootとか、ここにVirtualHostセクション作って決めてるみたい)

ServerAdmin ******@*******.com

とりあえずこんなもんで。

# /etc/init.d/apache2 restart
 * Forcing reload of apache 2.0 web server...

MySQLの調整

ubuntu "Dappar Drake"で普通にapt-getしてインストールされるmysql-server は v 5.0らしい。

  1. パスワード設定
    インストール直後はユーザ「root」がパスワードなしでmysqlプロンプトに入れる。
    mysql> set password for root@localhost=PASSWORD('oreore');
    mysql> flush privileges;
  2. 設定ファイルについて
    • まずは調査
      EUC-JP、UTF-8と、扱う文字コードの異なる各種WebアプリケーションをMySQLで扱うために良さげな設定を探る。
      参考:トサ日記(tech side) - [ubuntu] MySQLのインストール // MySQL4.1のことだけど、ubuntu環境の参考になる
      /etc/mysql/debian.cnf なんていうファイルがあるけど、このファイルの先頭行で
      # Automatically generated for Debian scripts. DO NOT TOUCH!
      と書いてあるように、使用者が編集する対象ではないらしい。
      mysql内のDB名「mysql」、テーブル名「user」にて「debian-sys-maint」なるユーザが存在するが、こいつ用のファイルらしい。
      ちゃんと/etc/mysql/my.cnf があるので、使用者はそいつを編集するべきもよう。
      また、MySQLは4.1以降とそれより前とではマルチバイト文字の扱いがエライ違うらしいので、文字コードについてはちょっと神経質に調査。
      my.cnfの[mysqld]のセクションで「skip-character-set-client-handshake」を書いておくとよさげ(参考:Vine Linux 4でMySQL5.0)。
      別のところであった記述によると「init-connect="SET NAMES utf8"」を記述するのも手の一つらしい(参考:Rauru Blog - MySQL 入れ直し)が、突っ込んで調べてみると「init-connect」は文字コードのことのみならず、クライアントが接続時に、自動的にサーバー内部で実行される SQL 文を指定するものらしい(参考:MyNA Web Site - Top / FAQ)。
    • 設定をしてMySQLデーモンを単一で起動したが都合悪いことが発生
      最初、my.cnfを下記の設定だけ[変更&書き加え]してデーモン一つでxoops(EUC-JP)とgeeklog(UTF-8)とOpenPNE(UTF-8)とをそれぞれ別々のデータベースを作成/指定して動作を確認してみた。
      [mysqld]
      language        = /usr/share/mysql/japanese
      default-character-set = utf8
      skip-character-set-client-handshake
      [mysql]
      default-character-set = utf8
      あと、「bind-address=127.0.0.1」ってところは、外部ネットワークからの接続を許可したくないならそのままでいい(コメントされてたら外すべし)。参考:おもにパソコンのこと

      しかしxoops設置時に文字化け問題発生(2006-12-20頃)。
      モジュール追加やユーザ情報変更をしようとすると、ブラウザからの日本語入力後のデータ更新が全て化ける。
      xoopsだろうと他のwebアプリだろうと色々動かせるようにと思って暫定対処として
      参考:ぱんぴーまっしぐら
      あたりを参考に、データ格納時にクライアントの文字コードに左右されないようにするって趣旨でmy.cnfの下記の部分を[加え|書き換え]てデーモン再起動したが、根本解決せず(2007-01-04頃)。

      [mysql]
      default-character-set = binary
      [mysqld]
      default-character-set = binary
      これでは12月20に発覚した文字化けは解消したが、その後普通のニュース書き込みとかでところどころの日本語で文字化けが発生した。
      そこで、もういっそのことUTF-8データを扱う用のデーモンとEUC-JPデータを扱う用のデーモンを別々に起動して、別ポートで待ち受けることにした。
      ので、上記の変更を下記のように戻した。
      [mysql]
      default-character-set = utf8
      [mysqld]
      default-character-set = utf8
  3. 上記を受け、文字コード対策にデーモンを複数起動
    • mysqld_safe を使って、一般UNIXユーザでデーモン起動するまで
      mysqlデーモンをキックするコマンドというかスクリプトの中には mysqld_safe っていうやつがいるらしく、こいつを使えば例えばUNIXユーザそれぞれが自分用のデーモンを起動する、なんてこともやりやすいみたい。
      参考:4.2. 同じマシン上で複数の MySQL サーバを実行する
      参考:あおたけめも置き場
      • my.cnfを書き直してホームディレクトリに設置する
        インストール初期状態のmysqlデーモンはUTF-8用で動かすことにして、一般ユーザで起動するデーモンはEUC-JP用にする。
        ~$ cp /etc/mysql/my.cnf /home/username/.my.cnf
        ~$ mkdir /home/username/mysqld/
        ~$ mkdir /home/username/mysqld/datadir
        ~$ mkdir /home/username/mysqld/log
        としてコピーした .my.cnf を下記のように書き換えする。
        [client]
        default-character-set = ujis
        port            = 3307
        socket          = /home/username/mysqld/mysqld.sock
        [mysqld_safe]
        socket          = /home/username/mysqld/mysqld.sock
        [mysqld]
        user            = username
        pid-file        = /home/username/mysqld/mysqld.pid
        socket          = /home/username/mysqld/mysqld.sock
        port            = 3307
        basedir         = /usr
        datadir         = /home/username/mysqld/datadir
        log-bin                 = /home/username/mysqld/log/mysql-bin.log
        default-character-set = ujis
        [mysqldump]
        default-character-set = ujis
      • 初期化スクリプトを走らせて一般ユーザで直接起動してみる
        .my.cnf で指定している datadir に、初期データベースを作成する。
        ~$ mysql_install_db --defaults-file=/home/username/.my.cnf  --datadir=/home/username/mysqld/datadir
        ~$ mysqld_safe --defaults-file=/home/username/.my.cnf  --datadir=/home/username/mysqld/datadir &
        上記が済んだら、下記をパスワード無しで実行して期待通り出力されることを確認する。
        ~$ mysqladmin -h 127.0.0.1 --port=3307 variables -u root -p
        ~$ mysqladmin --socket=/home/username/mysqld/mysqld.sock  variables -u root -p
        ちなみに上記で -h localhost とすると、--port=3307 とかのポート指定は無視されて、MySQLをコンパイルした時のデフォルト設定のsocketファイルへ繋ぎに行く。
        MySQLでは「localhost」はそういう扱いらしいので、TCP/IPでport指定して接続したい場合はlocalhost指定を127.0.0.1で置き換えるように。

        上記までが問題なく動けば俺的にオッケ。
        このMySQLのrootのパスワードを変更して、データベース作成、ユーザ作成をして、xoopsのインストール、モジュールインストール、ユーザ作成、記事書き込みなどなどを試して、問題なく動作することを確かめ。

    • サーバのreboot時にも自動で起動するように仕込む
      MySQLをapt-getでインストールした時点で、/etc/init.d/mysql という起動スクリプトが作成されて、/etc/rc{2,3,4,5,6}.d/配下にシンボリックされている。
      この起動スクリプトがMySQLデーモンをサーバサービスとして自動で起動してくれるわけだけど、同じようにして各ユーザ用のデーモンもあげてしまおうという話。
      • rcスクリプトを作成
        外国のどっかのMySQLフォーラムの記事を参考(ほぼ完全コピー)にして、下記のようにrcスクリプトを書いた。
        #!/bin/sh
        
        custom_dir=/home/username
        
        basedir=/usr
        datadir=$custom_dir/mysqld/datadir
        bindir=/usr/bin
        pid_file=$custom_dir/mysqld/mysqld.pid
        server_pid_file=$custom_dir/mysqld/mysqld.pid
        user=username
        my_config=$custom_dir/.my.cnf
        port=3307
        log_err=$custom_dir/mysqld/log/mysqld5_err.log
        
        PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
        export PATH
        
        #
        # Use LSB init script functions for printing messages, if possible
        #
        lsb_functions="/lib/lsb/init-functions"
        if test -f $lsb_functions ; then
                source $lsb_functions
        else
                log_success_msg() {
                        echo " SUCCESS! $@"
                }
                log_failure_msg()
                {
                        echo " ERROR! $@"
                }
        fi
        
        wait_for_pid () {
                i=0
                while test $i -lt 35 ; do
                        sleep 1
                        case "$1" in
                                'created')
                                        test -s $pid_file && i='' && break
                                        ;;
                                'removed')
                                        test ! -s $pid_file && i='' && break
                                        ;;
                                *)
                                        echo "wait_for_pid () usage: wait_for_pid created|removed"
                                        exit 1
                                        ;;
                                esac
                                echo $echo_n ".$echo_c"
                                i=`expr $i + 1`
                done
        
                if test -z "$i" ; then
                        log_success_msg
                else
                        log_failure_msg
                fi
        }
        
        case "$1" in
        'start')
        # Start daemon
        
        echo $echo_n "Starting MySQL5"
        # may be overwritten at next upgrade.
        pid_file=$server_pid_file
        /usr/bin/mysqld_safe --defaults-file=$my_config --user=$user --port=$port --datadir=$datadir --pid-file=$server_pid_file --log-error=$log_err --ledir=/usr/sbin >/dev/null 2>&1 &
        wait_for_pid created
        
        ;;
        
        'stop')
        # Stop daemon. We use a signal here to avoid having to know the
        # root password.
        
        # If the manager pid_file doesn't exist, try the server's
        if test ! -s "$pid_file"
        then
        pid_file=$server_pid_file
        fi
        
        if test -s "$pid_file"
        then
        mysqlmanager_pid=`cat $pid_file`
        echo $echo_n "Shutting down MySQL5"
        kill $mysqlmanager_pid
        # mysqlmanager should remove the pid_file when it exits, so wait for it.
        wait_for_pid removed
        
        else
        log_failure_msg "MySQL manager or server PID file could not be found!"
        fi
        ;;
        
        'restart')
        # Stop the service and regardless of whether it was
        # running or not, start it again.
        $0 stop
        $0 start
        ;;]
        
        'reload')
        if test -s "$server_pid_file" ; then
        mysqld_pid=`cat $server_pid_file`
        kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"
        touch $server_pid_file
        else
        log_failure_msg "MySQL PID file could not be found!"
        fi
        ;;
        
        *)
        # usage
        echo "Usage: $0 start|stop|restart|reload"
        exit 1
        ;;
        esac
        mysqld_safe や ledir(mysqldのある場所) のパスはシステム(ディストリビューション)によって多少違うようなので、適切に書き換えが必要。
        もちろんスクリプト13行目までの間で決めてる各種変数も対応したファイルやディレクトリを作成する必要がある。
        /etc/init.d/mysql_username とかなんとかゆう名前でファイルを設置して実行権限を付加。そして下記のようにシンボリックを各ランレベルのrc.d配下に張る。
        # ln -s /etc/init.d/mysql_username /etc/rc2.d/S20mysql_username
        # ln -s /etc/init.d/mysql_username /etc/rc3.d/S20mysql_username
        # ln -s /etc/init.d/mysql_username /etc/rc4.d/S20mysql_username
        # ln -s /etc/init.d/mysql_username /etc/rc5.d/S20mysql_username
        # ln -s /etc/init.d/mysql_username /etc/rc6.d/K20mysql_username
      • rcスクリプトで指定してる内容と一致するようにmy.cnfを作成
        上述した一般ユーザでコマンドラインから起動した時のmy.cnfを、rcスクリプトと一致するように設置する。
      • スクリプトで起動/停止を確認する
        # /etc/init.d/mysql_username start
        # /etc/init.d/mysql_username stop
        # /etc/init.d/mysql_username start
        # /etc/init.d/mysql_username restart
  4. phpMyAdminを導入
    参考1:Perl Tips
    参考2:Toyoaki's RC 2006年03月20日phpMyAdmin 2.8系の設定
    参考3:☆お便利.com☆>hphppMyAdminのインストール //超絶ありがたい。
    1. ソースパッケージを入手
      [[phpMyAdmin Project
      のダウンロードページ>http://www.phpmyadmin.net/home_page/downloads.php]]から適当にダウンロード。
      俺は最新版2.9.1.1-all-languagesを持ってきた。
    2. 展開
      パッケージをドキュメントルート以下のどっかに適当に展開して適当にディレクトリ名変更。
      仮に、phpMyAdminの構成ファイルを設置するディレクトリを/var/www/hogephp/とする。
    3. セッティングの下準備
      phpMyAdminは2.8.2以降から scripts/setup.php ってやつを使って手軽にconfig.inc.phpを作成することが可能になっている模様。
      # cd /var/www/hogephp/
      # mkdir config
      # chmod o+rw
      として、端末上の適当なユーザを使用してブラウザからhttp://localhost/hogephp/scripts/setup.phpへアクセス。
      phpMyAdmin 2.9.1.1 setup
      Welcome
      とか表示されたら、ちゃんとアクセスできてる。
      差し当たり、SSL化はあとで考えよう。
    4. 必要設定を施す
      1. http://localhost/hogephp/scripts/setup.php の画面で「Server」の項にて「Add」をクリックする。
        「Server hostname」の項は「localhost」のままでいい。
        「Authentication Type」の項は「cookie」を選択する。
        他の項目は特にいじらなくて良い。
        そのまま画面下部の「Add」をクリックで決定する。
      2. 元のページの「Configuration」の項にて「Save」をクリックで設定を保存する。
        この操作により、さっき作ったディレクトリ/var/www/hogephp/config/ の配下にconfig.inc.phpが作成される。
      3. /var/www/hogephp/config/config.inc.php を /var/www/hogephp/直下に移動する。
      4. http://localhost/hogephp/ にアクセスして、ログインページが表示されることを確認する。
  5. 色々遊ぶようのユーザ作成
    http://localhost/hogephp/ にて
    1. MySQLのrootでログインしてユーザ作成
      1. ログイン後のメニューから「特権」をクリック。
      2. 「ユーザを追加する」をクリック。
      3. 「ログイン情報」を任意で設定する。
        「ユーザ専用データベース」は「同のデータベースを作成してすべての特権を与えます」にチェック。
        「グローバル特権」は「データ」「構造」の項を全部空にする。
        「リソース制限」は初期値のままで。
        上記の設定で「実行する」のボタンをクリック。
  6. 作ったユーザで、遊ぶようのDBを前もって作成しておく
    1. 「データベース」画面へ移動。
    2. 画面下部の「新規データベースを作成する」で任意の名前をつけて「作成」ボタンをクリック。
    3. 「サーバlocalhost」> 「特権」と画面移動し、対象ユーザの特権を編集するモードにする。
    4. 「データベース特定特権」の項の「データベースへ特権の追加する」にて、上記で作ったデータベース名を選択する。
      遷移した画面で全ての特権をチェックして「実行する」ボタンをクリックする。
  7. テスト
    • 試しにxoops(2.0.16a JP)で動作確認。
      すぐ気が付いたんだけど、Webサーバ側でデフォルト文字コードがUTF-8になっているせいでインストールウィザードの文字コード判定がブラウザ側で正しく行われていなかった。
      apache2の設定の方なのかPHP5の方なのかわからんかったけど、両方とも設定ファイルからデフォルト文字コードに関する指定をコメントアウトした。
      そしたら問題解消。xoopsインストールは無事に完了した。(2006-12-05)
      • PHP5
        /etc/php5/apache2/php.ini
        ;default_charset = "UTF-8"
      • apache2
        /etc/apache2/conf.d/charset
        #AddDefaultCharset UTF-8
    • groupofficeでテスト(2006-12-05〜)
      • MySQLのDB作成
        UTF-8でcreate databaseすること。
      • 必要ディレクトリの作成時のオーナー
        chown www-data:www-data -R [ディレクトリ名]
      • タイトルについて
        config.php内で定義される。
        インストーラで日本語入力するとなんでか化ける。
        インストーラのコンプリート後にconfig.phpを直接編集して日本語タイトルを入力すべし。
      • ちなみに、セットアップ中のチェックプロセスでこんなこと言われた。
         IMAP support:  	 Warning: IMAP extension not installed, E-mail module will not work.
        apache2のモジュールはロードされてるはずだけどな。
        つまりPHP5のextensionか何かが足りないということか。
        apt-cacheでsearchしてもそれらしいのが見つからなかった。
        えー、自分でビルドせんといかんの?ちっと要調査。
        ちなみに今の職場のサーバ環境ではIconv supportが無いってでワーニングが出てた。
        ここみながら、とりあえずインストーラの示す手順に従ってりゃだいじょぶそう。
      • 2007-08-上記IMAP supportの件、SugarCRMのこと調べてるとこんな記述があった。
        Apacheの設定でmod_imapを有効にして下さい。
        また、メールサーバへアクセスするため、PHPは IMAP C-Clientに
        対応するようにコンパイルされている必要があります
        (--with-curlオプション)
        もしかしたらubuntu dapperのPHP5って、コンパイル時に--with-curlオプションつけてないっぽい?
        phpinfoを見てもなんでかコンパイルオプションが表示されず(ノд`)
        まぁなんとなく上が原因であたってそうな気がする。とりあえず今後の調査課題。

PostgreSQLの調整

参考:PostgreSQL on Ubuntu Linux - How To(英語ページ)
(2006-02-17書きかけ)

  1. 追加で管理パッケージをインストール
    ~# apt-get install phppgadmin pgadmin3 pgadmin3-data
  2. パスワード設定
  3. 設定ファイルを調整
  4. phpPgAdminを導入
  5. 色々遊ぶようのユーザ作成
  6. 作ったユーザで、遊ぶようのDBを前もって作成しておく

apache2 SSL化(2007-05-09)

やりかけなのでとりあえずざっくりメモ。
参考:
参考:
参考:
参考:

  1. # dpkg-reconfigure apache-ssl
    そんなパッケージは入ってないって。
  2. # cp /usr/share/doc/apache2/examples/ssl.conf.gz /etc/apache2/sites-available/
  3. # cd /etc/apache2/sites-available/
  4. # gunzip ssl.conf.gz
  5. # mv ssl.conf ssl
  6. # a2enmod ssl
  7. # vi ssl
  8. # a2ensite ssl
  9. # /etc/init.d/apache2 reload
  • この時点でSSLはまだ機能してない。(2007-05-09 13:40頃)
    たぶんsslの設定ファイルの記述ミス。
    あとでちゃんと設定する。取り急ぎメモ。

vsftpdインストール(2007-07-04)

友達がファイル転送しやすいように、ちょいと仕込み。
参考:ホワット・ア・ワンダフル・ワールド
参考:Redhat9.0 : vsftpdの設定
参考:パソコンおやじ

  1. インストール
    # apt-cache search vsftpd
    # apt-get update
    # apt-get upgrade
    # apt-get install vsftpd
  2. コンフィグファイル編集
    # cp -a /etc/vsftpd.conf /etc/vsftpd.conf.ORG
    # vi /etc/vsftpd.conf
    listen_port=数字
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    ascii_upload_enable=YES
    ascii_download_enable=YES
    ftpd_banner=Welcome uhihi.
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/vsftpd.user_list
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    ls_recurse_enable=YES
  3. 追加処理書きなぐり。
    # touch /etc/vsftpd.chroot_list
    # echo "username" > vsftpd.user_list
    # chmod 600 /etc/vsftpd.*
    # /etc/init.d/vsftpd restar

ローカル環境のDNSサーバにしたい(まだやってない:2006-10-12)

あれこれメモ

これからやること(2006-10-12)

  1. ワーニングらしき音の対応
    2006-10-01 3:30頃、妙なビープ音。
    要調査。
  2. rcsで各種設定ファイルのバージョン管理
    入れちゃおっかどうしよっか。

とりあえず時刻同期(2006-11-06)

http://slashdot.jp/article.pl?sid=06/06/12/2111252

  • ntpdate
    ほったらかしてたらめっちゃ時刻ずれてた。
    ntpd走らせようかなぁ。
    まーとりあえず思い立ったが吉日ってクチにはこう。
    # ntpdate ntp.nict.jp
  • hwclock
    ハードウェアクロックの時刻も同期させておく。
    # hwclock --systohc
  • cronで (2007-05-04)
    # vi /etc/cron.weekly/ntpdate
      #!/bin/sh
      /usr/sbin/ntpdate ntp.nict.jp
      /sbin/hwclock
    # chmod 755 /etc/cron.weekly/ntpdate

ディストリビューションのバージョン確認方法(2006-09-30)

ubuntuはdebian派生ディストリビューションだと聞いてたので、/etc/debian_versionを見ればディストリビューションとしてのバージョンが何なのか確認できると思ってた。
しかしDapper Drakeの該当ファイルを見てみると、

# ls /etc/*version
/etc/debian_version
# cat /etc/debian_version
testing/unstable

とか。なんだそりゃっ
ちょっと調べてみると、この頃の世相に沿ってLSB(Linux Standard Base)の準拠を謳うディストリビューションは、lsb_releaseってファイルに書くみたいね?

# ls /etc/*release
/etc/lsb-release
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=6.06
DISTRIB_CODENAME=dapper
DISTRIB_DESCRIPTION="Ubuntu 6.06.1 LTS"

ちなみに、どちらのファイルも属しているパッケージは「base-files」のよう。

# dpkg -S debian_version
base-files: /etc/debian_version
# dpkg -S lsb-release
lsb-release: /usr/share/doc/lsb-release/changelog.Debian.gz
lsb-release: /usr/share/doc/lsb-release/copyright
base-files: /etc/lsb-release
lsb-release: /usr/share/doc/lsb-release
lsb-release: /usr/share/doc/lsb-release/README.Debian

参考URL

Linux拡散メモ

Windows 2000 の載った古いノートPCがウイルスにやられて使えない状態になった友達(PC素人)に、酔狂でLinux(ubuntu Edgy)に載せ替えて使わしてみてる。(2007-02)
自宅デスクトップとして使用するLinuxの具合をメモしてみる。
Linux拡散メモ

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS