ubuntu作業 のバックアップソース(No.3)

※※このサイトは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版でよしとすることに。
~その端末での作業記録を、自分用に残していきます。
何かの場合に同じ作業をたどれるように。
 ※内容に関して指摘・コメントなどございましたらどうぞ。
#comment

#hr

#contents

*環境
|マシン|エプソンダイレクト Endeavor NT-1000|
|OS|ubuntu-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のパッケージを組み込む。
+/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
+ubuntu-jaのGPGキーのインストール
 # apt-get install ubuntu-ja-keyring
+もいっちょアップデート(今入れたGPGキーを有効にする)
 # apt-get update
+ubuntu-desktop-jaのパッケージをインストール
 # apt-get install ubuntu-desktop-ja
+パッケージのアップグレード
 # apt-get upgrade
+/etc/X11/xorg.confを適切に変更(日本語キーボードの場合のみ)
「Option "XkbModel" "pc105"」を「Option "XkbModel" "jp106"」
+追加でsshdを入れてどっからでも操作できるようにする。
 sudo apt-get install openssh-server
/etc/ssh/sshd_config に、希望の設定をする。
俺にとってのミソは下記。
--Port
--PermitRootLogin
--PermitEmptyPasswords
--AllowUsers

**起動設定の変更
+GUI起動をとめる。
S13gdm --> K13gdm
+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ってやつも一緒に削除されるもよう。

**ユーザ管理関係
+rootユーザを有効にする。
 $ sudo passwd root
+ユーザを作る
--GUIでやる
GNOMEのシステムメニューとかその辺で直感的にできたはず。
--CUIでやる
[[参考:ヨシオオ日記 2006-11-12>http://d.hatena.ne.jp/yoshioo/20061112]]
ここ見て、実際にやってみて確かにびびった。
しかしちょっと調べてみると、コマンドラインでユーザ作成する場合、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作業する際にはテストとチェックをすべしってことだな。
+各ユーザのHISTSIZEを大きくする
--~/.bash_profile に追記。
 export HISTSIZE=10000
rootは.bashrcにでも。
つーか、新規ユーザ作る前に/etc/skel/配下のそれぞれを書き直すべきな。
--後々のmutt導入の下準備
/etc/skel/ 配下に下記を配置しておく。
 # mkdir /etc/skel/tmp
 # mkdir /etc/skel/.mutt
 # vi /etc/skel/.mutt/muttrc   ※あれこれ参考にして書くべし

**rsyncで特定ディレクトリを同期したい
[[参考:rsyncのREADME邦訳>http://www.infoscience.co.jp/technical/rsync/README.html]]
[[参考:Backup by rsync (+ssh)>http://www.double-h.com/linux/tipsmemo/others/general01.html]]
[[参考:rsyncによるミラーリングの設定>http://ash.jp/freebsd/rsync.htm]]
[[参考:パソコンおやじ - Rsyncによるデータバックアップ>http://www.aconus.com/~oyaji/backup/rsync.htm]]
-バックアップ元もバックアップ先も同じユーザという前提で。
 $ rsync -avzr -e "ssh -p ***" --delete --force /home/user/dir hostname:/home/user/dir
初回実行はけっこう時間かかるそうな。
マクドナルドの無線LANでやったら118MBぐらいのデータが10分もかからんかったはず。
次回以降は差分同期してくれるそうな。
**SMTPが動くようにしたい(書きかけ:2006-10-12)
使うMTAはpostfix。
+''インストール''
 # 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)を実施し始めてるから、自宅サーバの場合はスマートホストを指定したほうがいいはずね。
+''設定''
とりあえず
 # dpkg-reconfigure postfix
してみた。
インタラクティブ(対話的)に設定項目の入力画面が進み、下記のように処理されるような入力内容にした。
 setting synchronous mail queue updates: true
 setting myorigin
 setting destinations: redhot.dip.jp, redhot, localhost.localdomain, localhos
 setting relayhost: (うちのISPのSMTPサーバ)
 setting mynetworks: 127.0.0.0/8
 setting mailbox_size_limit: 0
 setting recipient_delimiter: 
 setting inet_interfaces: all
 setting inet_protocols: all
その後の設定は
http://www.deer-n-horse.jp/linux/tips/postfix.html
ここらへんを参考にしてみよっかな。
(書きかけ:2006-10-12)
+「ユーザ管理」のところでは触れなかったけど、/etc/default/useradd の中には CREATE_MAIL_SPOOL なんていう変数がある。
postfixインストール後に、既存ユーザのメールスプールを作る方法ってどんなだ?
後で調べよう。
+メールの読み書きを楽にするためにmutt入れちまおう。
 # apt-get update
 # apt-get install mutt

**Apache、MySQL、PHP、PostgreSQL (書きかけ:2006-11-30)
[[参考:Life is a Gamble>http://gtd.studiomohawk.com/tag/ubuntu]]
***パッケージインストール
-''まずはとっつきやすいパッケージをインストール''
 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のドライバーインストール>http://d.hatena.ne.jp/veryberry_cafe/mobile?date=20061123]] //めっちゃありがたい。
[[参考:Harmonic Howl - 2006-11-24>http://d.hatena.ne.jp/eccoHowling/20061124]] //これまたありがたい
[[PECL(ぴっくる)>http://d.hatena.ne.jp/keyword/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
***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>http://dozo.matrix.jp/pear/index.php?PECL%2Fpdo%2Fdriver]]さんの「ハマリどころ 」を参考に下記のように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 > 日本語関連の動作設定 >http://docs.sugarforum.jp/index.php?%C6%FC%CB%DC%B8%EC%B4%D8%CF%A2%A4%CE%C6%B0%BA%EE%C0%DF%C4%EA]]
[[参考:PHP/tips/日本語環境php.ini設定>http://wiki.ohgaki.net/index.php?PHP%2Ftips%2F%C6%FC%CB%DC%B8%EC%B4%C4%B6%ADphp.ini%C0%DF%C4%EA]]
上記リンクを参考に下記を記述。
 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)
***apache2のconf調整
[[参考: トサ日記(tech side) [utuntu] Apacheインストール/設定>http://goww.blogspot.com/2006/04/utuntu-apache.html]]
[[参考:Ubuntu 6.06 "Dapper Drake"インストール個人的ノート>http://www.a.phys.nagoya-u.ac.jp/~taka/linux/ubuntu606.html#apache]]
[[参考:[ubuntu-jp] apache2でcgiの設定>https://lists.ubuntu.com/archives/ubuntu-jp/2006-October/000161.html]]
 ~# 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らしい。
+''パスワード設定''
インストール直後はユーザ「root」がパスワードなしでmysqlプロンプトに入れる。
 mysql> set password for root@localhost=PASSWORD('oreore');
 mysql> flush privileges;
+''設定ファイルについて''
--''まずは調査''
EUC-JP、UTF-8と、扱う文字コードの異なる各種WebアプリケーションをMySQLで扱うために良さげな設定を探る。
[[参考:トサ日記(tech side) -  [ubuntu] MySQLのインストール>http://goww.blogspot.com/2006/04/ubuntu-mysql.html]] // 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>http://tsuttayo.sytes.net/mysql/install/linux/rpm2.html]])。
別のところであった記述によると「init-connect="SET NAMES utf8"」を記述するのも手の一つらしい([[参考:Rauru Blog - MySQL 入れ直し>http://wordpress.rauru-block.org/index.php/46]])が、突っ込んで調べてみると「init-connect」は文字コードのことのみならず、クライアントが接続時に、自動的にサーバー内部で実行される SQL 文を指定するものらしい([[参考:MyNA Web Site - Top / FAQ>http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#n46f9fc8]])。
--''設定をして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」ってところは、外部ネットワークからの接続を許可したくないならそのままでいい(コメントされてたら外すべし)。[[参考:おもにパソコンのこと>http://rihi.cocolog-nifty.com/blog/2006/09/_mysql_86fb.html]]
~しかしxoops設置時に文字化け問題発生(2006-12-20頃)。
モジュール追加やユーザ情報変更をしようとすると、ブラウザからの日本語入力後のデータ更新が全て化ける。
xoopsだろうと他のwebアプリだろうと色々動かせるようにと思って暫定対処として
[[参考:ぱんぴーまっしぐら>http://puchiko.lowtech.ne.jp/?itemid=349]]
あたりを参考に、データ格納時にクライアントの文字コードに左右されないようにするって趣旨で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
+''上記を受け、文字コード対策にデーモンを複数起動''
--''mysqld_safe を使って、一般UNIXユーザでデーモン起動するまで''
mysqlデーモンをキックするコマンドというかスクリプトの中には mysqld_safe っていうやつがいるらしく、こいつを使えば例えばUNIXユーザそれぞれが自分用のデーモンを起動する、なんてこともやりやすいみたい。
[[参考:4.2. 同じマシン上で複数の MySQL サーバを実行する>http://mirrors.dotsrc.org/mysql/doc/refman/4.1/ja/multiple-servers.html]]
[[参考:あおたけめも置き場>http://www.bmath.org/modules/wordpress2/index.php?p=21]]
---''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スクリプトを作成''
[[FreeBSDのメーリングリストの記事>http://lists.freebsd.org/pipermail/freebsd-questions/2005-May/086676.html]]を参考(ほぼ完全コピー)にして、下記のように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
+''phpMyAdminを導入''
[[参考1:Perl Tips>http://perltips.twinkle.cc/php/phpmyadmin_28x.php]]
[[参考2:Toyoaki's RC 2006年03月20日phpMyAdmin 2.8系の設定>http://www.tserver.jp/archives/2006/03/001313.html]]
[[参考3:☆お便利.com☆>hphppMyAdminのインストール>http://www.obenri.com/_lamp/phpmyadmin.html]] //超絶ありがたい。
++ソースパッケージを入手
[[phpMyAdmin Project 
のダウンロードページ>http://www.phpmyadmin.net/home_page/downloads.php]]から適当にダウンロード。
俺は最新版2.9.1.1-all-languagesを持ってきた。
++展開
パッケージをドキュメントルート以下のどっかに適当に展開して適当にディレクトリ名変更。
仮に、phpMyAdminの構成ファイルを設置するディレクトリを/var/www/hogephp/とする。
++セッティングの下準備
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化はあとで考えよう。
++必要設定を施す
+++http://localhost/hogephp/scripts/setup.php の画面で「Server」の項にて「Add」をクリックする。
「Server hostname」の項は「localhost」のままでいい。
「Authentication Type」の項は「cookie」を選択する。
他の項目は特にいじらなくて良い。
そのまま画面下部の「Add」をクリックで決定する。
+++元のページの「Configuration」の項にて「Save」をクリックで設定を保存する。
この操作により、さっき作ったディレクトリ/var/www/hogephp/config/ の配下にconfig.inc.phpが作成される。
+++/var/www/hogephp/config/config.inc.php を /var/www/hogephp/直下に移動する。
+++http://localhost/hogephp/ にアクセスして、ログインページが表示されることを確認する。
+''色々遊ぶようのユーザ作成''
http://localhost/hogephp/ にて
++MySQLのrootでログインしてユーザ作成
+++ログイン後のメニューから「特権」をクリック。
+++「ユーザを追加する」をクリック。
+++「ログイン情報」を任意で設定する。
「ユーザ専用データベース」は「同のデータベースを作成してすべての特権を与えます」にチェック。
「グローバル特権」は「データ」「構造」の項を全部空にする。
「リソース制限」は初期値のままで。
上記の設定で「実行する」のボタンをクリック。
+''作ったユーザで、遊ぶようのDBを前もって作成しておく''
++「データベース」画面へ移動。
++画面下部の「新規データベースを作成する」で任意の名前をつけて「作成」ボタンをクリック。
++「サーバlocalhost」> 「特権」と画面移動し、対象ユーザの特権を編集するモードにする。
++「データベース特定特権」の項の「データベースへ特権の追加する」にて、上記で作ったデータベース名を選択する。
遷移した画面で全ての特権をチェックして「実行する」ボタンをクリックする。
+''テスト''
--試しに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が無いってでワーニングが出てた。
[[ここ>http://group-office.jp/install_manual.html]]みながら、とりあえずインストーラの示す手順に従ってりゃだいじょぶそう。
***PostgreSQLの調整
(2006-11-30書きかけ)
+''パスワード設定''
+''設定ファイルを調整''
+''phpPgAdminを導入''
+''色々遊ぶようのユーザ作成''
+''作ったユーザで、遊ぶようのDBを前もって作成しておく''

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

*あれこれメモ
**これからやること(2006-10-12)
+ワーニングらしき音の対応
2006-10-01 3:30頃、妙なビープ音。
要調査。
+rcsで各種設定ファイルのバージョン管理
入れちゃおっかどうしよっか。

**とりあえず時刻同期(2006-11-06)
http://slashdot.jp/article.pl?sid=06/06/12/2111252
-ntpdate
ほったらかしてたらめっちゃ時刻ずれてた。
ntpd走らせようかなぁ。
まーとりあえず思い立ったが吉日ってクチにはこう。
 # ntpdate ntp.nict.jp
-hwclock
ハードウェアクロックの時刻も同期させておく。
 # hwclock --systohc

**ディストリビューションのバージョン確認方法(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
-http://www.debian.org/doc/manuals/reference/ch-gateway.ja.html
Debian リファレンス - ネットワークの設定
超細かい。
-http://www2.i-e-c.co.jp/
Debianサーバ構築ガイド。
-http://tobysoft.net/wiki/index.php?Ubuntu
手順をおっかけれる。
-http://d.hatena.ne.jp/higepon/20060813/1155483927
手順おっかけれる。
-http://wwwod.lowtem.hokudai.ac.jp/comp/index.html
色々便利そうなメモがある。
トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS