目次
下記のコマンドでOS時刻をntpサーバに同期できる。
[root@XXXXX ~]# ntpdate ntp.nict.jp
ntp.nict.jpは日本標準時を供給している独立行政法人情報通信研究機構(NICT)の公開NTPサーバ。
ntpdateコマンドで時刻同期させても、その後時間の経過とともにOS時刻にズレが生じるので、cronで定期的に時刻同期を行い、正確さを保つようにする。cronとは、決められた時刻にコマンドを定期的に実行させるためのデーモンプロセス。
まずは、cronが動作しているかどうか確認。
[root@XXXXX ~]# /etc/rc.d/init.d/crond status crond (pid ****) is running... ←動作中
動作していない場合は起動する。
[root@XXXXX ~]# /etc/rc.d/init.d/crond start Starting crond: [ OK ]
cronの設定を行う。
[root@XXXXX ~]# crontab -e
初期状態では何も設定されていない(空欄)ので設定を追加する。
(例)毎日AM6時に時刻同期を行う場合 0 6 * * * ntpdate ntp.nict.jp (※cronの設定については詳しく説明されたサイトが他にあるので割愛)
設定を終了すると、
crontab: installing new crontab
とコンソールに表示される。
(cronの参考にしたサイト → Linuxで自宅サーバ構築»Linux»cronの設定・実行)
コマンド実行時、画面にコマンド実行結果が表示されるが量が多くて表示しきれない場合がある。
例えば make コマンドは、エラーが起こっても途中で終了せず、以降の処理を続けることがあるが、どこで失敗したのか画面上で確認したくても、
画面上からスクロールしてしまっており確認できないことが多い。だからといって、出力をファイルにリダイレクトしてしまうと、画面上で処理過程を見ることができなくなってしまう。
以上のように出力内容を後から見返したい場合もあるのでコマンド実行結果をログとして残す場合は tee コマンドを使用して下記のようにすることで、画面とファイルの両方に出力される。
(例) opensslのconfig時のログをソースフォルダに20130207_config.logとして残す場合 [root@XXXXX ~]# cd /usr/local/src/openssl-1.0.1d [root@XXXXX openssl-1.0.1d]# ./config --prefix=/usr --openssldir=/etc/pki/tls shared | tee 20130207_config.log
tee コマンドの後ろには複数のファイル名を記述する事もできる。また、-a オプションを付けると同名ファイルがある場合には上書きせずに追記することができる。
参考サイト:Linux/CentOS ネットワーク実験室-第9話/ファイルシステムの管理
# modprobe floppy
# mkdir /mnt/floppy
# vi /etc/fstab /dev/fd0 /mnt/floppy vfat noauto 0 0 ← この1行を追加
# visudo 〜(略)〜 ## Allow root to run any commands anyware root ALL=(ALL) ALL hoge ALL=(ALL) ALL ← この1行を追加
# modprobe floppy
# mount /mnt/floppyroot以外では
$ sudo mount /mnt/floppy
# umount /mnt/floppy
NASには共有フォルダとユーザー、パスワードを設定しておく
今回は
共有フォルダ名:backup ユーザー名:hoge パスワード:hogehoge
#mkdir /mnt/backup
#vi /etc/fstab最後の行に下記を追加
//100.100.100.100/backup /mnt/backup cifs rw,user=hoge,password=hogehoge 0 0
#mount /mnt/backup
どこかのサイトからそのまま拝借して修正
tracとsubversionで1プロジェクトを構成 ~/proj01ディレクトリにtracとsvnのディレクトリがある tracのDBにはPostgreSQLを使用 subversionはfsで運用(BerkeleyDBは使っていない バックアップ先にはNASを利用
#chmod 755 /path/backup.sh
sudo: sorry, you must have a tty to run sudoなのでsudoの設定を修正。
#visudo #Defaults requiretty ←この行をコメントアウト
#!/bin/bash
#
# ローカル内でバックアップ
#
LANG=C
#
# 設定開始
#
# バックアップ先ディレクトリ名
BACKUPDIR=/mnt/backup
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=3
# バックアップログファイル名
BACKUPLOG=$BACKUPDIR/backup.log
#PostgreSQL
PGPATH=/usr/local/pgsql/bin
#
# 設定終了
#
cd $BACKUPDIR
#==========================================================================
# 前回バックアップをリネーム
#==========================================================================
#Log
BACKUPFILE=`ls backup.log 2>/dev/null`
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{print $6}'|tr -d -`
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}$BACKUPFILE > /dev/null 2>&1
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj01
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=`ls ${PROJ_NAME}_pgdump.backup.gz 2>/dev/null` ;;
'2') BACKUPFILE=`ls ${PROJ_NAME}_trac.tar.gz 2>/dev/null` ;;
'3') BACKUPFILE=`ls ${PROJ_NAME}_svn.tar.gz 2>/dev/null` ;;
esac
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{print $6}'|tr -d -`
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}$BACKUPFILE > /dev/null 2>&1
fi
done
done
#//
#//
#///////////////////////////////////////////////////////////
#==========================================================================
# バックアップログファイル作成
#==========================================================================
rm -f $BACKUPLOG
touch $BACKUPLOG
chmod 400 $BACKUPLOG
#==========================================================================
# バックアップ実行
#==========================================================================
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01
PROJ_PATH=/home/htdocs/Sample/proj01 ;;
'2') PROJ_NAME=Sample-proj02
PROJ_PATH=/home/htdocs/Sample/proj02 ;;
'3') PROJ_NAME=Sample-proj03
PROJ_PATH=/home/htdocs/Sample/proj03 ;;
esac
# tracのDBバックアップ
echo "`date` backup start [DB:trac_${PROJ_NAME}]" >> $BACKUPLOG
sudo -u postgres $PGPATH/vacuumdb trac_${PROJ_NAME} >> $BACKUPLOG 2>&1
sudo -u postgres $PGPATH/pg_dump --file=${PROJ_NAME}_pgdump.backup trac_${PROJ_NAME} >> $BACKUPLOG 2>&1
gzip ${PROJ_NAME}_pgdump.backup >> $BACKUPLOG 2>&1
echo "`date` backup end [DB:trac_${PROJ_NAME}]" >> $BACKUPLOG
for i in trac svn
do
echo "`date` backup start [${PROJ_NAME} ${i}]" >> $BACKUPLOG
tar czvfP $BACKUPDIR/${PROJ_NAME}_${i}.tar.gz $PROJ_PATH/${i} >> $BACKUPLOG 2>&1
echo "`date` backup end [${PROJ_NAME} ${i}]" >> $BACKUPLOG
done
done
#//
#//
#///////////////////////////////////////////////////////////
#==========================================================================
# バックアップ保存世代を超えた古いバックアップを削除
#==========================================================================
#Log
BACKUPFILE=$BACKUPDIR/*backup.log
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BACKUPGEN`
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_pgdump.backup.gz ;;
'2') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_trac.tar.gz ;;
'3') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_svn.tar.gz ;;
esac
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BACKUPGEN`
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
done
done
#//
#//
#///////////////////////////////////////////////////////////参考サイト:NEC 8番街 - croの設定ガイド
#crontab -e
毎日1時に実行
0 1 * * * /path/backup.sh
日時指定の書式は左から「分、時、日、月、曜日」それにコマンドが続く
上記の例では「1時0分」それ以外が「*」なので毎日実行される。
これが例えば
0 1 1 * * /path/backup.sh
だったら毎月1日の1時0分に実行される
ユーザーhogehogeで新規に認証用ファイル.htpasswdを作成
# htpasswd -c /home/htdocs/.htpasswd hogehoge
ユーザーhogehoge2を既存の認証用ファイル.htpasswdに追加
# htpasswd /home/htdocs/.htpasswd hogehoge2
「command not found」が出たら
# PATH=$PATH:/usr/local/apache2/bin # export PATH
参考サイト:CentOSで自宅サーバー構築 ファイアウォール構築(iptables)
# vi iptables.sh
#!/bin/bash
#---------------------------------------#
# 設定開始 #
#---------------------------------------#
# インタフェース名定義
LAN=eth0
#---------------------------------------#
# 設定終了 #
#---------------------------------------#
# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# ファイアウォール停止(すべてのルールをクリア)
/etc/rc.d/init.d/iptables stop
# デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄
# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SYN Cookiesを有効にする
# ※TCP SYN Flood攻撃対策
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# ブロードキャストアドレス宛pingには応答しない
# ※Smurf攻撃対策
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf
# ICMP Redirectパケットは拒否
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done
# Source Routedパケットは拒否
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done
# フラグメント化されたパケットはログを記録して破棄
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A INPUT -f -j DROP
# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT -s ! $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A INPUT -s ! $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A OUTPUT -d ! $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
iptables -A OUTPUT -d ! $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP
# 1秒間に4回を超えるpingはログを記録して破棄
# ※Ping of Death攻撃対策
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH
# 全ホスト(ブロードキャストアドレス、マルチキャストアドレス)宛パケットはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP
# 113番ポート(IDENT)へのアクセスには拒否応答
# ※メールサーバ等のレスポンス低下防止
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# ACCEPT_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを許可するユーザ定義チェイン作成
ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}
# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ定義チェイン作成
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_COUNTRY] : '
iptables -A DROP_COUNTRY -s $addr -j DROP
done
}
# IPアドレスリスト取得
. /root/iptables_functions
IPLISTGET
# 日本からのアクセスを許可するユーザ定義チェインACCEPT_COUNTRY作成
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# 以降,日本からのみアクセスを許可したい場合はACCEPTのかわりにACCEPT_COUNTRYを指定する
# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE KR
DROP_COUNTRY_MAKE TW
iptables -A INPUT -j DROP_COUNTRY
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから) #
#----------------------------------------------------------#
# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ許可
# ※SSHサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
# ※外部向けDNSサーバーを運用する場合のみ
#iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 外部からのTCP21番ポート(FTP)へのアクセスを日本からのみ許可
# ※FTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY
# 外部からのPASV用ポート(FTP-DATA)へのアクセスを日本からのみ許可
# ※FTPサーバーを公開する場合のみ
# ※PASV用ポート60000:60030は当サイトの設定例
#iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_COUNTRY
# 外部からのTCP25番ポート(SMTP)へのアクセスを許可
# ※SMTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 外部からのTCP465番ポート(SMTPS)へのアクセスを日本からのみ許可
# ※SMTPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY
# 外部からのTCP110番ポート(POP3)へのアクセスを日本からのみ許可
# ※POP3サーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY
# 外部からのTCP995番ポート(POP3S)へのアクセスを日本からのみ許可
# ※POP3Sサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY
# 外部からのTCP143番ポート(IMAP)へのアクセスを日本からのみ許可
# ※IMAPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY
# 外部からのTCP993番ポート(IMAPS)へのアクセスを日本からのみ許可
# ※IMAPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY
# 外部からのUDP1194番ポート(OpenVPN)へのアクセスを日本からのみ許可
# ※OpenVPNサーバーを公開する場合のみ
#iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY
# VPNインタフェース用ファイアウォール設定
# ※OpenVPNサーバーを公開する場合のみ
#[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここまで) #
#----------------------------------------------------------#
# 拒否IPアドレスからのアクセスはログを記録せずに破棄
# ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと
# (/root/deny_ipがなければなにもしない)
if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
iptables -I INPUT -s $ip -j DROP
done
fi
# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP
# サーバー再起動時にも上記設定が有効となるようにルールを保存
/etc/rc.d/init.d/iptables save
# ファイアウォール起動
/etc/rc.d/init.d/iptables start
# chmod 700 iptables.sh
# vi iptables_functions
# IPアドレスリスト取得関数定義
IPLISTGET(){
# http://nami.jp/ipv4bycc/から最新版IPアドレスリストを取得する
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 最新版IPアドレスリストが取得できなかった場合
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# バックアップがある場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt was read from the backup! | mail -s $0 root
exit 1
else
# バックアップがない場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# 最新版IPアドレスリストを /tmpへバックアップする
/bin/mv cidr.txt /tmp/cidr.txt
}
IPアドレスリストは頻繁に更新されるので、毎日自動でIPアドレスリストの更新有無をチェックし、更新がある場合はファイアウォール設定スクリプトを再起動するようにする。
# vi /etc/cron.daily/iplist_check.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# チェック国コード
COUNTRY_CODE='JP CN KR TW'
# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
# chmod +x /etc/cron.daily/iplist_check.sh
# ./iptables.sh ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ] ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]
# chkconfig iptables on
# see "man logrotate" for details
# rotate log files weekly
weekly
↑毎週ログを置き換える。毎日はdaily、毎月はmonthly
# keep 4 weeks worth of backlogs
rotate 4
↑※ログを4世代分残す。weeky を指定した場合は4週間という意味
# create new (empty) log files after rotating old ones
create
↑※新規ログファイルをローテーションした直後に作成する
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
↑※圧縮する。デフォルトは圧縮''しない''(コメントアウト)
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
↑※各ログファイルの設定がおかれているパスを指定。
このディレクトリに自身で作成したconfを入れておけば良い
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
# vi /etc/logrotate.d/httpd
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
weekly
rotate 4
missingok
sharedscripts
postrotate
/bin/killall -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null
endscript
}
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテート実行 # cat /var/lib/logrotate.status "/usr/local/apache2/logs/access_log" 2011-12-1 ← 設定したログが表示される "/usr/local/apache2/logs/error_log" 2011-12-1 ← 設定したログが表示される
# vi /etc/logrotate.d/redmine
/home/htdocs/redmine/log/production.log {
weekly
rotate 4
missingok
copytruncate
notifempty
}
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテート実行 # cat /var/lib/logrotate.status "/home/htdocs/redmine/log/production.log" 2011-12-1 ← 設定したログが表示される
参考:ランレベルとは?(http://www.atmarkit.co.jp)
| 0 | シャットダウン(システムの停止) | シャットダウンに向かう状態 |
| 1 | シングルユーザーモード(rootのみ) | シングルユーザモード |
| 2 | ネットワークなしのマルチユーザーモード | 使用されない |
| 3 | 通常のマルチユーザーモード(テキストログイン) | 標準的な状態 |
| 4 | 未使用 | 使用されない |
| 5 | グラフィカルログインによるマルチユーザーモード | GUIでログインする状態 |
| 6 | システムの再起動 | 再起動に向かう状態 |
httpd の自動起動を on にする場合
# chkconfig httpd on
httpd の自動起動を ランレベル3と5のみ on にする場合
chkconfig --level 35 httpd on
現在のランレベルを調べる場合
# runlevel N 3 ←ひとつ前のランレベルは存在せず、現在のランレベルは3。
# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m
# uname -a Linux hogehoge 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11 21:56:33 UTC 2014 i686 i686 i386 GNU/Linux
# httpd -v Server version: Apache/2.2.26 (Unix) Server built: Mar 7 2014 17:07:03
または、
# httpd -V
Server version: Apache/2.2.26 (Unix)
Server built: Mar 7 2014 17:07:03
Server's Module Magic Number: 20051115:33
Server loaded: APR 1.5.0, APR-Util 1.5.3
Compiled using: APR 1.5.0, APR-Util 1.5.3
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
# ssh -V OpenSSH_6.5p1, OpenSSL 1.0.1e-fips 11 Feb 2013
# postconf | grep mail_version mail_version = 2.6.6 milter_macro_v = $mail_name $mail_version
# openssl version OpenSSL 1.0.1e-fips 11 Feb 2013
# ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
# svn --version svn, version 1.8.8 (r1568071) compiled Feb 17 2014, 18:18:15 on i686-pc-linux-gnu Copyright (C) 2013 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ 以下のリポジトリアクセス (RA) モジュールが利用できます: * ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。 - Cyrus SASL 認証を併用 - 'svn' スキームを操作します * ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。 - 'file' スキームを操作します * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.4 - 'http' スキームを操作します - 'https' スキームを操作します
# yum list installed | grep postgres postgresql93.i686 9.3.3-1PGDG.rhel6 @pgdg93 postgresql93-devel.i686 9.3.3-1PGDG.rhel6 @pgdg93 postgresql93-libs.i686 9.3.3-1PGDG.rhel6 @pgdg93 postgresql93-server.i686
または、
# psql -U postgres
postgres=# select version();
version
-------------------------------------------------------------------------------------------------------
PostgreSQL 9.3.3 on i686-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 32-bit
(1 行)
postgres=# \quit
# yum list installed
または、
# yum list installed | grep XXXX
XXXXは調べたいもの。例えばzlibなら、
# yum list installed | grep zlib zlib.i686 1.2.3-29.el6 @anaconda-CentOS-201311271240.i386/6.5 zlib-devel.i686 1.2.3-29.el6 @base
# yum list installed
とした時に表示されるリストに黄色と赤の色付きで表示されるものがある。
# man yum.conf
を参照すると、黄色に関するものは
color_list_installed_newer The colorization/highlighting for packages in list/info installed which are newer than the latest available package with the same name and arch. Default is ‘bold,yellow’. See color_list_installed_older for possible values.
赤に関するものは
color_list_installed_extra The colorization/highlighting for packages in list/info installed which has no available package with the same name and arch. Default is ‘bold,red’. See color_list_installed_older for possible values.
と記載されている。yum.confはデフォルトのまま使用しているので、
黄色は「yumが参照しているリポジトリの最新よりも新しいもの。」
赤色は「yumが参照しているリポジトリには同じ名前の利用可能なものがない。」
といったところかな?
例えば/etc/httpdディレクトリの使用容量を調べる場合
# du -h /etc/httpd 76K /etc/httpd/conf/extra 60K /etc/httpd/conf/original/extra 84K /etc/httpd/conf/original 188K /etc/httpd/conf/proj 12K /etc/httpd/conf/ssl 472K /etc/httpd/conf 8.0K /etc/httpd/conf.d 484K /etc/httpd ←/etc/httpd全体の使用容量