Ubuntu 10.04 desktop の環境設定メモ

Ubuntu 10.04 desktop の環境設定についてのメモ

情報が錯綜していてわかりにくいと思ったら、Ubuntu 7.04 から bash (デフォルトのシェル)の設定をしているファイル名が変わっていたようです。

要は、「 Ubuntu 7.04 で ~/.bash_profile のかわりに ~/.profile となった。ただし、~/.bash_profile が存在する場合は ~/.bash_profile を読み込む」ということになります。

Ubuntu 10.04 の時点でどうなっているのかわかりませんが、少なくとも Ubuntu 10.04 desktop のインストール直後は ~/.bash_profile は存在しません。bash での環境変数の設定は ~/.bash_profile で説明されていることが多いので、~/.profile に読み替えておけばよさそうです。

なお、どちらのファイルもドットファイル(隠しファイル)ですから、ls -a や ls -al としないと表示されません。

環境変数にパスを通す方法は、一旦シェル変数に設定して、export で環境変数へという手順のようです。 ~/.profile に書き込んでしまう場合は、ファイルを修正して、 source ~/.prifile

実際にローカルの仮想マシンで書き換えたのは、gedit で ~/.profile の末尾に次の4行を追加

PATH=”$PATH:/home/makisima/texlive/2010/bin/i386-linux”
MANPATH=”$MANPATH:/home/makisima/texlive/2010/texmf/doc/man”
INFOPATH=”$INFOPATH:/home/makisima/texlive/2010/texmf/doc/info”
export PATH MANPATH INFOPATH

export の行を忘れると環境変数に反映されません。なお、それぞれのパスはインストールの都合上、標準的でないパスにしてありますのであしからず。ファイルを書き換えたら、

source ~/.profile

です。

最近の Linux ディストリビューションは環境設定を特にしなくても、それなりに動いてしまうところが便利でもあり、落とし穴でもありですね。

(2010.11.15)

Apache2 mod_rewrite と AllowOverride

仮想マシン上の WordPress でパーマリンクをデフォルトの (?p=番号) 形式以外にすると動かない件、考えてみるに、

  • Apache mod_rewrite

が入っていないのかもしれません。

仮想マシンは Ubuntu 10.04 desktop に tasksel で Apache、PHP、MySQL を入れたもので、WordPress の動作要件を調べていませんでした。

Apache の mod_rewrite が入っているかどうかの調べ方ですが、ターミナルで httpd -l としたら、そんなコマンドはありませんと言われてしまいました。

$ ps -e

でプロセスを調べたら、 apache2 という名前でした。

$ apache2 -l

Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

ということで、静的には mod_rewrite が入っていません。しかし、 mod_so があるので動的にロードしているかもしれません。

動的なモジュールも表示してくれる apache2 -M は受け付けてくれませんでした。どうやら、 apache2ctl というコマンドを使うようです。

$ apache2ctl -v  (バージョン)
$ apache2ctl -V (バージョン、環境)
$ apache2ctl -l  (静的モジュール)
$ apache2ctl -M  (静的・動的モジュール)

どれも実行可能でした。

$ apache2ctl -v
Server version: Apache/2.2.14 (Ubuntu)
Server built:   Sep 28 2010 12:52:38

Apache2 のバージョンは 2.2.14 ということです。

「動的共有オブジェクト (DSO) サポート」というそうですが、今動いているモジュールを調べると、

$ apache2ctl -M
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
reqtimeout_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK

残念ながら mod_rewrite は入っていないようです。

それで、モジュールをどうやって有効にするのか。

Google 「ubuntu apache2 mod_rewrite」

と検索したら、

$ sudo a2enmod rewrite

とするようです。man a2enmod で調べると、逆は a2dismod だそうです。実行すると、

$ sudo a2enmod rewrite
[sudo] password for … :
Enabling module rewrite.
Run ‘/etc/init.d/apache2 restart’ to activate new configuration!

ということで、apache2 を再起動です。

$ sudo /etc/init.d/apache2 restart
$ apache2ctl -M

rewrite_module (shared)

mod_rewrite を有効にして再起動に成功したらしいので、WordPress を動かしてみます。

まだパーマリンクがデフォルトの (?p=数字) 形式しか動きません。

よく見ると、404 Not Found のページが WordPress ではなく Apache/2.2.14 から報告されています。これはどうやら Apache の設定をいじらなければならないような雰囲気です。WordPress が動き始めたときも、ルートの index.php が有効にならずに index.html が優先されたままだったので、おかしいなとは思っていました。 これは、.htaccess が有効になっていません。

などで検索。

これらを参考に、Apache の設定ファイル 「/etc/apache2/sites-available/default」 を sudo gedit で開き、AllowOverride のところを None から All へ変更。

<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
#	AllowOverride None
	AllowOverride All
	Order allow,deny
	allow from all
</Directory>

それから、apache2 を再起動

$ sudo /etc/init.d/apache2 restart

これでルートディレクトリの .htaccess が有効になり、WordPress が生成する動的なページ群が有効になりました。日付 + スラッグ のページ指定できちんと見えます。

(2010.11.13)

WordPressの引越―仮想マシンにクローンを作る

ローカルの仮想マシンに WordPress を引っ越してみます。ふつう逆だろうという突っ込みをしたくなりますね。ローカルでテストしてからインターネットに公開するのが手順というものです。それだといつまでたっても、こんどまた、で永遠に取りかかりそうになかったので…

に沿ってやればできそうです。

データのバックアップについては WordPress のバックアップ でやったとおり。

次が wp-config.php の編集になっていますが、その中身を見ると、MySQL の設定情報です。先にローカルの仮想マシンで、MySQL を最低限は設定してやらなければならないということですので、

を参照します。仮想マシンの phpMyAdmin は、ゲストの仮想マシン上では

http://localhost/phpmyadmin/

や、ホストマシンからなら

http://192.168.56.102/phpmyadmin/

でアクセスできるようにしました。「仮想マシンに LAMP を入れる tasksel」や「VirtualBox “ホストオンリー ネットワーク インターフェースの作成に失敗しました”」 で苦労したとおりです。

WordPress の解説に戻ると、「データベース」から「新規データベースを作成する」。次に「特権」から「新しいユーザを追加する」で追加して、特権をデータベース固有にするらしいのですが、何をやっているのか今ひとつよくわからないので、そのまま引用しておきます。

  1. WordPress 用のデータベースが左側のデータベースドロップダウンリストになければ、作成します:
    1. WordPress データベースの名前を決めて (例えば ‘wordpress‘)、新規データベースを作成するフィールドに入力し、作成をクリックしてください。
  2. 左上のホームアイコンをクリックしてメインページに戻り、特権をクリックしてください。もし WordPres s用のユーザーがまだ存在しなければ、作成します。
    1. 新しいユーザーを追加するをクリックしてください。
    2. WordPress のユーザー名を決めて (例えば ‘wordpress‘)、ユーザー名フィールドに入力します (テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。
    3. 推測しづらいパスワードを決めて (大文字、小文字、数字、記号を組み合わせたものが理想的です)、パスワードフィールドに入力してください(テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。それからもう一度入力してくださいフィールドにパスワードを再入力してください。
    4. ユーザー名とパスワードをメモしておきましょう。
    5. グローバル特権のすべてのオプションはデフォルトのままにしておきましょう。
    6. 実行するをクリックしてください。
  3. 特権画面に戻ったら、先ほど WordPress 用に作成したユーザー名の右にある特権を編集アイコンをクリックしてください。データベースに固有の特権セクション内にあるデータベースに特権を追加ドロップダウンから、先ほど作成したデータベース名を選択してください。ページはそのデータベース用に更新されます。すべてチェックするをクリックしてすべての特権を選択したら、実行をクリックしてください。
  4. 結果ページで、ページの上部にあるサーバ:の後に続くホスト名を確認してください (通常は localhost)。

となっていますが、4 の localhost は、2 でユーザを追加するときに、「ローカル」 localhost を明示的に指定するからそうなるのではないかと思われます(解説には書いてありません)。

さて、MySQL の設定がうまくいっているのかどうかわかりませんが、ファイルと SQL の編集に移ります。

wp-config.php を編集します。

データベースの .sql ファイルをエディタで開き、 www.makisima.org を localhost に置換します。今回はローカルホストで動かしてみることが目的なのでこれでかまいませんが、もともと存在したであろう localhost と区別がつかなくなるので、あまりよい方法ではありません。ユニークな文字列になっていたほうがよいですね。また、 URL としてではなく地の文で www.makisima.org と言及している部分を判別するのは困難です。正規表現を駆使すればできるのかもしれませんが。このあたりの書き分けは、今後、文章を書くときにも考慮したほうがよさそうです。

WordPress のファイルを仮想マシンにアップロードします。

アップロード… FTP サーバを入れていませんでした。FTP (に類似のサーバ)を入れてもいいですし、ホストマシンとファイルを共有してもかまいません。ホストとのファイル共有は別項 「ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)」 にて。

SQL のほうは

にしたがって行います。ログインは上で作った wordpress 用のアカウントです。

phpMyAdmin でデータベース名を選択します。その後でインポートする .sql ファイルを選択、アップロード実行します。

phpMyAdmin でデータベースを選択、さらに ‘wp-options’ テーブルを選択し、’site_url’ と ‘home’ の値を確認します。必要に応じて書き換えます。

デフォルトの index.html があると、apache がそちらを優先して表示する設定になっているかもしれません。その場合、とりあえずは index.html の名前を変えてブラウザのキャッシュを消去すれば WordPress の index.php が表示されるようになります。実際には、Apache の設定で AllowOverride None になっていて .htaccess が有効になっていない可能性が高いと思われます。(cf. Apache2 mod_rewrite と AllowOverride

WordPrss がサブディレクトリにインストールされていて、それでもトップになるようにしている場合、つまり、

のようになっている場合は、サブディレクトリの URL に相当するアドレスのほう( http://localhost/wp/ )で WordPress にログインできるかもしれません。ログインは WordPress のユーザ名で行います。WordPress の管理画面になれば、とりあえず再設定できるようになります。仮想マシンの localhost のルート (/var/www)  に .htaccess や index.php をきちんとコピーして設定する必要があります。

.sql をアップロードしたあとの設定方法は、なんとなくやっているうちに WordPress が動くようになったので、何がどう功を奏しているのかわかりません。クローンが仮想マシンで動いたので結果オーライということで…  🙂

サブディレクトリに配置した頃のメモ書きは wiki (第2巻)のほうです。

さて、すくなくとも、バックアップの方法が間違っていないこと、バックアップから復元できること、サーバの引越ができることは確認できました。これで、テスト用のサーバとして仮想マシンが使えます。

と喜んでいたら、パーマリンクが「デフォルト」 (?=数字)でないと動きません。とほほ。ということで、続きます……

(2010.11.13)

ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)

VirtualBox にファイルの共有があります。ホスト OS と ゲスト OS でファイルを共有できます。

仮想マシンをシャットダウンした状態で、仮想マシンの設定にファイル共有が現れます。ホスト OS 側の適当なフォルダを選択します(パスに日本語や空白を 含まないほうが無難かもしれません)。共有フォルダ名をメモしておきます。今回は “share_VirtualBox” ですが、クリップボードにコピーしておくと便利です。

共有設定すると、ゲストの Linux でのマウントの方法と、それには Guest Additions がインストールされていなければならないことが表示されます。

仮想マシンを起動すると、仮想マシンのウィンドウに「デバイス」があり、「Guest Additions のインストール…」という項目があります。これを選択すると、インストーラのファイル類が仮想の CD-ROM としてマウントされます。/media にマウントされます。ターミナル(端末)を起動して VBOXADDITIONS~ ディレクトリの中に入ります。今回は、

$ CD /media/VBOXADDITIONS_3.2.10_66523

でした。その中に各種 OS 用のインストーラがあります。今回は Ubuntu 10.04 desktop (32bit) なので、VBoxLinuxAdditions-x86.run を選びます。

$ sudo ./VBoxLinuxAdditions-x86.run

これでいいのかどうかよくわからないのですが、動いたようです。インストールにはしばらく時間がかかります。root 権限がいるので、ファイル・ブラウザでファイルを直接ダブルクリックしても実行できません。Windows ユーザは、Linux で実行ファイルを実行するときにはカレントディレクトリの ./ を付加しなければいけないことを忘れがちですね。

再起動を要求するメッセージが表示されるはずなので、仮想マシンを再起動します。

仮想マシンのウィンドウが広くなりました。Guest Additions を導入すると、ホスト側のディスプレイ情報をゲストに渡すようです。また、ホスト側 Windows とゲスト側 Ubuntu とでコピー&ペーストできるようになります。

Guest Additions が動いているので、上で設定した共有フォルダ “share_VirtualBox” を /mnt 直下にマウントしてみます。

$ sudo mount -t vboxsf share_VirtualBox /mnt

エラーがなければ成功しています。ためしに、

$ ls /mnt

すると、Windows 側のファイルが見えています。

ファイルをコピーするには cp コマンドに再帰オプション -r でもかまいませんが、ファイル・ブラウザを使ったほうがエクスプローラ風に扱えて楽です。ただし、ファイル・ブラウザで「隠しファイルを表示する」設定にしておかないとドットファイル( .htaccess など)が漏れてしまうので注意が必要です。

(2010.11.13)

(追記 2011/7/25)

久々に、(ホスト)Windows 7 + VirtualBox 4.1 + (ゲスト)Ubuntu 11.04 Desktop 日本語 でやってみました。

Guest Additions のインストール

VirtualBoxのウィンドウ上部の「デバイス」メニューから 「Guset Additions のインストール」 を選択、促されるままに「はい」「はい」進めると、GUI だけで Guset Additions のインストールが完了しました。ホスト・ゲスト間でコピー&ペーストできます。

ホスト・ゲスト間の共有フォルダ

いったんゲストのUbuntuをシャットダウン。「Oracle VM VirtualBox マネージャー」ウィンドウからゲストマシンを選び、「共有フォルダ」をクリック、「新規共有フォルダを追加」アイコンから、ホストのフォルダを指定。このとき「自動マウント」にチェックを入れておきます。ゲストマシン Ubuntu の電源を入れると、ログイン直後に共有フォルダがマウントされた状態になっています。場所は /media の下。

(2011/7/25) (2011/9/29)

VirtualBox “ホストオンリー ネットワーク インターフェースの作成に失敗しました”

Windows 7 上の VirtualBox 3.2.10 r66523 で、

ホストオンリー ネットワーク インターフェースの作成に失敗しました。

というエラーが出てしまう問題が発生しました (2010.11.12)。

Google “ホストオンリー ネットワーク インターフェースの作成に失敗しました”

で検索したところ2件がヒットしました。2件ということは、他の人はこのエラーにはまっていないか、さらっと対処できたということなんでしょうね。その2件に、対応する英語のエラーメッセージらしきものを発見。英語のメッセージで再度検索しました。

Google “Failed to create the host-only network interface”

こちらは984件! 一番上を開いてみました。すると、バージョンがやや古い(2.2)ながら、同じ現象で苦しんでいるという書き込みでした。

[2.2] VirtualBox Host-Only Network adapter not created (View topic) • virtualbox.org

順に読んでいったところ、ずっと後ろのほうで、強制的に Windows のデバイスとして追加する方法の書き込みがありました。

Re: [2.2] VirtualBox Host-Only Network adapter not created

Postby ink » 26. Feb 2010, 16:26
Just fixed this for myself, hope it helps others having the same problem :

Control Panel > Add New Hardware > (New network adapter)
Have Disk > (point it to C:\Program Files\Sun\VirtualBox\drivers\network\netadp\VBoxNetAdp.inf)
Select > VirtualBox Host-only Ethernet Adapter > (Say OK to install the unsigned driver)

Apparently no need to reboot, so good luck all!

ということで、Windows のコントロールパネルから手動で無理矢理(?) 追加してしまうというもの。Windows 7 ではデバイス マネージャから追加ですし、「ディスクから追加」のパスも …\Sun\… ではなく …\Oracle\… ですが、 VBoxNetAdp.inf がありました。これを開くと、「VirtualBox Host-Only Ethernet Adapter」が現れます。追加すると、VirtualBox でも VirtualBox Host-Only Ethernet Adapter が選択肢に現れ、VirtualBox でホストオンリー ネットワークを設定できるようになりました。成功!

そういえば、最近、Sun が Oracle に買収されて、「証明書」が無効になったが処理を続けるのか、どうする?というようなエラーメッセージを見たような記憶があります。もしかして、そのせいかも?(未確認)。

もともと何をやりたかったかというと、ゲスト OS の Ubuntu で動かしている web サーバ類 (Apache, PHP, MySQL) に、ホスト OS の Windows 側からアクセスしたかったわけです。しかし、ホストのマシン以外からはゲスト マシンにはアクセスさせたくなかったのです。ゲストは外のネットワークから隠しておきたい。そういう場合、Google 「virtualbox ネットワーク」 で設定方法を解説したページはたくさん見つかります。たとえばこんな感じです。

「アダプタ1で”NAT”を、アダプタ2に”ホストオンリーアダプタ”を選択」すればよいのですが、アダプタ2でエラーが発生して困っていたのでした。

意図したとおりに動いているかどうか、念のため確認しました。ゲスト OS の Ubuntu のターミナルで ifconfig を実行すると、eth1 が 10.0.2.15、eth2 が  192.168.56.102、lo が 127.0.0.1 となっていました。ホスト OS の Windows から eth2 の 192.168.56.102 でアクセスできました。LAN の他のマシンからはこのアドレスでアクセスできませんでした。設定は成功したようです。 🙂

(2010.11.12)