4.4がでたようなので、さっそく(笑)、テスト用のサーバで4.3からyum updateしてみる。X-WindowとかはいれてないWebサーバ系なのだけど、213Mもアップデートが来たけど、問題なくアップデートされました。
CentOS使うなら、RHELのドキュメントにも目を通しておきましょう。(日本語)
Red Hat Enterprise Linux 4 ドキュメント(RedHat)
CentOSのドキュメントはこちら(英語)
CentOS-4 Documentation(CentOS)
まるごとPHP!(Vol.1)は持ってるけど、他のは買おうかどうかメモしておく。
極める ! PHP
坂井 恵, 坂井 恵, 上鍵 忠志, 田中 正裕, 月宮 紀柳, 森川 穣
翔泳社 / ¥ 1,764 (2005/06/02)
超・極める! PHP
秋元 裕樹, 市橋 一宣, 大垣 靖男, 小山 哲志, 上鍵 忠志, 高橋 邦彦, 田中 正裕, 月宮 紀柳, 鶴岡 達也, 鶴岡 直也
翔泳社 / ¥ 1,995 (2006/05/18)
RHEL(またはCentOS)の3からは、nkfがなくなってます、ちょっといれといてくれればいいのにって感じですが、代わりの方法としてiconvで以下のようにすれば変換できます。
iconv -f EUC-JP -t UTF-8 変換元 > 変換先
とはいいつつ面倒なので、コンパイルしていれちゃいました。
nkf Network Kanji Filter(SOURCE FORGE JP)
しかし、最近は、RPMでのみの管理してるので、開発環境はいれてないから、yum groupinstall “Development Tools”とかして、しこたまインストールしないといけない罠が。。orz
ついでに、RHEL4からは標準の日本語環境がUTF-8になってしまってるので、ターミナルの設定変更や(これは変えればいいだけだけど)、他のEUC-JPのマシンからSSHとかでログインしたときに文字化けしていや~んなので、ロケールを変える方法
/.bashrc
export LANG=ja_JP.eucJP
export LC_ALL=ja_JP.eucJP
2007/04/23追記>
CentOS5ではnkfが復活したようです。
$ rpm -qa | grep nkf
nkf-2.07-1.1.fc6
MacのCSVファイルなどのテキスト形式は改行が「CR」なのでうまくよめませんってトラブル
PHPのfgetcsvヘルプ内より
注意: マッキントッシュコンピュータ上で作成されたファイルを読み込む際に、 PHP が行末を認識できないという問題が発生した場合、実行時の設定オプションauto_detect_line_endings を有効にする必要が生じるかもしれません。
とのことなので、
php.iniで「auto_detect_line_endings」を「On」にするか、
PHPプログラムの冒頭で
ini_set(“auto_detect_line_endings”, “1”);
としましょう。
Server版のみですが、UbuntuのSPARC版がでました。
Debianは、次のetchでは、SPARCが外れちゃいそうなので、ちょっと期待。
もう捨てるのを待ってるSPARCのマシンにいれるだけなんだけどね(^^;
Ubuntu 6.06 LTS (Dapper Drake)
リモートデスクトップつながりで、LinuxなどからWindowsに繋ぐ時は、rdesktopを使えばOKです。(こちらはコンソールは無理かしらん?)
rdesktop -k ja -u ユーザ名 -a 色深度 -g 解像度 コンピュータ名またはIPアドレス
rdesktop -k ja -u desktop -a 24 -g 1024×768 192.168.0.1
逆にWindowsからLinuxへ繋ぐんだったら、VNC系ですが、コンソールへ繋ぎたい場合は、x0rfbserverを使うとコンソールにはいれます。(監視用の画面だけ表示させているLinuxクライアントの画面を確認する場合などに便利?)
Debianの場合
apt-get install rfb
サーバのキーボードが急に英語キーボードになった、インストールしたとき間違えて英語キーボードにしちゃったなどのときにコンソールのキーボード配列を変更する方法
RedHat系
/etc/sysconfig/keyboard
JPの場合
KEYBOARDTYPE="pc"
KEYTABLE="jp106"
USの場合
KEYBOARDTYPE="pc"
KEYTABLE="us"
debian
JPの場合
cp /usr/share/keymap/i386/qwerty/jp106.kmap.gz /etc/console/boottime.kmap.gz
USの場合
cp /usr/share/keymap/i386/qwerty/us.kmap.gz /etc/console/boottime.kmap.gz
一時的に適応してみる
loadkeys /etc/console/boottime.kmap.gz
スワップパーティション(72)でなく、ファイルでスワップパーティションを作ってみる
cd /
512M確保
dd if=/dev/zero of=swapfile bs=1024 count=524288
mkswap swapfile
swapon swapfile
確認
cat /proc/swaps
スワップから外す
swapoff swapfile
起動時にマウントするときは/etc/fstabに以下を追加
/swapfile none swap sw 0 0
臨時でRHEL3にPoundを入れてSSLのリバースプロキシとすることに。
RHELにはPoundのRPMパッケージはなさそうなのと、Poundなのでソースからコンパイルしてもたかがしれてると思ったら、まんまとハマリorz
SSLラッパーにしたいので、SSLのライブラリは指定する必要はあります。
そこで、opensslのヘッダーファイルは /usr/include/openssl なので、
./configure --with-ssl=/usr
でおっけ~おもいきや、
cc -DF_CONF="/usr/local/etc/pound.cfg" -g -O2 -pthread -DUPER -DNEED_STACK -DHAVE_SYSLOG_H=1 -I/usr/include -D_REENTRANT -D_THREAD_SAFE -Wstrict-prototypes -pipe -c -o pound.o pound.c
pound.c:236 から include されたファイル中:
pound.h:156:2: #error "Pound needs openssl/ssl.h"
以下省略
とな。。はぁ??
なんでか、わかんねーとおもってぐぐってたら、
tar xvzf Pound-1.10.tgz
cd Pound-1.10
./configure --with-ssl=/usr/kerberos
make
make install
でいけることが判明。
よくわかんねーけど、とりあえずうまくいきました。
pound.cfgの設定などは、過去のこのあたりをどうぞ。
qmailのアドオンのqmail-scannerで、ClamAVとSpamAssassinを組み合わせてウイルスチェックとスパム検出をしてみる。
この時、素?のqmail-scannerでは、ウイルスは検出して遮断(横取り)してくれますが、スパムの検出はヘッダや、Subjectにフラグを付与するだけで、遮断することができません。(たぶんqmail-scannerのポリシー)
そこで、SpamAssassinの結果に応じて、遮断、拒否等の設定ができるqmail-scannerの便利なパッチがあったので、入れてみるテスト
Qmail-Scanner-1.25st (st patch)
qmail,clamav,spamassassin,qmail-scannerは適当にいれてあるものとします(^^;
tar xvzf q-s-1.25st-20050406.tgz
cd qmail-scanner-1.25st/
./configure
--admin 管理者メール「@より前」
--domain 管理者ドメイン 「@より後ろ」
--local-domains "検査するドメイン名"
--notify admin
--debug no
--fix-mime no
--scanners clamdscan,verbose_spamassassin
--sa-quarantine 1.5
--sa-forward 横取りしたメールを転送するアドレス
--sa-delete 10
--sa-reject yes
--install
設定の仕方はいろいろあるので、それぞれ調べてもらえばいいのですが、上の例では、
–notify admin
ウイルス、スパムを検出した結果はadmin宛てに連絡する
–sa-quarantine 1.5
仮にspamassassinの判定基準が5.0の場合
5.0+1.5=6.5以上のポイントのメールを横取りする
–sa-forward MailAddress
横取りしたスパムメールを指定のアドレスへ転送する
–sa-delete 10 –sa-reject yes
5.0+10=15.0以上のポイントのメールにはSMTPで「554」のエラーを回答し受信拒否する
運用
/var/spool/qmailscan/qmail-queue.log
/var/spool/qmailscan/quarantine.log
この二つのファイルがログになるので、適当にローテーションしておきましょう
/var/spool/qmailscan/log-report.sh /var/spool/qmailscan/qmail-queue.log
ログの解析(ウイルス検出の種類と数、スパムのフラグ付けた(tagging)、横取りした(quarantining)、拒否した(rejecting))を表示するツールがついています、.gzにしてあるファイルも喰わせることができるようになってます
最近テスト用のetch環境で
W: GPG error: http://http1.debian.or.jp etch Release:
The following signatures couldn't be verified because the public key
is not available: NO_PUBKEY 010908312D230C5F
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません
のようなエラーが最近出るようになったので調査
どうもAPTでパッケージの署名を確認する際のGPGの鍵をいれないといけないみたい
(検証を無視すればパッケージはインストールできますが気分が悪いので)
※参考URL
secure apt(KeN’s GNU/Linux Diary)
詳細は武藤さんのところが詳しいのですが、とりあえず対処方法
ftp-master.debian.orgの
The release files are signed by an automatic archive signing key.
The 2006 key can be downloaded here
のdownloaded hereから2006年の鍵をダウンロード
サーバになんとかしてもっていって
#apt-key add ziyi_key_2006.asc
gpg: 絶対的に信用する鍵が見つかりません
OK
なんかや~なメッセージがでますがOKってことで(笑)
確認
#apt-key list
/etc/apt/trusted.gpg
--------------------
pub 1024R/1DB114E0 2004-01-15 [満了: 2005-01-27]
uid Debian Archive Automatic Signing Key (2004)
pub 1024D/4F368D5D 2005-01-31 [満了: 2006-01-31]
uid Debian Archive Automatic Signing Key (2005)
pub 1024D/2D230C5F 2006-01-03 [満了: 2007-02-07]
uid Debian Archive Automatic Signing Key (2006)
PoundでSSL対応のリバースプロキシをやってみましょう
Debianのパッケージを使いますが、ソースでコンパイルしても小さいのでどっちでもいいと思います。
とりあえずインストール
apt-get pound
秘密鍵作成
cd /etc/pound
openssl genrsa -des3 -out server.key 1024
パスフレーズ除去
openssl rsa -in server.key -out server.key
証明書作成
openssl req -new -key server.key -x509 -out server.pem
秘密鍵ファイルを追加してPound用のサーバ証明書作成
cat server.key >> server.pem
Poundの設定ファイル編集
/etc/pound/pound.cfg
ListenHTTPS 自分のIP,443 /etc/pound/server.pem
#ListenHTTPS 自分のIP,80 ←普通のリバースプロキシの時
##
UrlGroup ".*"
#BackEnd WebサーバのIP,ポート番号,1
BackEnd 192.168.1.100,80,1
EndGroup
他にも、バーチャルホストができたり、ロードバランスもできるのですが、どれも設定は、簡単です。
うちでは、Debian(Sarge)でqmail + qmail-scanner + SpamAssassin + ClamAVでメールサーバのウイルスとスパムのチェックをしているわけですが、最近、必要なメールをClamAVがZip.ExceededFileSizeで検出してしまっているようなので設定変更。
と、その前にDebian(Sarge)でClamAVを使うには、
apt-lineへ以下の行を追加して
#ClamAV
deb http://ftp2.jp.debian.org/debian-volatile sarge/volatile main
海外の方は適当にミラーサイトを指定してください。
apt-get update
apt-get install clamav clamav-daemon unrar lha arj debconf-utils unzoo
ぐらいでインストールされるでしょう。
Debianはstableだとバージョンはあがらないので、オフィシャルのパッケージだと、パターンのアップデートでバージョンが古いよって警告がでてしまうし、そもそも古いのはダメでしょうということで、Debian volatile projectのを使いましょうということですね。
自分的にはオフィシャルが基本ですが、これだけはDebian volatile projectのを使ってます。
んで、問題の「Zip.ExceededFileSize」ですが、パッケージでインストールしている場合だと以下のようになっています。
/etc/clamav/clamd.conf
ArchiveMaxCompressionRatio 250
こいつを
/etc/clamav/clamd.conf
ArchiveMaxCompressionRatio 1000
ぐらいにしておきました。
他圧縮関係のデフォルト値では、
再帰的に解凍・展開する際の深度の上限(5まで)
ArchiveMaxRecursion 5
圧縮ファイル内の最大ファイル数の上限(1000ファイルまで)
ArchiveMaxFiles 1000
回答・展開する圧縮ファイルの容量の上限(10Mまで)
ArchiveMaxFileSize 10M
解凍後の比率がこれより大きくなるときは、「Zip.ExceededFileSize」とする(250%以上)
ArchiveMaxCompressionRatio 250
他は以下の関連URL参照
関連
binary packages and ports(ClamAV)
4.2.2.clamav.confの設定(ClamAVのページ)
2005/09/26追記
でっかいテキストをzipにしてると、まだ引っ掛かるようなので、以下のように変更しました。
/etc/clamav/clamd.conf
ArchiveMaxFileSize 100M
ArchiveMaxCompressionRatio 1000
2005/09/27追記
さらにパラメータ変更、変更したパラメータは元に戻して
ArchiveBlockMaxをコメントアウトして、規定以上の圧縮ファイルは検査しないことにして対応しました。
/etc/clamav/clamd.conf
ArchiveMaxFileSize 10M ←元に戻す
ArchiveMaxCompressionRatio 250 ←元に戻す
#ArchiveBlockMax ←コメントアウト
DebianのPHP4でMicrosoftSQLServerと接続してるメモ
とりあえず、必要なものをインストール
apt-get install apache2 php4 libapache2-mod-php4 php4-sybase
php4-sybase がはいってればOK
SQLサーバとの接続設定(freetdsの設定)
/etc/freetds/freetds.conf
[サーバ名]
host = サーバのIPアドレス
port = 1433
tds version = 7.0 (SQLServer6.5なら、4.2)
charset = sjis
client charset = eucjp
language = japanese
接続テスト
$con = mssql_connect("サーバ名", "ログインID", "パスワード");
mssql_select_db("DB名", $con);
$sql = "SELECT * FROM test";
$rs = mssql_query($sql, $con);
$tmp = mssql_result ($rs, 0, 0);
print "Test : {$tmp}";
mssql_close($con);
ハマリ
SQLサーバ側のテーブルの定義でnvarcharの列がある場合、もってくるとなぜか半分のバイトになってちょんぎれたので、varcharとかにCASTで変換する必要がありました。
$sql = “select NAME,cast(NAME as varchar(50)) from test”;
前に全部ソースから入れてみてうまく行かなかったんですが、Debianのパッケージで全部すませたらあっさり繋がりました。
Apache2でクライアント証明書認証(Debian Sarge)
Debian(Sarge)のApache2とopensslを使って、独自CAを作成し、クライアント証明書を発行しその証明書で認証してみるメモ
とりあえずapache2のインストール
openssl等必要なものは一緒にインストールされます。
apt-get install apache2
◆独自認証局の作成
認証局CAの作成
今回作業用フォルダは/etc/sslを前提にしています。
CA関係のファイルは/etc/ssl/CA
サーバ証明書、クライアント証明書は/etc/apache2/ssl
へそれぞれ入れることとします。
cd /etc/ssl
vi openssl.cnf (CA関係のファイルをいれるフォルダ)
>dir = ./CA # Where everything is kept
※CA作成用のスクリプトの雛形コピー
cp /usr/lib/ssl/misc/CA.sh ./
vi CA.sh
>CATOP=./CA
認証局CAの作成
cd /etc/ssl
./CA.sh -newca
CA certificate filename (or enter to create)
止まるので改行をいれる
Making CA certificate ...
Generating a 1024 bit RSA private key
.............++++++
.......++++++
writing new private key to './CA/private/./cakey.pem'
Enter PEM pass phrase: CAの秘密鍵のパスフレーズ
Verifying - Enter PEM pass phrase: CAの秘密鍵のパスフレーズ確認
Linuxをいれてはみたが、やっぱり仕事がらWindowsがメインなので、ブートローダーはNT Loaderにしておきたいなということでメモ
前提条件
Linuxのブートローダ(GRUBやLILO)はMBRでなく、インストールしたパーティションの先頭にいれてあること(hda6とか)
まちがってMBRにインストールしてNT Loaderに戻したいときはこのへん
その1(Linuxでも作業)
1.ブートセクタをddコマンドで抜き出して保存
dd if=/dev/hda6 of=ubuntu.pbr bs=512 count=1
2.WindowsのC:などに抜き出したファイルをどうにかしてもってくる
c:ubuntu.pbr
3.boot.iniへ以下のように追加する
c:ubuntu.pbr=”Ubuntu”
その2(Windowsのみで作業)
1.BootPartをダウンロードし解凍
2.コマンドプロンプトより「bootpart.exe」を起動しパーティションの一覧表示
E:Tempbootpa26>bootpart.exe
Boot Partition 2.60 for WinNT/2K/XP (c)1995-2005 G. Vollant (info@winimage.com)
WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm
Add partition in the Windows NT/2000/XP Multi-boot loader
Run "bootpart.exe /?" for more information
Physical number of disk 0 : 1ecfb89b
0 : C:* type=7 (HPFS/NTFS), size= 10482381 KB, Lba Pos=63
1 : C: type=f (Win95 XInt 13 extended), size= 28587667 KB, Lba Pos=20964825
2 : C: type=7 (HPFS/NTFS), size= 4192933 KB, Lba Pos=20964888
3 : C: type=5 (Extended), size= 10241437 KB, Lba Pos=29350755
4 : C: type=7 (HPFS/NTFS), size= 10241406 KB, Lba Pos=29350818
5 : C: type=5 (Extended), size= 7815622 KB, Lba Pos=49833630
6 : C:* type=83 (Linux native), size= 7815591 KB, Lba Pos=49833693
7 : C: type=5 (Extended), size= 5855692 KB, Lba Pos=65464875
8 : C: type=83 (Linux native), size= 5855661 KB, Lba Pos=65464938
9 : C: type=5 (Extended), size= 481950 KB, Lba Pos=77176260
10 : C: type=82 (Linux swap), size= 481918 KB, Lba Pos=77176323
3.パーティションの一覧からLinuxのブートローダのパーティション番号を調べる
今回は「6」です。
4.「bootpart.exe 6 c:ubuntu.pbr “Ubuntu”」のように入力する
「6」はLinuxのパーティション番号
「c:ubuntu.pbr」ブートセクタの抜き出したファイル名(任意)
「”Ubuntu”」NT Loaderで選択する名前(任意)
5.以下のように表示されboot.iniも自動で書き換えられます。
Writing a boot sector using LBA position 49833693 (0x2f866dd)
c:ubuntu.pbr written
C:BOOT.INI updated
6.リブートしてみて確認
Trackback モジュール(Drupal PostgreSQL)
trackbackしていただいた方、ごめんなさい
DrupalのTrackbackモジュールにバグがあってエラーになってました。
エラーログで赤くでてたのを見なかったことにして無視してたのですが(^^;
2件目から追加されてませんでした。
たぶん、このDrupalをPostgreSQLで使ってる人があまりいないので、気づかれないのかなー
修正点をメモしておきます。
SELECT nextval(trackback_received_seq) でトラックバックをシーケンスで取ってるところがあるのに、integerの宣言だけになってるので、nextval()関数が動かなくてエラーになってました。
テーブルを作り直すなら、以下のSQLを流せばよいでしょう。
> DROP TABLE trackback_received;
CREATE TABLE trackback_received (
nid integer NOT NULL,
trid serial,
created integer NOT NULL,
site varchar(255) NOT NULL,
name varchar(60) NOT NULL,
subject varchar(64) NOT NULL,
url varchar(255) NOT NULL,
excerpt varchar(255) NOT NULL,
status smallint default '0',
PRIMARY KEY (trid)
);
どうしてもテーブルを作り直したくないガンコな人は、
CREATE SEQUENCE trackback_received_trid_seq; のSQLを流してシーケンス作成
trackback_receivedテーブルのtridのデフォルトをnextval(‘public.trackback_received_trid_seq’::text)に変更
でもたぶん、OKでしょう。
サーバはs151
drupal-4.6.2
drupal.orgのDownload latest releaseのあたりからダウンロード。
tar.gz形式なので、PCで解凍して、XREAの/public_html内にアップロード
※ディレクトリをつくるなり適当に /drupalとか
今回は、/public_html/drupalへいれるものとします。
.htaccessの編集
広告の自動挿入をされるとうまく表示できないので自動挿入は停止
Drupal内の設定で広告を挿入するようにします。
/public_html/drupal/.htaccess
LayoutIgnoreURI * を1行挿入
tmpとfileのフォルダ作成
/public_html/drupal/files
/public_html/drupal/tmp
を作成し、この二つのディレクトリのみパーミッションを「777」にしておく。
PostgreSQLのDB作成
XREAの管理画面にてデータベース作成
PostgreSQLの場合、文字コード選択でUNICODEを選択(重要)して作成ボタンをおしてください。
MySQLでやりたい場合は、MySQLの作成ボタンを押しておいてください。
#作成まで、15分ぐらい?待つ!
PostgreSQLのテーブル作成
上のXREAの管理画面にてPhpPgAdminでも、SSHにてログインしてpgsqlでもどちらでもいいですが、
database/database.pgsql
のSQLを流して必要なテーブル作成
MySQLの場合は、database.mysqlです。
DrupalのDB接続設定
/public_html/drupal/sites/default/settings.php
をダウンロードして、以下の2行を自分にあわせて書き換え、アップロード
$db_url = "pgsql://ユーザID:パスワード@''/DB名(ユーザID)";
$base_url = 'http://ユーザID.s151.xrea.com/drupal'; (最後の/は無し)
#PostgreSQLの場合、サーバアドレスでlocalhostが動かないようなので
#''とすることでつなぐようにしました。
MySQLの場合
$db_url = 'mysql://username:password@localhost/database';
管理者ユーザ作成
http://ユーザID.s151.xrea.com/drupal/ へアクセスすると
管理者ユーザを作れといってくるので、create the first account.のリンクへアクセスしID,メールアドレスを入力。
Your password is hogehoge. とでますが、すぐにLog inし、my accountのeditでパスワードを変えておきましょう。
日本語化
管理者でログイン後の左のメニューadministrator->modulesより
localeのモジュールにチェックをつけて、下のSave configurationをクリック
すると左のメニューにlocalizationのメニューが追加されます。
Drupal4.6.1日本語翻訳ワーク
Japanese translation(日本語)
このへんから日本語翻訳ファイルをダウンロード
administrator->localizationからadd languageを選んで
ドロップダウンのメニューより、Japanise(日本語)を選択、Add language
listの画面にてjaをEnabledとDefaultにしてSave configurationをクリック
importの画面にて、Language file を上でダウンロードしたファイル
import intoはJapaneseを選択し、Importボタンをクリック
以下日本語になっている状態で説明します。
初期設定など
管理->設定
クリーンURL 有効(URLに?とかつかないようにする)
ファイルシステムのパス files
テンポラリーディレクトリ /tmp → tmp へ修正(/を削除)
デフォルトのタイムゾーン +0900へ変更
広告挿入
管理->テーマのプライマリーリンクに広告挿入のタグをいれておくとデフォルトのテーマの場合は、いい感じに表示されます。
cronジョブ
XREAの無料のところではCRONが使えないので、
どっかから適当に毎日
http://ユーザID.s151.xrea.com/drupal/cron.php
へアクセスするようにしておく。
最近のコメント