linux:サーバのアーキテクチャを調べるには

パッケージをインストールするとき、どのアーキテクチャを選択すればよいかわからない時はuname -a

# uname -a
Linux localhost.localdomain 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 x86_64 x86_64 GNU/Linux

後ろのほうのx86_64がそのサーバのアーキテクチャ。
他にi386やi686などがある。
noarchは全アーキテクチャ共通のパッケージ

VirtualHost環境にMTOSをインストール

cgi-script のハンドラを有効にします。ついでに.plでもCGIが動くようにします。

/etc/httpd/conf/httpd.conf
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .pl

VirtualHostを定義。
スクリプトは非公開領域で動くようにScriptAliasを設定する。

/etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>>
    DocumentRoot "/path/to/public_html"
    ScriptAlias /cgi-bin/ "/path/to/cgi/"
    ServerName example.com
    ErrorLog "logs/example.com-access.log"
    CustomLog "logs/example.com-error.log" common
</VirtualHost>

“/path/to/cgi”にソースを解答し、/cgi-bin/mt-check.cgiにアクセスして必要なライブラリを確認する。
yumまたはcpanで必要なライブラリを入れる。

yum install perl-GD
cpan> install DBI
cpan> install DBD::mysql
#…以下必要なだけインストール

cgiファイルの権限を変更し実行可能にする。

chmod 755 *.cgi

/cgi-bin/mt.cgiにアクセス。あとはウィザードに従ってインストール。

CentOS:memcachedをインストール

CentOs5.2のリポジトリにmemcachedは無いのでリポジトリを追加する。

cd /usr/local/src
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

mencachedを入れるのに必要なモジュールをインストールする。
たぶんこのあたりを入れておけばおっけーなはず。

yum install gcc
yum install memcached
yum install zlib-devel
yum install php-pecl-memcache

memcachedの設定は/etc/sysconfig/memcachedを編集する。
動かすだけならデフォルトのままでOK。
memcacheの起動

/etc/init.d/memcached start

サービスを自動起動にしておく。

chkconfig memcached on

テストスクリプト


<?php
    $cache = new Memcache;
    $key = 'cache_test';
    $cache->connect('localhost', 11211);
    if(!$cache->get($key)){
        // キャッシュの有効時間は15秒
        $cache->set($key, date('Y-m-d h:i:s'), MEMCACHE_COMPRESSED, 15);
    }
    echo $cache->get($key);
?>

gvimの設定

gvimの設定ファイルは_gvimrc。

_gvimrc
"カラースキーム
:colorscheme LightYellow
"フォント設定
:set guifont=MS_Gothic:h9:cSHIFTJIS
"表示する行数
:set lines=90

MySQL:auto_incrementが最大値まで達したとき

auto_incrementにしたカラムの型がintなら2147483647、bigintなら9223372036854775807がautoincrementの最大になる。

実際に最大値までauto_incrementを進めてみる。

 ALTER TABLE table1 AUTO_INCREMENT= 2147483647;

auto_incrementが最大値に達するともうそのテーブルには行を追加することはできなくなります。

oracleのシーケンスならCYCLEオプションがあるけどmysqlのauto_incrementにはそのような機能は無いらしい。

ではauto_incrementが最大値に達したとき、どうすればよいのか?

単純に

 ALTER TABLE table1 AUTO_INCREMENT= 1;

としても、table1に1より大きいキーが存在する限りauto_incrementは1に戻らない。

 DELETE FROM table1; --データを全部消す。
 ALTER TABLE table1 AUTO_INCREMENT= 1;

ならばauto_incrementは1に戻るので、循環シーケンスと似たような動きにするにはINSERTトリガーで

1. 対象テーブルのauto_increment値が最大に達しているかチェック。最大なら2.へ
2. 対象テーブルのデータを別テーブルに退避
3. 対象テーブルのデータをDELETE
4. ALTER TABLE~でauto_incrementを初期値に設定

という流れになるけど、INSERTの度に1.のチェックを走らせるのはちょっと嫌(1/2147483647の為に余計な処理を入れたくない)。また、退避後のデータをどう扱うかも微妙(UNIONするにしても別のキーが要るし・・・)だから
int autoincrementでキーの枯渇が心配ならbigint型にしたほうがよいと思う。
bigintの最大値は9223372036854775807。intの約42億倍もある。
これは1日に1億個のキーを消費しても2億年持つという計算になる。

MySQL:プロセスをkillする

MySQLにログインして、プロセスの一覧を表示し削除したいプロセスのIDを確認する。

SHOW PROCESSLIST;

IDを指定して削除する。

kill [ID];

php: Smartyのdate_formatで前のゼロを表示しない方法

Smartyのdate_formatで先頭に0をつけない月と日を出力するには、引数の書式指定部分にそれぞれ”-”(マイナス)を付ける。

{$mydate|date_format:'%-m:%-d'}

‘%m%d’なら’07/05′になる。
-をつけて’%-m:%-d’なら’7/5′になる。

php:PEAR phpunitのインストール

足りないPEARライブラリとphp-extensionを入れてから、phpunit/PHPUnitをインストール。

# pear install pear/Image_GraphViz
# pear install pear/Log
# yum install php-common
# yum install php-dom
# yum install php-pdo
# pear install phpunit/PHPUnit

linux:yumレポジトリを一時的に追加する

普段は公式のレポジトリだけチェックしたいけどphpだけは最新にアップグレードしたい。そんなときに。
目的のパッケージがあるレポジトリに対しての設定ファイルを追加する方法。
RPM-GPG-KEYをインストール。

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

/etc/yum.repos.d/の下にrepoファイル追加

/etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

目的のパッケージをアップデートしたらenabledを0に設定し、普段は参照しないようにしておく。

Apache:エラーと対応方法

とりあえず、エラーログを確認すること。全てはそれから。

ドキュメントルートへのアクセスがforbiddenになるとき

こんなエラーのとき
Directory index forbidden by Options directive: /var/www/html/
→Option Indexesが設定されていないため、/でindex.html等にアクセスできていない。

Permission deniedのエラーが出るとき

こんなエラーのとき
(13)Permission denied: access to / denied
ディレクトリのパーミッションを確認する
ユーザディレクトリにドキュメントルートを置いたときはユーザディレクトリも実行可能でないといけない。

 chmod +x /home/ユーザ

seLinuxの設定が怪しいとき

seLinuxが原因かどうかは一時的にseLinuxを切ってみれば解る。
/etc/selinux/configを変更する。

/etc/selinux/config
 SELINUX=disabled

設定後はサーバ再起動が必要

 # reboot

次ページへ »