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
プチ宣伝。
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
01:43:09 -




