ラベル centos の投稿を表示しています。 すべての投稿を表示
ラベル centos の投稿を表示しています。 すべての投稿を表示

2011年5月29日日曜日

yumのオプション

いつも使い方がわからなくなるので、メモっておきます。

ダウンロードしたパッケージやキャッシュの削除

# yum clean オプション名

オプション名には、以下を使用可能です。

headers
パッケージのヘッダーのクリア
packages
ダウンロードしたパッケージのクリア
cache
キャッシュのクリア
metadata
メタデータのクリア
all
上記全てのクリア

便利なサブコマンド

パッケージ情報の表示

# yum info パッケージ名

キーワードによるパッケージの検索

# yum search キーワード

アップデート可能なパッケージの表示

# yum list updates

インストール済のパッケージの表示

# yum list installed

特定のパッケージのアップデートを無視する

特定のパッケージのみアップデートしたくない場合は /etc/yum.conf に exclude=パッケージ名 の記述を追加します。例えば、カーネルのみアップデータしたくない場合 *1 は以下のように記述します。

exclude=kernel*

期待通り kernel を除外できているか、確認します。

# yum list updates | grep kernel

*1 Xen環境を構築しているサーバでは、安全のためにこのように設定しています(実際にはアップデートしようとするとエラーになるようですが)。

2009年11月25日水曜日

vsftpd設定メモ

いつも設定がわからなくなるので、メモっておきます。

umaskの設定

groupに書き込み権限を与える場合

file_open_mode=0666
local_umask=002

chrootの設定

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
/etc/vsftpd.chroot_list に、chroot しない ユーザを列挙する

2009年10月18日日曜日

PostgreSQL8.4.1のインストール

最新版の PostgreSQL (8.4.1) をソースコードからインストールする機会がありましたので、手順を記録しておきます。基本的に、ドキュメント「第15章ソースコードからインストール」の手順にしたがって進めています。

必要なライブラリのインストール

今回は CentOS 5.3 を使用しました。configure 時に下記のライブラリを要求されますので、事前にインストールしておきます。

  • readline-devel
  • zlib-devel

postgresユーザとインストール先ディレクトリの作成

管理者アカウントであるpostgresユーザと、インストール先ディレクトリを作成します。ここでは gid, uid の指定はしませんでしたが、既存環境と合わせる必要がある場合は、-g, -u オプションで明示的に指定します。また、インストール先は /usr/local/pgsql とします。

# useradd postgres
# mkdir /usr/local/pgsql
# chown postgres. /usr/local/pgsql

インストールの実行

ここでは、ソースをビルドする作業ディレクトリを /usr/local/src/postgresql/ として作業します。confugure オプションは特に指定せず、デフォルトでインストールしました。

# mkdir /usr/local/src/postgresql/
# chown postgres. /usr/local/src/postgresql/
# su - postgres

$ cd /usr/local/src/postgresql/
$ wget http://www.ring.gr.jp/pub/misc/db/postgresql/source/v8.4.1/postgresql-8.4.1.tar.gz
$ tar zxvf postgresql-8.4.1.tar.gz
$ cd postgresql-8.4.1
$ ./configure
$ make
$ make install

環境変数の設定

postgres ユーザの .bashrc に、環境変数を設定します。

$ vi ~/.bashrc

 以下を記述:
 export PATH=$PATH:/usr/local/pgsql/bin:/usr/local/pgsql/lib
 export POSTGRES_HOME=/usr/local/pgsql
 export PGLIB=$POSTGRES_HOME/lib
 export PGDATA=$POSTGRES_HOME/data
 export MANPATH=$MANPATH:$POSTGRES_HOME/man
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB

$ source ~/.bashrc

また、 ldconfig コマンドで実行時リンクの結合関係を設定しておくことで、パフォーマンスの改善が期待できます。CentOS5の場合、root 権限で以下を実行します。

# /sbin/ldconfig /usr/local/pgsql/lib

データベースクラスタの作成

postgres ユーザにて、データベースクラスタの作成を実行します。作成の実行後にデータベースの起動を確認します。

$ initdb
$ pg_ctl start
$ psql -l
        List of databases
     Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
  -----------+----------+----------+-------------+-------------+-----------------------
   postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
   template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
              : postgres=CTc/postgres
   template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
              : postgres=CTc/postgres
  (3 rows)
起動を確認したら、pg_ctl stop で停止しておきます。

起動スクリプトの設置

同梱の起動スクリプトを設置し、起動の設定をしておきます。

# cp /usr/local/src/postgresql/postgresql-8.4.1/contrib/start-scripts/linux /etc/init.d/postgresql
# chmod +x /etc/init.d/postgresql
# chkconfig --add postgresql
# chkconfig postgresql on
# chkconfig --list | grep postgresql

 postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
これでインストールが完了しました。

クライアント側のみのインストール

アプリケーションサーバとデータベースサーバを分離した構成にする場合、いままで私はクライアント側は通常インストールを実行していました(データベースクラスタは作成しない)。が、今回の作業でマニュアルに「クライアント側のみのインストール」の方法が記述してあることに気付きましたので、メモしておきます。

gmake -C src/bin install
gmake -C src/include install
gmake -C src/interfaces install
gmake -C doc install
http://www.postgresql.jp/document/pg841doc/html/install-procedure.html

2009年10月11日日曜日

trac0.11.5jaのインストール

Trac は Phthon で実装された、Wiki, 構成管理, 課題管理を統合したプロジェクト管理ツールです。

ここでは構成管理に Mercurial を使用し、Apache + mod_python + PostgreSQL (on CentOS5) というシステム構成でのインストールについて記述します。なお Apache, PosgrtgreSQL, Python, Mercurial は下記のバージョンを既にインストール済みとし、ここではインストール方法には触れません。また、文字コードは全て UTF-8 です。

  • Apache httpd-2.2.14
  • PostgreSQL 8.4.1
  • Python 2.4.3 (python-devel)
  • Mercurial 1.3.1
Merucurialのインストール手順はこちらをご参照下さい。

以降、下記の順番でインストール手順を記述します。

  1. テンプレートエンジンのインストール
  2. setuptools のインストール
  3. Trac 0.11.5ja のインストール
  4. mod_python のインストール
  5. pyPgSQL のインストール
  6. mxDateTime のインストール
  7. Mercurial プラグインのインストール
  8. プロジェクト環境の作成
  9. Mercurial プラグインの有効化

テンプレートエンジンのインストール

Trac0.10 まではテンプレートエンジンに ClearSilver を使用し、別途インストールする必要がありましたが、0.11 からは Genshi に変更されています。Genshi は Tracのインストーラが勝手に取得/インストール/アップグレードしてくれるので、個別の準備は不要です。

setuptools のインストール

0.10までは不要だったように記憶してますが、0.11からは setuptools を要求されます。

# python ./setup.py install --prefix=/usr/local/trac0.11.5.ja1
Traceback (most recent call last):
  File "./setup.py", line 15, in ?
    from setuptools import setup, find_packages
ImportError: No module named setuptools
また後述の種々のモジュールのインストールにも使用しますので、あらかじめ setuptools をインストールしておきます。
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
Downloading http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c9-py2.4.egg
Processing setuptools-0.6c9-py2.4.egg
creating /usr/lib/python2.4/site-packages/setuptools-0.6c9-py2.4.egg
Extracting setuptools-0.6c9-py2.4.egg to /usr/lib/python2.4/site-packages
Adding setuptools 0.6c9 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin

Installed /usr/lib/python2.4/site-packages/setuptools-0.6c9-py2.4.egg
Processing dependencies for setuptools==0.6c9
Finished processing dependencies for setuptools==0.6c9

Trac 0.11.5ja のインストール

現時点で最新の日本語版である 0.11.5ja をインストールします。日本語版はインタアクト株式会社のサイトからダウンロードします。

インストール時に prefix を指定せずデフォルトに任せると /usr/bin, /usr/lib, /usr/share に散らばってインストールされるので、私は --prefix= を指定して /usr/local/ 配下にリビジョン番号付でインストールし、環境設定やシンボリックリンクでパスを通しています。

$ unzip Trac-0.11.5.ja1.zip
$ cd Trac-0.11.5.ja1

# mkdir -p /usr/local/trac0.11.5.ja1/lib/python2.4/site-packages/
# ln -s /usr/local/trac0.11.5.ja1 /usr/local/trac
# export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages
# python ./setup.py install --prefix=/usr/local/trac0.11.5.ja1
prefix指定なしのデフォルトの場所にシンボリックリンクを作成します。
# ln -s /usr/local/trac/bin/trac-admin  /usr/bin/trac-admin
# ln -s /usr/local/trac/bin/tracd /usr/bin/tracd
# ln -s /usr/local/trac/share/man/man1/trac-admin.1 /usr/share/man/man1/trac-admin.1
# ln -s /usr/local/trac/share/man/man1/tracd.1 /usr/share/man/man1/tracd.1
# ln -s /usr/local/trac/share/man/man1/tracdb2env.1 /usr/share/man/man1/tracdb2env.1
# ln -s /usr/local/trac/share/trac /usr/share/trac
なお、0.10 までは ライブラリ類は /usr/local/trac/lib/python2.4/site-packages/trac/ にまとめてインストールされていたのですが、0.11 からは Genshi も含めて、/usr/local/trac/lib/python2.4/site-packages/ 配下にバージョン番号付でインストールされるようになりました。
$ ls -l /usr/local/trac/lib/python2.4/site-packages/
total 284
-rw-r--r-- 1 root root 231009 Oct 10 15:06 Genshi-0.5.1-py2.4-linux-i686.egg
drwxr-xr-x 4 root root   4096 Oct 10 15:06 Trac-0.11.5.ja1-py2.4.egg
-rw-r--r-- 1 root root    309 Oct 10 15:06 easy-install.pth
-rw-r--r-- 1 root root     60 Oct 10 15:06 setuptools.pth
-rw-r--r-- 1 root root   2362 Oct 10 15:06 site.py
-rw-r--r-- 1 root root   1825 Oct 10 15:06 site.pyc
-rw-r--r-- 1 root root   1815 Oct 10 16:12 site.pyo
そのためシンボリックリンクでの対応は逆に面倒ですので、/usr/local/trac/lib/python2.4/site-packages に PYTHONPATH を通しておきます。 これで、trac のインストールが完了しました。

mod_python のインストール

mod_python 3.2 系は apache 2.2 で動作しないので、3.3 系を使用します。そして、実はtracのインストールの山場はここなのではないか、と思うくらいハマりポイントがあるのが mod_python のインストールです。

libexpat のバージョン

まず一つめのハマりポイント。expat-devel パッケージがインストールされてない場合、apache 同梱の libexpat.so が使用されますが、このバージョンが古いために実行時に mod_python がエラーとなってしまうようです(error_log には "Objects/stringobject.c:117: PyString_FromString: Assertion `str != ((void *)0)' failed."と書かれていました)。バージョンを見ると、

$ strings /usr/local/apache2/lib/libexpat.so | grep expat_
expat_1.95.2
$ rpm -qa | grep expat
expat-1.95.8-8.2.1
expat-devel-1.95.8-8.2.1
expat-devel がインストール済であることを確認し、必ずインストールしておきましょう。

mod_python のバージョン

ハマりポイントその二。apr と mod_python の特定のバージョンの組み合わせ(apr 1.3.2 と mod_python 3.3.1 ?) の場合、ビルドエラーになってしまいます。

jira によると、既に修正が trunk にコミットされているものの公開されている 3.3.1 では対応されてないようです。自分で patch を適用してもいいのですが、ここでは svn リポジトリから最新の trunk を取得して使用しました。
mod_python のビルド/インストール
$ svn co http://svn.apache.org/repos/asf/quetzalcoatl/mod_python/trunk
$ cd trunk
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs
$ make
# make install
これで mod_python が無事インストールできました。

httpd.conf の変更

mod_python.so を有効にし、また trac 用の設定ファイルを include するように httpd.conf を変更します。

LoadModule python_module      modules/mod_python.so
Include conf/extra/httpd-trac.conf

extra/httpd-trac.conf の作成

trac 用の設定ファイル extra/httpd-trac.conf を作成します。ここでは trac ディレクトリは /home/trac とします。また、trac認証には apache の基本認証を使用し、またパスワードファイルは /home/trac に設置します。

<Location /trac>
  SetEnv PYTHON_EGG_CACHE /tmp/python_egg_cache
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /home/trac
  PythonOption TracUriRoot /trac
  PythonDebug On
</Location>
<LocationMatch /trac/[-_[:alnum:]]+/login>
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /home/trac/.htpasswd
  Require valid-user
</LocationMatch>
/usr/local/apache2/bin/htpasswd を使用し、trac を使用するユーザを .htpasswd に登録しておきます。

環境変数の設定の作成

apache から、それぞれのライブラリを使用できるよう、apacheの起動スクリプトに環境変数を設定しておきます。

export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages
export PATH="$PATH":/usr/local/pgsql/bin:/usr/local/pgsql/lib
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB
また、後述の trac-admin コマンドをターミナルから実行する際にも上記のパス設定が必要なので、root の .bashrc にも記述しておいた方がいいでしょう。

pyPgSQL のインストール

Python から PostgreSQL へのデータベース・アクセスに、ここでは pyPgSQL を使用します。

$ wget http://sourceforge.net/projects/pypgsql/files/pypgsql/2.5.1/pyPgSQL-2.5.1.tar.gz/download
$ tar zxvf pyPgSQL-2.5.1.tar.gz 
$ cd pyPgSQL-2.5.1
root ユーザにに PostgreSQL ライブラリ等へのパスを通した後(通ってないとエラーとなります)、ビルド、インストールします。
# export PATH=/usr/local/pgsql/include:$PATH
# export PATH=/usr/local/pgsql/bin:$PATH
# python setup.py build
# python setup.py install
これで pyPgSQL のインストールが完了しました。

mxDateTime のインストール

これをインストールしておかないと、プロジェクト環境作成時に下記のメッセージで落ちてしまいます。

Creating and Initializing Project
Failed to create environment. You need to install mxDateTime
       (http://www.egenix.com/files/python/eGenix-mx-Extensions.html)
eGenix.comのサイトから取得してインストールします。なお、UCS2版とUCS4版のどちらをインストールするかは、下記コマンドで確認します。
$ python -c "import sys;print(sys.maxunicode<66000)and'UCS2'or'UCS4'"
インストールスクリプトを実行して、インストールします。
$ unzip egenix-mx-base-3.1.2.linux-i686-py2.4_ucs4.prebuilt.zip
$ cd egenix-mx-base-3.1.2.linux-i686-py2.4_ucs4.prebuilt
# python setup.py install

Mercurial プラグインのインストール

setuptoolを使用して Mercurial プラグインをインストールします。

$ svn co http://svn.edgewall.com/repos/trac/sandbox/mercurial-plugin-0.11
$ cd mercurial-plugin-0.11/
$ python setup.py bdist_egg
# python setup.py install

プロジェクト環境の作成

プロジェクト環境作成の例として、ここでは test という名称のプロジェクト環境と作成します。

Mercurial リポジトリの作成

まず Mercurial リポジトリを作成します。ここでは /home/hg 配下を Mercurial リポジトリのディレクトリとします。また、Mercurial の操作は hg ユーザにて行うものとします。

$ su - hg
$ cd /home/hg
$ mkdir test
$ cd test/
$ hg init
これで hg リポジトリが作成されました。

データベースの作成

tracが使用するデータベースを作成します。ここでは、"trac_test" という名前で作成し、接続ユーザは "trac"、パスワードは "foo" としています。

$ su - postgres
$ createdb trac_test
$ psql trac_test

trac_test=# CREATE USER trac WITH PASSWORD 'foo';
CREATE ROLE
trac_test=# 

プロジェクト環境の作成

ベースディレクトリは /home/trac とし、その下に各プロジェクトを作成することにします。また、PostgreSQLへのパスが通ってないと作成時にエラーとなるため、パスを通しておきましょう。

# mkdir -p /home/trac/test
# export PATH="$PATH":/usr/local/pgsql/bin:/usr/local/pgsql/lib
# export POSTGRES_HOME=/usr/local/pgsql
# export PGLIB=$POSTGRES_HOME/lib
# export PGDATA=$POSTGRES_HOME/data
# export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

trac-admin コマンドを使用してプロジェクト環境を作成します。対話型で作成が進行しますので、それぞれ記入していきます。
# export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages
# trac-admin /home/trac/test initenv

 Project Name [My Project]> Test Project

 Database connection string [sqlite:db/trac.db]> postgres://trac:foo@localhost/trac_test

 Repository type [svn]> hg

 Path to repository [/path/to/repos]> /home/hg/test

 :
 :

---------------------------------------------------------------------
Project environment for 'Test Project' created.

You may now configure the environment by editing the file:

  /home/trac/test/conf/trac.ini

If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:

  tracd --port 8000 /home/trac/test

Then point your browser to http://localhost:8000/test.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).

The latest documentation can also always be found on the project
website:

  http://trac.edgewall.org/

Congratulations!
プロジェクト環境が作成されました。まず trac ディレクトリの所有者をを apache 実行ユーザに変更し、管理者アカウントを設定しておきましょう。
# chown -R daemon. /home/trac/test/
# trac-admin /home/trac/test permission add admin TRAC_ADMIN
これで、apache + mod_python 経由で trac にアクセスできるようになりました。

Mercurial プラグインの有効化

この状態では、まだコンポーネントが有効になっていないため Mercurial プラグインが使用できず、画面にエラーが表示されます。

Warning: リポジトリと同期できません (サポートされていないバージョン管理システム "hg" です: 適切なコンポーネントが見つかりません。該当するプラグインが有効に設定されているか確認してください。)。詳細は Trac のログを参照してください。
管理画面「プラグイン」のコンポーネントにチェックを入れて有効にして、設定完了です。 これで、Trac の「リポジトリブラウザ」で Mercurial が使用できるようになりました。