Vine2.6からUbuntu7.10へ移行

Vine Linux 2.6で稼動しているサーバの OS を、Ubuntu Linux 7.10 Desuktop Edition へ置き換える作業のメモです。備忘録として書いておきます。何か参考になる内容があれば幸いです。

現行環境のバックアップ

システム全体

dump コマンドを用いて、システム全体のバックアップを取得します。ログファイルなど、不要なファイルは予め消しておくと、dump サイズが小さくなって良いです。

詳しいコマンドの使い方は、「Linuxをシステムバックアップ」をご覧ください。

dump が取得できたら、他の PC など適当な場所に移して、保存しておきます。

個々のバックアップ

dump によるバックアップと重複しますが、手軽に使えるバックアップとして、必要なディレクトリを tar アーカイブ化しておきます。うちは、Web コンテンツ用のディレクトリを対象にしました。また、mysql のデータは、mysqldump を用いて SQL 出力しておきます。これで、移行先の RDBMS の種類による制約は、ほぼないでしょう。

Ubuntu のインストール

公式サイトから iso イメージをダウンロードして、CD を焼きます。CD 起動するとメニューが出てくるので、新規インストールを選ぶと、デスクトップ画面が現れます。そこで、デスクトップ上にある Install アイコンをダブルクリックすると、インストールが始まります。あとは、画面の指示に従い、インストールを進めます。Ubuntu のインストールはとても簡単なので、特に迷うところはありません。特筆するなら、Ubuntu では root ユーザーを設定しないことぐらいでしょうか。

アーカイブの展開

以前の環境の tar アーカイブを展開します。このさい、パーミッションを維持したまま展開するよう、-p オプションを利用します。

$ tar xfp homepage.tar
オプション意味
x展開
fファイル指定
pパーミッションを維持

パッケージのインストール

必要なパッケージをインストールしました。

パッケージは、"apt-cache search" を用いて探し、"apt-get install" でインストールします。

$ sudo apt-cache search apache
(パッケージ一覧が出力...)
$ sudo apt-get install apache2

bind9 の設定

これは、以前と変わらないので、特に問題ないです。ただ、設定のしかたを思い出すまで、結構時間がかかりました。滅多にいじらないものなので...

外向けの A レコードに、プライベートアドレス書いてました。はずかしー(//−−//)

apache2 の設定

従来の httpd.conf に一括して書く方法とは、異なっており、少し面食らいました。各サイトごとの設定は、sites-available ディレクトリ内で個別に書き込みます。

$ cd /etc/apache/sites-available
$ cp default main_site

ファイル内を適宜修正します。うちは、★印の箇所を変更しました。

ServerName omoshiro-joho.com ★
ServerAdmin webmaster@localhost

DocumentRoot /var/www/ ★
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/> ★
    Options Indexes FollowSymLinks MultiViews +ExecCGI ★
    AllowOverride ALL ★
    Order allow,deny
    allow from all
    # This directive allows us to have apache2's default start page
    # in /apache2-default/, but still have / go to the right place
    #RedirectMatch ^/$ /apache2-default/
</Directory>

その後は、default を無効にして、新しく追加した main_site を有効にします。

$ sudo a2dissite default
$ sudo a2ensite main_site

サブドメインを作りたい場合は、同様の手順で行ないます。

$ cd /etc/apache2/sites-available
$ sudo cp default sub_site
(sub_siteを編集)
$ sudo a2ensite sub_site

あとは、下記のコマンドで apache2 が無事起動すれば大丈夫です。

$ sudo /etc/init.d/apache2 start

参考ページ

pukiwki の設定

pukiwiki いろいろ不具合がでました。

内容が表示されない

以下のようなエラーメッセージが出て、内容が表示されません。

Headers already sent at /path/to/pkwk/lib/html.php line 425

調べたところ、下記のページを見つけました。

手順にならい、lib/html.php 内にある die_message を die に変更しました。すると、エラーメッセージが以下のように変わりました。

Cannot Open counter/...

これを見て、ファイルのオーナーが違うことに気づきました。tar で p オプション付きで展開したため、パーミッションは正しかったのですが、ファイルのオーナーが違っていたので、HTTP サーバのプロセスから正しく書き込みができなかったようです。

少しややこしいのですが、別のエラーに起因して、die_message() のエラーが現れる、ということみたいですね。本来のエラー要因を見えなくしてしまうので、ちょっと性質が悪いです。

&aname が直接表示される

見出し行の横にあるアンカーが、展開されずに直接表示されます。以下のような形です。

&aname(vf801b51,super,full)\{};

幸い、別のバージョンの pukiwiki では正常に表示していたため、違いを調べてみました。すると、&aname プラグインの呼び出し文字列を記述しているところ(lib/convert_html.php)が、以下のように異なっていました。

1.4.4_php5" &aname($id,super,full)\{$_symbol_anchor};";
1.4.5_1' &aname: Invalid ID string: '.$id.';';

実際、あいだに"\"を入れて&anameを書くと、展開されないので、これが原因のようです。ただ、単純に"\"を取り除くと、後続の"$"と結合してしまうのか、正しく動きません。というわけで、素直に下段(1.4.5_1)の形式に直したら、正しく動きました。

.htaccess で 500 エラー

原因はご察しのとおり、apache のモジュール不足です。rewiteEngine が使えない状態でしたので、使えるようにしました。モジュール自体は標準で入っているはずなので、わざわざ探してこなくても良いです。

$ sudo a2enmod rewrite

WordPress

いろいろ怒られました。

php5-mysql

Your PHP installation appears to be missing the MySQL
 which is required for WordPress.

おまえの PHP は MySQL に繋がらないよ、というメッセージです。php5-mysql パッケージをインストールして、解決です。

$ sudo apt-get install php5-mysql

mysqlの文字コード

Invalid argument supplied for foreach() 
in /var/www/prof/wp/wp-includes/capabilities.php

現象としては、エラーメッセージが出たり、管理画面にログインできなかったり、盛大に文字化けしたりと、様々です。

原因として、mysqlから読んだ文字コードが不正な状態となっており、その結果、ところどころで不具合が発生しています。mysql の文字コード指定を見ると、見事に latin になっていました。インストール時に utf-8 に指定した気がしたけど、それはテスト環境のみだったかもしれません。mysql での文字コード指定方法は「MySQL関連#tacb652a」をご覧ください。

MySQL の dump 内容自体は UTF-8 になっているので、MySQL の文字コード設定さえ修正すれば、不正な文字コード変換がなくなり、WordPressの内容が正しく表示されました。

MySQL の設定

これは、うちの特殊ケースだと思いますが、歴史的経緯(WordPressでUTF-8対応必須)から EUC-JP で登録しているデータベースと、UTF-8 で登録しているデータベースがあります。諸々不都合があるので、この機会に統合しました。

今回は UTF-8 に統合するので、EUC-JP のデータベースに対応する dump データの文字コードを変換します。あとは、それをデータベースに取り込みます。また、呼び出し元のアプリケーションの文字コードを変更することも、忘れずに行ないます。

Ruby のインストール

何も考えずに、最新版の Ruby1.9 を入れたら、どうも chomp が正しく動作していません。よく考えたら、奇数バージョンでしたので、1.9 を削除して、安定版である 1.8 をインストールしました。すると、無事問題は解決しました。


履歴


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-05 (土) 13:56:35