2011-02-15
本当は「山に行きました!」というブログを投稿したいところなのだが、さっぱり行ける雰囲気がないので、腹いせに技術系の投稿を続けてる。
logrotateを使ってログのローテートを行っている状況で、ログファイルの総容量が大きくなり、世代数を減らさざるを得ないときのこと。「rotate 世代数」の指定を減らしても、古い世代数は削除されない。
具体的には、以下の例。当初logrotate.confで以下の設定をしていたとする。
\# see "man logrotate" for details
\# rotate log files daily
daily
\# keep 10 days worth of backlogs
rotate 10
\# create new (empty) log files after rotating old ones
create
\# uncomment this if you want your log files compressed
#compress
\# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
この場合、1日1回ローテートされたファイルが10回分保存される。例えば以下のように。
ls -v /var/log/httpd/access_log*
access\_log access\_log.4 access_log.8
access\_log.1 access\_log.5 access_log.9
access\_log.2 access\_log.6 access_log.10
access\_log.3 access\_log.7
ここで、アクセスログ1ファイルずつの容量が増えてきて、ディスク空き容量が減ってきた場合、保存する世代数を減らして対処する場合、「rotate 世代数」の世代数を減らしても、古い世代が一斉に削除されるわけではない。
rotate 5とした場合、次のローテート後には以下のようになる。
access\_log access\_log.4 access_log.9
access\_log.1 access\_log.5 access_log.10
access\_log.2 access\_log.7
access\_log.3 access\_log.8
つまり、6世代目が消えるだけで、7世代目以降は自動的には削除されないため、手動で削除する必要がある。
これだけ。これが分からなくて危なくディスク使用率が100%になるところだった。
2011-02-14
自分でWebサービスを作ってみようと思い立ってsymfonyを勉強し始めて数ヶ月。
しばらく前の話だが、借りていたサーバの使用期限が終わってしまったので、さくらVPSを契約。そこにsymfony 1.4.x(1.4.8)をインストールするときの手順をまとめておく。特にさくらVPSに特化した内容はないので、普通にCentOS上にsymfony 1.4をインストールする手順と同じのはず。
<事前準備・参考>
以下のサイトを参考にして、不要なパッケージの削除、サービス停止、ファイアウォールやSSHなど、基本的なインターネット公開サーバの設定を済ませておく。
http://tanaka.sakura.ad.jp/archives/001065.html
http://www.ideaxidea.com/archives/2010/11/sakura_vps_settings.html
<PHP5.3を配布しているremiリポジトリを有効にする>
このブログ執筆時点のさくらVPSのデフォルトOSはCentOS 5.5(x86_64)だが、これには
PHP5.1.6が含まれており、symfony 1.4.xが動作しないので、最新版5.3をインストール。
PHP5.3のRPMパッケージはremiというリポジトリから配布されているので、yumのリポジトリに設定を追加。
\# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
\# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
<PHP5.3インストール>
\# yum install -enablerepo=remi php php-domxml php-devel php-mysql
php.iniに以下を追記。追記しないとdate()の使用で警告が出る。
date.timezone = "Asia/Tokyo"
mb_string関連の関数を使用するために必要なのでphp-mbstringもインストール。
\# yum install -enablerepo=remi php-mbstring
コンソールで文字を色付けするのに必要なのでphp-processもインストール。
\# yum install -enablerepo=remi php-process
symfonyで必要なものがそろっているか確認するスクリプトを実行。
\# wget http://sf-to.org/1.4/check.php
\# php check_configuration.php
\***\***\***\***\***\***\***\***\***\*****
\* \*
\* symfony requirements check \*
\* \*
\***\***\***\***\***\***\***\***\***\*****
php.ini used by PHP: /etc/php.ini
\*\* WARNING \*\*
* The PHP CLI can use a different php.ini file
* than the one used with your web server.
* If this is the case, please launch this
* utility from your web server.
\*\* WARNING \*\*
\*\* Mandatory requirements \*\*
OK PHP version is at least 5.2.4 (5.3.3)
\*\* Optional checks \*\*
OK PDO is installed
OK PDO has some drivers installed: mysql, sqlite, sqlite2
OK PHP-XML module is installed
OK XSL module is installed
OK The token\_get\_all() function is available
OK The mb_strlen() function is available
OK The iconv() function is available
OK The utf8_decode() is available
OK The posix_isatty() is available
[[WARNING]] A PHP accelerator is installed: FAILED
\*\\*\* Install a PHP accelerator like APC (highly recommended) \*\**
OK php.ini has short\_open\_tag set to off
OK php.ini has magic\_quotes\_gpc set to off
OK php.ini has register_globals set to off
OK php.ini has session.auto_start set to off
OK PHP version is not 5.2.9
<pearインストール>
※ pearでのインストールは推奨されていないが、簡単なのでこれで済ませる
\# yum install -enablerepo=remi php-pear
\# pear upgrade-all
<symfonyインストール>
\# pear channel-discover pear.symfony-project.com
\# pear install symfony/symfony
以下のコマンドでバージョンが表示されたらインストール成功。
\# symfony -V
symfony version 1.4.8 (/usr/share/pear/symfony)
/usr/share/pear/symfonyにインストールされる
<APCインストール>
PHPのアクセラレータであるAPCをインストールしておく。入れなくても動作するが、symfonyでは導入が推奨されているのと、入れただけで高速になるとのことなのでインストール。
\# yum install httpd-devel
\# yum install -enablerepo=remi php-pecl-apc
<httpd起動>
\# chkconfig httpd on
Syntax OK
\# service httpd start
ブラウザから http://(サーバのIPアドレス)/ を確認し、phpinfoでapcが読み込まれていることを確認。
※ phpinfoはコマンドラインから以下を実行しても確認できる
<MySQLインストール>
\# yum install -enablerepo=remi mysql-server
<MySQL設定>
my.cnfに以下を追記して文字コードをUTF-8に
[mysqld]
default-character-set=utf8
character\_set\_server=utf8
skip-character-set-client-handshake
[mysql]
default-character-set=utf8
statusコマンドおよび”show variables like ‘char%’;”でUTF-8になっていることを確認(過去エントリ も参照)
パスワードを設定
\# mysqladmin -u root password パスワード
データベース作成
\# mysql -uroot -p
mysql> create database データベース名;
<postfixインストール>
\# yum remove sendmail
\# yum install postfix
/etc/postfix/main.cf を編集
\# chkconfig postfix on
\# service postfix start
メール送信のテスト
※ 本登録前のお試し期間中はOP25Bが有効なので、VPS上のサーバからメールを送信することはできない
2011-02-12
2/12のSphinx翻訳ハッカソン に行ってSymfony2のドキュメントの翻訳をさせていただこうと思っていたら、このところどっぷりはまっている仕事の方で呼び出されることになり、参加できなくなってしまった。予習として手元の環境にSphinxをインストールしたときのメモを残しておく。
といっても、パッケージ管理ツールを駆使(?)してあっという間。Sphinxのユーザ会のページには、MacOS XとUbuntuへのインストール方法は書いてあるが、CentOSへのインストール方法は書かれていないので、一応メモ。
yumでpythonのパッケージ管理ツールであるpipをインストール
[root@hoge ~]# yum install python-pip python-setuptools
pipでsphinxをインストール。現状では1.0.7がインストールされるようだ。
[root@hoge ~]# pip-python install sphinx
Downloading/unpacking sphinx
Downloading Sphinx-1.0.7.tar.gz (2.3Mb): 2.3Mb downloaded
Running setup.py egg_info for package sphinx
no previously-included directories found matching ‘doc/_build’
Downloading/unpacking Pygments>=0.8 (from sphinx)
Downloading Pygments-1.4.tar.gz (3.5Mb): 3.5Mb downloaded
Running setup.py egg_info for package Pygments
Downloading/unpacking Jinja2>=2.2 (from sphinx)
Downloading Jinja2-2.5.5.tar.gz (438Kb): 438Kb downloaded
(中略)
Installing sphinx-build script to /usr/bin
Installing sphinx-quickstart script to /usr/bin
Installing sphinx-autogen script to /usr/bin
Successfully installed docutils Jinja2 Pygments sphinx
Cleaning up…
[root@hoge ~]#
Sphinxユーザ会の「Sphinxをはじめよう 」を見て、「プロジェクトの作成」まではあっさり完了。
yumでもsphinx(パッケージ名はpython-sphinx)をインストールできるが、@hidenorigoto さんのアドバイスで、pipを使ったインストール方法があることを知った。ありがとうございます。
2011年3月13日追記
epelリポジトリを有効にしていたからyumだけでインストールできた模様。epelリポジトリを追加していない場合は以下のコマンドで追加。
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/5/i386/epel-release-5-4.noarch.rpm
※ パスの中で「5-4」はepelのバージョンによって変わる。