lxcで作ったWordPressサーバーを外部に公開(家庭内サーバー編)

家庭内LANからは仮想環境にフルアクセス可能にして、ファイアーウォールはルーターにお任せする。ルーターの設定で80番ポートとssh用のポートだけ転送するようにする。

もしホスト側がUbuntuのデスックトップ環境ならばnetwork-managerを停止しなければいけない。
自動起動の停止方法

ネットワークを設定する。

$ sudo vi /etc/network/interfaces

設定例 実際の環境に合わせて修正する

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
  address 192.168.0.10
  netmask 255.255.255.0
  gateway 192.168.0.1
  dns-nameservers 192.168.0.1
  bridge_ports eth0
  bridge_stp off

コンテナのconfigを編集

$sudo vi /var/lib/lxc/ubuntu02/config #コンテナ名ubuntu02
lxc.network.link=lxcbr0 #この行のlxcbr0をbr0に書き換える

必要ならコンテナ内の/etc/network/interfacesも編集する。DHCPでよければそのまま。

再起動すれば仮想環境がホストと同じネットワークに接続されているはず。

後はルーターでポート転送するよう設定する。80番はそのまま80番に転送する。
sshについては仮想環境のポートは22番のままで、ルーターからは適当なポートから仮想環境の22番に転送する。こうすればローカルからはポート指定なしでsshできるが、外部からは22番は閉じていることになる。

2012年8月13日

Ubuntuでサービスの自動起動を止める

Ubuntu12.04でサービスの自動起動を停止する方法。
サービスをアンインストールしてしまうと必要になったときに面倒である。
Ubuntuではupstartでサービスを起動していて起動スクリプトは/etc/init/の下にある。
起動スクリプトを編集してstart on の項目をコメントアウトすれば自動起動しなくなる。
network-magagerを例にすると

$ sudo vi /etc/init/network-manager.conf

start on の項目をコメントアウト

#start on (local-filesystems
#         and started dbus
#         and static-network-up)

これでnetwork-managerが自動起動しなくなる。
手動起動は

$ sudo start network-manager

手動停止は

$ sudo stop network-manager

2012年8月13日

lxcにWordPressインストール

LAMPをインストールした仮想環境にWordPressをインストールしてみる。
といっても特殊なことはないので普通にインストールすればOK。

worepress用のmysql設定
データベースを作成しwp管理者を登録し権限を付与。

Apache2の設定
mod-rewriteを有効化

$ sudo a2enmod rewrite

/etc/apache2/sites-available/defaultを編集。
/var/wwwの設定を AllowOverride All に変更

Apache再起動

$ sudo service apache2 restart

wordpressを普通にインストール

これでWordPressの動く仮想環境が出来上がる。

2012年8月12日

lxcにLAMPインストール

ロケールとタイムゾーンを設定しただけの素の仮想環境にインストールする。
まずtasksel をインストール

$ sudo apt-get install tasksel

taskselを実行しLAMPをインストール

$sudo tasksel

OpenSSH serverを削除するとsshで接続できなくなるので注意。

mysql文字コード変更
/etc/mysql/my.cnf を編集

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

mysqldを再起動

$ sudo service mysql restart

2012年8月11日

lxcの仮想環境にJapanese Teamのパッケージレポジトリを追加する

Ubuntu Japanese Teamのページ(Ubuntuの日本語環境)に12.04の英語環境にJapanese Teamのパッケージレポジトリを追加する方法が書いてあるが、LXCのubuntuテンプレートで作った仮想環境では必要なパッケージが足りないため実行できない。

wgetとCA証明書関係をインストールする。

$ sudo apt-get install wget
$ sudo apt-get install ca-certificates

この後でUbuntu Japanese TeamのページのとおりにすればOK。

2012年8月11日

lxc仮想環境の複製とバックアップ

前回に作った仮想環境「ubuntu01」を複製してそちらを使っていく。

$ sudo lxc-clone -o ubuntu01 -n ubuntu02

へんな設定をしてうまく動かなくなったら

$ sudo lxc-destroy -n ubuntu02

で仮想環境を削除してもう一度ubuntu01から複製すればOK。

バックアップをとるなら

$ sudo lxc-backup ubuntu02

がありますが、ファイルシステムがそのままコピーされるだけなので。
tarで固めてしまった方が面倒がない。

$ cd /var/lib/lxc
$ sudo tar cpzf ubuntu02.tar.gz ubuntu02

リストアは

$ sudo tar --numeric-owner -xpzf ubuntu02.tar.gz

ここで–numeric-owner オプションをつけないと他のホストに持っていったときにuidやgidが変化してしまう。

2012年8月11日

lxc仮想環境の実行と日本語設定

前回作った仮想環境「ubuntu01」を実行してみる。

$ sudo lxc-start -n ubuntu01

ユーザー名はubuntu、パスワードもubuntuになってる。外部からアクセス可能にするなら別の管理者を作ってユーザーubuntuは削除。

dateコマンドを実行。

$ date
Sat Aug 11 05:12:24 UTC 2012

このように英語表示のうえに時間がUTCなので修正する。

ロケールの変更

$ sudo apt-get install language-pack-ja
$ export LANG=ja_JP.UTF-8
$ sudo update-locale LANG=ja_JP.UTF-8

タイムゾーンの変更

$ sudo mv /etc/localtime /etc/localteime.org
$ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

再びdateを実行。

$ date
2012年  8月 11日 土曜日 14:15:59 JST

今度は無事に日本語で日本時間が表示される。

もしテンプレートを変更しないで仮想環境を作った場合には
/etc/apt/sources.listを修正してパッケージ配布サーバーを日本に変更。

仮想環境をシャットダウン。
仮想環境内からは

$ sudo shutdown now -h

ホスト側からなら

$ sudo lxc-shutdown -n ubuntu01

これで仮想環境がシャットダウンされる。
仮想環境の状態を確認するにはホストで

$ sudo lxc-list

2012年8月11日

lxcのテンプレート修正と仮想環境の作成

このまま仮想環境を作ってもよいが、テンプレートをちょっとだけ修正してみる。
ダウンロード元をarchive.ubuntu.com から jp.archive.ubuntu.comへ変更。
ubuntuのテンプレートをコピーして編集。

$ sudo cp /usr/lib/lxc/templates/lxc-ubuntu /usr/lib/lxc/templates/lxc-ubuntujp
$ sudo vi /usr/lib/lxc/templates/lxc-ubuntujp

archive.ubuntu.comを探してjp.archive.ubuntu.comに直す。

            MIRROR=${MIRROR:-http://jp.archive.ubuntu.com/ubuntu} #修正した行

日本語環境がインストールされるわけではなく、単にダウンロード元が日本になるだけだけど。
これを使って仮想環境を作成。

$ sudo lxc-create -t ubuntujp -n ubuntu01

こうすれば自動的に作成後の環境の「/etc/apt/sources.list」もjp.archive.ubuntu.comになる。

2012年8月11日