June 19, 2014

Vagrant上のCoreOSで作成したUbuntuのDockerイメージにSSHサーバーをインストールして、Macからログインするまでのメモ

メモです。

前回の記事で作成したDockerイメージを使って、タイトルの通りのことをしてみました。
http://madroom-project.blogspot.jp/2014/06/vagrant-coreosubuntudocker.html

参考:
http://docs.docker.com/examples/running_ssh_service/
http://inokara.hateblo.jp/entry/2013/09/29/090500

SSHサーバーのインストールと設定をします。尚、当記事の /etc/ssh/sshd_config の編集内容は、セキュリティ周りを考慮していません。
$ docker run -i -t mamor/ubuntu-phpdev /bin/bash

# apt-get install vim openssh-server -y
# mkdir /var/run/sshd
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
# vim /etc/ssh/sshd_config # 以下の編集をします。

# diff /etc/ssh/sshd_config.original /etc/ssh/sshd_config
28c28
< PermitRootLogin without-password
---
> PermitRootLogin yes

# passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

# exit
コンテナのIDを確認してコミットします。
$ docker ps -a
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS                     PORTS               NAMES
9cfd78ba8a20        mamor/ubuntu-phpdev:latest   /bin/bash           3 minutes ago       Exited (0) 5 seconds ago                       angry_heisenberg

$ docker commit 9cfd78ba8a20 mamor/ssh
ポート22を指定して、コンテナをバックグラウンドで起動します。
$ docker run -d -p 22 mamor/ssh /usr/sbin/sshd -D
3d6c2249369ad059fd2005c2c0589c9f76b624808ba59d1fde8942eaa42e98f0
コンテナの22番ポートにフォワードされている、CoreOSのポートを確認します。
$ docker port 3d6c2 22
0.0.0.0:49153
Macから接続してみます。パスワードは、Dockerコンテナで指定したパスワードです。尚、当記事のCoreOSは https://github.com/coreos/coreos-vagrant.git で構築されていて、IPアドレスは "172.17.8.101" になっていました。
$ ssh root@172.17.8.101 -p 49153
root@172.17.8.101's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.2.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@29932f436be8:~#
(これでMacからDockerのUbuntuに対してserverspecの実行できるかな?)

June 18, 2014

Vagrant + CoreOSでUbuntuのDockerイメージを作成して、パッケージを更新した後にコミットするまでのメモ

メモです。

最終的には、Dockerに対する理解を兼ねて、Vagrant + Chefで作った個人的なPHP用の開発環境 https://github.com/mamor/vagrant-phpdev-ubuntu みたいなことをDockerでできたら良いなーと思っています。

まず、Dockerコンテナを動かすための、VagrantなCoreOS環境を用意します。
$ git clone https://github.com/coreos/coreos-vagrant.git
$ cd coreos-vagrant/
$ vagrant up
$ vagrant ssh
以下、CoreOS内で実行します。
# Ubuntuイメージをダウンロードします。
$ docker pull ubuntu

# パッケージを更新します。
$ docker run ubuntu /bin/sh -c "apt-get update && apt-get upgrade -y"

# コンテナのプロセスを確認します。
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                      PORTS               NAMES
xxxxxxxxxxxx        ubuntu:14.04        /bin/sh -c 'apt-get    About a minute ago   Exited (0) 17 seconds ago                       distracted_torvalds

# 表示された"CONTAINER ID"をコミットします。
$ docker commit xxxxxxxxxxxx mamor/ubuntu-phpdev
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

# コミットされていることを確認します。
$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mamor/ubuntu-phpdev   latest              yyyyyyyyyyyy        22 seconds ago      315.2 MB
ubuntu                12.10               e314931015bd        13 days ago         172.1 MB
ubuntu                quantal             e314931015bd        13 days ago         172.1 MB
ubuntu                13.10               145762641db9        13 days ago         180.2 MB
ubuntu                saucy               145762641db9        13 days ago         180.2 MB
ubuntu                14.04               ad892dd21d60        13 days ago         275.4 MB
ubuntu                latest              ad892dd21d60        13 days ago         275.4 MB
ubuntu                trusty              ad892dd21d60        13 days ago         275.4 MB
ubuntu                13.04               6b0a59aa7c48        13 days ago         169.4 MB
ubuntu                raring              6b0a59aa7c48        13 days ago         169.4 MB
ubuntu                12.04               ae8682f4ff20        13 days ago         209.9 MB
ubuntu                precise             ae8682f4ff20        13 days ago         209.9 MB
ubuntu                10.04               3db9c44f4520        8 weeks ago         183 MB
ubuntu                lucid               3db9c44f4520        8 weeks ago         183 MB

# コミットしたイメージを起動してみます。
$ docker run -i -t mamor/ubuntu-phpdev /bin/bash
root@4290c049e05c:/# exit

# 不要となったコンテナのプロセスを削除します。
$ docker rm $(docker ps -a -q)
xxxxxxxxxxxx
zzzzzzzzzzzz

# プロセスが削除されたことを確認します。
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

#Docker Hubへプッシュするには"docker login"と"docker push"を使います。
$ docker login
Username: mamor
Password:
Email: mamor@example.com
Login Succeeded
$ docker push mamor/ubuntu-phpdev:latest

June 11, 2014

CentOS6.5でidn_to_ascii()とidn_to_utf8()を使えるようにする

メモです。

ICUライブラリをインストールする (最新版は http://site.icu-project.org/download で確認)
$ wget http://download.icu-project.org/files/icu4c/53.1/icu4c-53_1-src.tgz
$ tar zxvf icu4c-52_1-src.tgz
$ cd icu/source/
$ ./configure --prefix={PREFIX}
$ make
$ make install
PECLのintlパッケージをインストールする
$ sudo pecl install intl
# 略
Specify where ICU libraries and headers can be found [DEFAULT] :{PREFIX}
php.iniに以下を記述
extension=intl.so
確認
$ php -r "var_dump(function_exists('idn_to_ascii'));"
bool(true)

$ php -r "var_dump(function_exists('idn_to_utf8'));"
bool(true)
以下、ICUライブラリに関して参考にさせて頂きました。
http://qiita.com/emegane/items/f8f66eeb6dbac95c662d

June 7, 2014

Piwikでメンテナンスモードにする

config/config.ini.php の "General" 項で "maintenance_mode" に "1" を設定するとメンテナンスモードになりました。
 [General]
maintenance_mode = 1
WEB

API

解析タグからアクセスされる /piwik.php には影響無いようです。

一応、CLIで console core:archive もしてみましたが、問題なく実行できました。

(CLIでメンテナンスモードを有効にできれば良いんだけど。。。)

Piwikの負荷対策とDB容量についてメモ

Piwikの負荷対策とDB容量について、気になったのでメモしておきます。飽くまでPIwik上の内容で、サーバ構成とかではありません。
http://piwik.org/


"システムの構成" > "全般の設定" と進むと、負荷周りの項目が出てきます。

1.
"リポートがブラウザで表示されたときをトリガーとする Piwik アーカイブ処理を許可" を "いいえ" にして、cronジョブ http://piwik.org/docs/setup-auto-archiving/ をセットアップすることが推奨されています。

2.
"今日のリポート(または今日を含む、他の日付範囲)が生成される間隔" を "30分(1800 秒) または 1時間(3600 秒)" に設定することが推奨されています。


次に「'古いビジターのログとリポートを削除' 設定はこちらをクリック」の先の内容です。

3.
"定期的にデータベースから古いビジターのログを削除する" を "はい" にする場合、http://piwik.org/faq/general/#faq_125 に、前述のcronジョブをセットアップすることと "archive.php" を少なくとも一回実行することが強く推奨されています。"archive.php" は "misc/cron" にあるやつだと思います。

が、"archive.php" とcronジョブの違いがよくわかりませんでした。以下のように "archive.php" は推奨されていなく、代わりにcronジョブが指す内容をかわりに使うようなメッセージが出ます。(cronジョブで行うことを、念のため手動で一回はやってくれ。みたいな感じ??)
# URLオプション値は適当です
$ php archive.php --url=http://example.com/

-------------------------------------------------------
Using this 'archive.php' script is no longer recommended.
Please use '/path/to/php /xxx/piwik/console core:archive --url=http://example.com/' instead.
To get help use '/path/to/php /xxx/piwik/console core:archive --help'
See also: http://piwik.org/docs/setup-auto-archiving/
-------------------------------------------------------
"古いビジターのログ" というのは飽くまでログで、正しくアーカイブ処理されていれば定期削除の設定をして問題ないような気がします。(未確認ですが。)

対して "古いリポート" というのは、不用意に削除すると、過去にさかのぼった解析データが見れなくなるような気がします。(これも、未確認ですが。)

やってみないと実際にどういう効果(あるいは問題)が出るかよくわかりませんが、やるなら最初のうちに確認しておいたほうが良いだろうなぁと思います。