仮想マシンに LAMP を入れる tasksel

ローカルな仮想マシンに LAMP を入れます。LAMP は Linux、Apache、MySQL、PHP ですね。

ホストは Windows 7 Ultimate、VirtualBox で Linux は Ubuntu 10.04 desktop です。個人でローカルに動かして試すだけなら、Ubuntu server よりも desktop にサーバを入れたほうが日本語等の扱いが楽だと思います。試しに Ubuntu server を入れるなら、まずは英語にしておくのが無難です。

なお、以下、セキュリティは考慮していません。

tasksel で一括インストール

Apache、PHP、MySQL については順に一つずつインストールしてもかまいませんが、tasksel コマンドを使えば、一括で入れることができます。ターミナルで、

sudo tasksel

で、ソフトウェアの選択画面が出るので、上下の矢印で項目を移動し、

[*] LAMP server

にスペースキーでチェック [*] を入れます。[tab] キーで <了解> に移り、[Enter] 。

MySQL の root のパスワードを求められるので入力します。

あとは放っておくとインストールされます。

cf.

動作確認

Apache

Apache (httpd) は Firefox を立ち上げて、http://localhost/ にすると 「It works!」と表示されます。

その index.html は /var/www/ にあります。

ユーザ名が USERNAME なら、

cd /var/
sudo chown USERNAME -hR www

などとしておくとよいかもしれません。

PHP

taskset でインストールした場合(個別にインストールした場合も)、直後はまだ apache が PHP を認識していないので、再起動します。

sudo /etc/init.d/ apache2  restart

適当につくった PHP ファイルを実行させてみます。たとえば、

<?php

print(“hello\n”);

?>

を /var/www/hello.php と名前をつけて保存、ブラウザで URL に http://localhost/hello.php を指定すると、hello と表示されます。(上の例をコピー&ペーストするときは、二重引用符「”」のコードが書き換わっているかもしれないので、半角英数の通常の二重引用符で上書きすること)

環境設定一式を眺めるなら、次のような PHP が実用的です。ただし、セキュリティ上あぶないので、外部には公開しないことが前提です。

<?php

phpinfo();

?>

cf.

phpMyAdmin

MySQL を管理するのに phpMyAdmin をインストールします。

sudo apt-get  install  phpmyadmin

しばらくすると設定をきかれるので、

自動再設定をする web サーバ: [*] apache2

を選択。

phpmyadmin のデータベースを dbconfig-common で設定しますか? <はい>

<はい>を選択。

データベースの管理権限を持つユーザのパスワード:

パスワードを(複数回)入力。

apache を再起動します。

sudo /etc/init.d/ apache2  restart

ブラウザの URL に

http://localhost/phpmyadmin/

と入力すると、phpMyAdmin のログイン画面になります。上述の root のパスワードで入れます。ちなみに、information_schema、mysql、phpmyadmin の3つのデータベースが作られた状態でした。

cf.

(2010.11.10 – 2010.11.11)

このメモは Ubuntu 10.04 desktop の環境ですが、Ubuntu desktop 11.04 日本語版でもほぼ同じでした。(2011.8.9)

(2011.8.9) (一部修正・追記)

VirtualBox の仮想ハードディスクをコピーする

VirtualBox で仮想ハードディスクを丸ごとコピーして複製を作る方法

より

  1. Windows のコマンドプロンプトを開き、VirtualBox のフォルダ (“C:\Program Files\Oracle\VirtualBox\”) に移動。
  2. VBoxManage.exe  clonehd  元ファイル名.vdi  複製ファイル名.vdi
    を実行。.vdi のあるフォルダ(パス)は指定しなくてよい。
  3. 複製した.vdi で仮想マシンを起動: 「新規」作成で既存のハードディスクを選択、リストに出てこないので、さらに選択画面を開いて選択。

または、エクスプローラからのドラッグ&ドロップを併用するなら、

  1. Windows のコマンドプロンプトを開く。
  2. エクスプローラで、VBoxManage.exe をコマンドプロンプトにドロップ。
  3. 半角空白の間に、 clonehd
  4. エクスプローラでコピー元となる .vdi ファイルをドロップ。
  5. 半角空白を一つ入れ、コピー先のファイル名を入力。実行。

ということで、フルパスを指定して同様に実行されます。

スナップショット後のコピー

スナップショットをとったあとに上述のコピーを行うと、スナップショットをとる前の(最初の状態の)ハードディスクがコピーされます。スナップショットごとに別のハードディスクとして認識して、別々の UUID が割り振られているからです。任意のスナップショットの状態のハードディスクを得たい場合は、コピーにハードディスク名でなく UUID を使います。

まず、ハードディスクの UUID を調べます。

C:\Program Files\Oracle\VirtualBox>VboxManage  list  hdds

すると、ずらずらと UUID が表示されます。使いたいスナップショットを探し、その段落の一番上の行の UUID をマウスでコピーします。その UUID をコピー元として貼り付けます。

C:\Program Files\Oracle\VirtualBox>VboxManage  clonehd   コピー元の長いUUID  コピー先ファイル名.vdi

コピーされた HDD はスナップショットのときの状態で新たな HDD になります。そのスナップショットより前のスナップショットには戻れません。戻りたいときは新たな HDD のクローンを作ることになるようです。

(2010.11.17)

余談

ローカルのメインマシンに仮想マシンを作って、そこに WordPress をインストール、テスト環境を作ろうと思ったわけです。

Ubuntu 10.04.1 server をいじっていたら、重要なフォルダ・ファイルが消えてしまったようで、起動できなくなりました。修復するより再インストールのほうが楽そうだったのですが、Ubuntu 10.04 desktop は動く状態なので、それをコピーして使おうという魂胆です。インストールの手間と時間もばかになりませんからね。

(2010.11.10)

追記 (2010.11.16)

インストールが終わったあと、更新が終わったあとなど、適当な時期に「スナップショット」をとっておくと、その時点まですぐに戻れます。

一部訂正 (2010.11.17)

追記 (2011.07.25)

久々に、(ホスト) Windows 7 + VirtualBox 4.1 + (ゲスト) Ubuntu 11.04 Desktop 日本語 の環境でやってみました。微妙に VirtualBox の動作が変わったようにも思えますが、だいたい同じ操作でうまくいくようです。

WordPress のバックアップ

WordPress をバックアップするには

ファイルのバックアップ

WordPress 全体(またはサイト全体)を FTP (に相当する方法)でバックアップ先にコピー(ダウンロード)

データベースのバックアップ

MySQL データベースを phpMyAdmin でバックアップ

  1. WordPress サイトの情報を保持しているテーブルだけを選択します
  2. “Add DROP TABLE” ボックスにチェックを入れます。
  3. “Complete inserts” ボックスにチェックを入れます。
  4. “Save as File” ボックスにチェックを入れます。
  5. 圧縮には “None” のチェックを入れます。データベースが巨大なら圧縮します。
  6. Go をクリック。データが自分のコンピュータに保存されます。

と、「WordPres のバックアップ」には書いてあるが、

のほうが詳しい。(以下、抜粋)

  1. サーバー上の phpMyAdmin にログインします。
  2. ログイン後のメイン画面から、WordPress のデータベースを選びます。
  3. 次のページでは、WordPress データベースに含まれるテーブルの一覧が表示されます。画面上部のタブで、「エクスポート」をクリックしてください。
  4. エクスポート画面の左上にあるリストボックスに、ステップ2で選択したデータベース内のテーブルが全て表示されているはずです。(「全選択」するか個別に選択)
  5. 「SQL」ラジオボタンをオンにします。
  6. 画面右上の「オプション」セクションで、以下のチェックボックスをオンにします。
    • DROP TABLE / VIEW / PROCEDURE / FUNCTION を追加
    • IF NOT EXISTS を追加
    • AUTO_INCREMENT 値を追加する
    • テーブル名やフィールド名を逆クォートで囲む
  7. さらに下のセクションでは、「データ」(見出し)以外のチェックボックスは外しておきます。
  8. その下で、「ファイルで保存する」のチェックボックスをオンにします。「ファイル名のテンプレート」はそのままで構いません。
  9. 圧縮タイプを選び、「実行する」ボタンをクリックし、ファイルを保存しましょう。(圧縮タイプは好みで、無圧縮でも可。保存先に単体ファイルとして保存される)
  10. これで、WordPress サイトの投稿、固定ページ、コメント、設定などのバックアップが完了しました。

(2010.11.10)

(投稿一覧)LaTeX の数式を mimeTeX で使う

  1. (投稿一覧)LaTeX の数式を mimeTeX で使う
  2. LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
  3. mimeTexをWordPressのプラグインなしで使う方法
  4. mimeTeX を wp-latexrender プラグインで使う (1)
  5. mimeTeX を wp-latexrender プラグインで使う (2)
  6. mimeTeX を anlak の dahnielson_mimetex プラグインで使う

(2010.11.07)

リンクの URL からタイトルを持ってこられないものか

本文にハイパーリンクを書くのに、URL(パーマリンク)から自動的にタイトルを補完できないものかと思うのですが、少なくとも、すごく簡単ということはなさそうです。

Google 「wordpress パーマリンクからタイトルを得る とずばり検索してみました。

URLから記事タイトルを取得する方法 « 吟遊詩人の戯言 は「WordpressのブログURL(パーマリンク)からその投稿IDを取得する方法」ということで、5行の php。しかし、WordPress の本文にそのまま埋め込むことはできませんよね。

$tmpPostID = url_to_postid(‘http://www.hogehoge.com/2008/05/1576’);   //WPのURLを突っ込むと投稿IDが得られる
if ($tmpPostID> 0) //0の場合がある.0の場合は,記事タイトル無し
{
$tmptitleStr = get_the_title($tmpPostID); //投稿IDから記事タイトルを取得
}

Google 「URLからタイトルを取得 wordpress」 と検索してみます。

記事IDからタイトルを取得したい場合 « for WEB屋 は WordPress の変数を使って3行ですが、同じく。

$post_ID = 10; //記事ID
$post = get_post($post_ID);
$title = get_the_title($post);

記事保存時にリンク先のタイトルを取得するWordPressプラグイン – Rewish というのもありました。同じようなことを考える人はいるものですね。

URLからタイトルを取得してリンクコードを出力する[PHP] オニオンソード!! は HTML ページのフォームに入力して取り出すというもの。

Google 「wordpress 本文にコードを埋め込む」 のはどうにかならないのかと思いましたが、ショートコード API – WordPress Codex 日本語版 という「マクロコード」のようなものがあるようです。しかし、WordPress Codex 日本語版の記述は、初めての人間には直感的に意味がわかりません。

Google 「ショートコード wordpress」 で検索します。

WordPressのショートコードを自作してみる | webOpixel によると、ホントにちょっとしたコードを書きやすいようです。

まとめ:WordPress に標準登録されている 4 つのショートコード – attosoft.info Blog、はじめから組込で入っているものがあるのですね。

ASCII.jp:面倒な処理を1行に!WordPressのショートコードAPI2ページ目 にプログラムの解説が簡単に載っています。なるほど、なんとなく様子がつかめてきました。その関連で、ASCII.jp:便利!WordPressショートコードプラグイン3選 に3つ紹介されています。

意外と便利なショートコード | WordPressでサイトを構築するためのTipsWordPressのショートコードをマスターするチュートリアル | コリス など、ショートコードの実例はいろいろあるようです。

ということは、

  • ショートコードの仕組みを使う。
  • ショートコードはプラグインかテンプレート(functions.php)で組み込む。
  • コードは WordPress のテンプレートに使える機能を利用しながら PHP で記述する。

なんとかできなくはなさそうです。 (^_^)

(2010.11.07)