ZendPHP

広告枠をオンラインで販売中!
広告出稿したい方はオンラインで今すぐ出稿可能。
www.wadoo.jp
 
   
   
   
   

Thursday, 21.08.08

php5のログ設定 debain


PHP5のログ設定
/etc/logrotate.d/php5 を追加

/var/log/php5/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 www-data www-data
        sharedscripts
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

apacheのconfig(コンフィグ)ログ吐き出し設定を追加

php_value display_errors '0'
php_value log_errors '1'
php_value error_log /var/log/php5/www.ドメイン名-error.log

lenny sources.listの設定 apt-get debian

# 
# deb cdrom:[Debian GNU/Linux testing _Lenny_ - Official Snapshot amd64 NETINST Binary-1 20070430-20:39]/ lenny contrib main

#deb cdrom:[Debian GNU/Linux testing _Lenny_ - Official Snapshot amd64 NETINST Binary-1 20070430-20:39]/ lenny contrib main

deb http://cdn.debian.or.jp/debian/ lenny non-free
deb-src http://cdn.debian.or.jp/debian/ lenny non-free

deb http://cdn.debian.or.jp/debian/ lenny main
deb-src http://cdn.debian.or.jp/debian/ lenny main

deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib

ウェブページのスクリーンショットと作るwebshot debian


WEBページのサムネイルを作る設定 ¶

必要なパッケージをapt-getでインストール

sudo apt-get install xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic xfonts-encodings xfonts-utils x-ttcidfont-conf xvfb imagemagick mozilla-plugin-gnash iceweasel libflash-swfplayer libflash-mozplugin xfonts-scalable

xvfbを必ず起動してから webshotを起動

$ ./xvfb start
$ ./webshots サムネイル保存ディレクトリ 対象URL 保存ファイル名

# Xvfbを起動するスクリプト
#!/bin/bash
#
# chkconfig: - 91 35
# description: Starts and stops XVfb. \
#              used to provide virtual frame buffer.
# Source function library.
. /lib/lsb/init-functions
prog=$"Xvfb"
export DISPLAY=:1.0
XVFB=`which Xvfb`
start() {
echo -n $"Starting $prog: "
$XVFB :1 -screen 0 1024x1024x24 &
echo
}
stop() {
echo -n $"Shutting down $prog: "
killall Xvfb
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

#!/bin/bash

THUMBS=$1 #保存先ディレクトリ名
URL=$2 #スクリーンショットつくるページ
PNG=$THUMBS/$3 #保存ファイル名

export DISPLAY=:1.0

cd $THUMBS

if [ `ps aux |grep -v grep | grep firefox |wc -l` -eq 1 ]; then
    exit;
fi

echo 'deleting .mozilla...'
rm -vrf $HOME/.mozilla

echo 'start firefox...'
echo 'going to '$URL...
firefox -display :1 -width 1024 -height 1024 $URL &

echo 'page loading...'
sleep 15

echo 'creating '$PNG...
import -display :1 -window root $PNG

convert $PNG -crop 978x800+0+95 $PNG
convert $PNG -resize 150 $PNG
#convert $PNG -bordercolor "#0000FF"  -border 1x1 $PNG

#rm -vf $x
echo 'deleting ...'
echo $x
rm -f $x

echo 'end firefox...'
killall firefox-bin
sleep 3

cd -

rsync perl スクリプト

#!/usr/bin/perl

use strict;
use vars qw($STAGING_BASE $PRODUCTION_BASE $TARGET $RHOST $EXCLUDES);
use Cwd qw(abs_path);
use File::Spec;

$STAGING_BASE    = sprintf('/home/www/ドメイン名/tags/%s', $ARGV[0]);
$PRODUCTION_BASE = '/home/www/ドメイン名/production';
$RHOST = 'www.ドメイン名';
$EXCLUDES = '/home/www/ドメイン名/scripts/excludes';

die "Usage: $0  \n" unless @ARGV;

$ARGV[0] = undef;
for my $f(@ARGV) {
    do_task($f);
}

sub do_task {
    my($file) = shift;
    return unless ($file);
    my $rsync = "/usr/bin/rsync";
    my($src, $dst);
    if (-d $file) {
    $src = abs_path($file);
    $dst = $src;
    $dst =~ s/^$STAGING_BASE// or die "Incorrect Path\n";
    $dst =~ s,[^/]*$,,;
    $dst = $PRODUCTION_BASE. $dst;
    }
    elsif (-f $file) {
    my($vol, $dir, $fname) = File::Spec->splitpath($file);
    $src = File::Spec->catfile(abs_path($dir), $fname);
    $dst = $src;
    $dst =~ s/^$STAGING_BASE// or die "Incorrect Path\n";
    $dst = $PRODUCTION_BASE. $dst;
    }
    warn "dryrun...\n";
#    system "sudo -u www -H $rsync -n -aCvu --cvs-exclude --exclude-from=$STAGING_BASE/script/excludes --delete -e ssh $src $RHOST:$dst";
#    system "sudo -u www-data -H $rsync -n -aCvu --cvs-exclude --exclude-from=$EXCLUDES --delete $src $dst";
    system "$rsync -n -aCvu --cvs-exclude --exclude-from=$EXCLUDES --delete $src $dst";
    print "sync these files. OK? [y/n]";
    my $res = ;
    if ($res =~ m/^y/i) {
#    system "sudo -u www -H $rsync -aCvu --cvs-exclude --exclude-from=$STAGING_BASE/script/excludes --delete -e ssh $src $RHOST:$dst";
#    system "sudo -u www-data -H $rsync -aCvu --cvs-exclude --exclude-from=$EXCLUDES --delete $src $dst";
    system "$rsync -aCvu --cvs-exclude --exclude-from=$EXCLUDES --delete $src $dst";
    }
    else {
    return;
    }
}

__END__

直近のSVNタグの取得方法

#このスクリプトでタグを作る
#!/bin/bash

test ! $1 && echo 'usage ./create-tag.sh [tag name]' && exit 1;

`which svn` copy -m "Creating tag:$1" file:///home/svn/ドメイン名/trunk file:///home/svn/ドメイン名/tags/$1

exit 0;
svn log file:///レポジトリパス |grep Creating|head -n1|cut -d' ' -f2

postfix簡易設定マニュアル


サーバメール設定

パッケージをインストール

$ sudo apt-get install postfix

    * メールはインターネット上で扱うを設定 

メール設定方法

    * /etc/postfix/main.cf を編集

      編集パラメータ
      mydestination = ドメイン名

アカウントを追加

    * /etc/aliases を編集 :「コロン」前がアカウントです。 

●追加設定

commit-watcher: 転送先メールアドレス
これは、subversionのコミットを通知するメールです。


●設定方法

/etc/aliasesにエイリアスを追加して、
最後に
$ sudo newaliases
を起動

SSL設定サンプル

SSL設定

    * csrを作る

         - opensslをインストールしておく (apt-get install openssl)
           $ sudo apt-get install openssl

         - ssl keyを保存するディレクトリを作成
           $ cd /etc/apache2
           $ sudo mkdir ssl
           $ cd ssl

         - passphrase関連の準備
           使用するパスワードをpassphraseに保存し、sslpasscat用のshellを準備
           $ sudo touch passphrase
           $ sudo echo 'パスワード' > passphrase
           $ sudo touch sslpasscat

           -- sslpasscatのファイルの中身 --
           #!/bin/bash
           cat /etc/apache2/ssl/passphrase
           -- ここまで --

           実行権限を与える
           $ sudo chmod 755 sslpasscat

         - keyを生成する(パスワードは上記のpassphraseに記入したもの)
           $ sudo openssl genrsa -des3 -out s.ドメイン名.key 1024

         - 上記で作ったキーでcsrを生成する
           $ sudo openssl req -new -key s.ドメイン名.key -out s.ドメイン名.csr

           入力項目:
           国: JP
           地区: Tokyo
           市区: Minato-ku
           組織: ItoKuro, Inc.
           部署: Tech
           common name: s.ドメイン名

           入力後に聞かれるchallenge passはblank(無視)する

         - 入力項目の確認方法
           $ sudo openssl req -noout -text -in s.ドメイン名.csr

         - 最後に、ここで生成したcsrを使って、rapidss.comからcrtを取得する

    * crtを取得後

         - apache2.2 common にある雛型を使いsslの設定ファイルの準備
           $ sudo zcat /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz > /etc/apache2/site-available/ssl

         - 準備後、下記のコマンドでsslの設定準備
           $ sudo /usr/sbin/a2ensite ssl
           $ sudo /usr/sbin/a2enmod ssl

         - /etc/apache2/site-enabled/sslの設定

           # sslpasscatの準備
           SSLPassPhraseDialog exec:/etc/apache2/ssl/sslpasscat

           # vhを明示的に指定
           

           # ドキュメントルートを指定
           DocumentRoot "/home/www/ドメイン名/production/document_root"

           # common nameをServerNameに指定
           ServerName s.ドメイン名:443

           # ドメイン取得時に利用したドメイン管理メールを指定
           ServerAdmin ssladmin@ドメイン名

           # sslのerrorとaccessログを明示的に指定
           ErrorLog /var/log/apache2/s.ドメイン名-error_log
           TransferLog /var/log/apache2/s.ドメイン名-access_log

           # crtを指定
           SSLCertificateFile /etc/apache2/ssl/s.ドメイン名.crt

    * sslのコンフィグ

      

          DocumentRoot /home/www/ドメイン名/production/document_root
          ErrorLog  /var/log/apache2/s.ドメイン名-error.log
          TransferLog /var/log/apache2/s.ドメイン名-access_log

          SSLEngine on
          SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

          SSLCertificateFile /etc/apache2/ssl/s.ドメイン名.crt
          SSLCertificateKeyFile /etc/apache2/ssl/s.ドメイン名.key

          
              SSLOptions +StdEnvVars
          

          
              Header set P3P "policyref='http://www.ドメイン名/p3p.xml', CP='CAO PSA OUR'"
              Header set X-Powered-By "PHP5 ZendFramwork"
          

          BrowserMatch ".*MSIE.*" \
                   nokeepalive ssl-unclean-shutdown \
                   downgrade-1.0 force-response-1.0

          CustomLog /var/log/apache2/ssl_request_log \
                    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

          RequestHeader set X_FORWARDED_PROTO 'https'

          

              ServerSignature Off

              php_value session.save_path '/home/www/ドメイン名/production/application/sess'

              RewriteEngine On

              RewriteCond %{REQUEST_URI} (login|signup)
              RewriteRule ^(login|signup) http://www.ドメイン名/error/mente [L,R]

              RewriteCond %{REQUEST_URI} !(SSLを通さないページパス)
              RewriteRule ^(.*)?$ http://www.ドメイン名/$1 [L,R]

              RewriteCond %{SCRIPT_FILENAME} !-f
              RewriteCond %{SCRIPT_FILENAME} !-d
              RewriteRule ^(.*)$ index.php/$1

              Options FollowSymLinks
              AllowOverride All
              DirectoryIndex index.html index.php
              AddType application/x-httpd-php .php

          

      

APACHE側の設定へ 特定のページのみSSLを使う

        RewriteCond %{SERVER_PORT} !^443$
        RewriteCond %{REQUEST_URI} (login|signup)
        RewriteRule ^(login|signup)(.*)?$ https://s.ドメイン名/$1$2 [L,R]

SVNの設定手順サンプル post-commitの利用方法

SVN設定

パッケージをインストールする

$ sudo apt-get install subversion subversion-tools

subversionを使うユーザにsudo nopass権限を付与する

$ sudo visudo
kiyota ALL=(ALL) NOPASSWD: /usr/bin/svn
yuki ALL=(ALL) NOPASSWD: /usr/bin/svn
jiyoun  ALL=(ALL) NOPASSWD: /usr/bin/svn

www-dataにユーザを追加する

$ sudo vi /etc/group
# こんな感じで
www-data:x:33:ユーザアカウント名

レポジトリの作成

$ sudo svnadmin create --fs-type fsfs レポジトリ名

パーミッションを変更

$ sudo chown www-data -R レポジトリ名ディレクトリ
$ sudo find レポジトリディレクトリ -type d | xargs sudo chmod 2775
$ sudo find レポジトリディレクトリ -type f | xargs sudo chmod 664

レポジトリ/hooks/post-commit.tmplを実行可能にする

$ cd レポジトリ/hooks/
$ sudo cp post-commit.tmpl post-commit
$ sudo chmod 775 post-commit

post-commitを編集する

    * まず通知先メールの設定をする。postfixを使うとデフォルトの設定では動かないので、下記の用に変更する。
    * commit-watcherはPOSTFIX設定を参照してください。

      【変更前】
      /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
      【変更後】
      /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" --from commit-watcher@メールドメイン名 commit-watcher@メールドメイン名

    * 続いて、コミット後プロジェクト名を更新したいので、下記を追加する。

      sudo -u www-data -H svn update /home/www/プロジェクト名/test/application/
      sudo -u www-data -H svn update /home/www/プロジェクト名/test/document_root/
      sudo -u www-data -H svn update /home/www/プロジェクト名/scripts

Sunday, 08.06.08

プチ宣伝。

jfk - pencil 17:21:01 - 日記 - pencil permalink - Add comment!

Tuesday, 27.05.08

mytop シェルスクリプト メモ

#!/bin/bash

# データベース名を取得
echo -n 'Enter Database Name > '
read dbname

# ユーザ名を取得
echo -n 'Enter User Name > '
read username

# パスワードを取得
echo -n 'Enter Password > '
read password

mytop -u$username -p $password -d $dbname  -s 1