Vine Linux 2.6で稼動しているサーバの OS を、Ubuntu Linux 7.10 Desuktop Edition へ置き換える作業のメモです。備忘録として書いておきます。何か参考になる内容があれば幸いです。
dump コマンドを用いて、システム全体のバックアップを取得します。ログファイルなど、不要なファイルは予め消しておくと、dump サイズが小さくなって良いです。
詳しいコマンドの使い方は、「Linuxをシステムバックアップ」をご覧ください。
dump が取得できたら、他の PC など適当な場所に移して、保存しておきます。
dump によるバックアップと重複しますが、手軽に使えるバックアップとして、必要なディレクトリを tar アーカイブ化しておきます。うちは、Web コンテンツ用のディレクトリを対象にしました。また、mysql のデータは、mysqldump を用いて SQL 出力しておきます。これで、移行先の RDBMS の種類による制約は、ほぼないでしょう。
公式サイトから 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
これは、以前と変わらないので、特に問題ないです。ただ、設定のしかたを思い出すまで、結構時間がかかりました。滅多にいじらないものなので...
外向けの A レコードに、プライベートアドレス書いてました。はずかしー(//−−//)
従来の 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
参考ページ
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(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)の形式に直したら、正しく動きました。
原因はご察しのとおり、apache のモジュール不足です。rewiteEngine が使えない状態でしたので、使えるようにしました。モジュール自体は標準で入っているはずなので、わざわざ探してこなくても良いです。
$ sudo a2enmod rewrite
いろいろ怒られました。
Your PHP installation appears to be missing the MySQL which is required for WordPress.
おまえの PHP は MySQL に繋がらないよ、というメッセージです。php5-mysql パッケージをインストールして、解決です。
$ sudo apt-get install php5-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の内容が正しく表示されました。
これは、うちの特殊ケースだと思いますが、歴史的経緯(WordPressでUTF-8対応必須)から EUC-JP で登録しているデータベースと、UTF-8 で登録しているデータベースがあります。諸々不都合があるので、この機会に統合しました。
今回は UTF-8 に統合するので、EUC-JP のデータベースに対応する dump データの文字コードを変換します。あとは、それをデータベースに取り込みます。また、呼び出し元のアプリケーションの文字コードを変更することも、忘れずに行ないます。
何も考えずに、最新版の Ruby1.9 を入れたら、どうも chomp が正しく動作していません。よく考えたら、奇数バージョンでしたので、1.9 を削除して、安定版である 1.8 をインストールしました。すると、無事問題は解決しました。