月別アーカイブ: 1月 2011

基本コマンド

cat ファイル名 ファイルの中身を表示する
tail ファイル名 ファイルの末尾を表示する
rm ファイル名 ファイルを削除する
touch ファイル名 ファイルを作成する
mkdir ディレクトリ名 ディレクトリを作成する
rmdir ディレクトリ名 ディレクトリを削除する
chown ユーザ名:グループ名 ファイル・ディレクトリ名 ファイル・ディレクトリの所有者を変更する
chmod パーミッション ファイル・ディレクトリ名 ファイル・ディレクトリのアクセス許可を変更する

・所有者について
アクセス許可(パーミッション)と連携することになる情報で、アクセス許可は所有者・同グループ・その他のユーザの3種類に分けて設定するので、この許可設定に関連して設定することになる。
例えば、一般ユーザグループusersに所属するユーザに読み取りを許可し、所有者ayuには書き換えと読み取りを許可したいファイルは、chown ayu:users ~とする。

・アクセス許可(パーミッション)について
アクセス許可は3桁の数字(内部的にビット表現)で表現されて、上位の桁から順に所有者・グループ所属者・その他の許可を示し、各桁は読み込み許可が4、書き込み許可が2、実行許可が1の数字で、読み込みと実行を許可するなら4+1の5、読み込みと書き込みを許可するなら4+2の6と言った具合に設定する(全てのユーザに全ての許可をする場合はchmod 777 ~となる)
4,2,1と言うのは、2進数の表現で0b100、0b010、0b001に該当するので、全て許可されていれば0b111であり、OS内部では特定のアクセス許可があるか調べるときには パーミッションと許可ビットパターンとのビットAND命令を実行することで判別できる。 また、既存のパーミッションに追加許可するなら許可ビットパターンとのビットORを求めれば良いし、逆に禁止するなら許可ビットパターンのビットNOTとビットANDすれば良いので処理が高速。

(12)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

cron

cronは簡単な設定ファイルを書くだけで、コマンドを定時実行をしてくれるスケジュール機能。
UNIX系OSで定期的に何かさせたい時には必ず出てくる。

メイン設定ファイルの/etc/crontabや、1日1回実行する/etc/cron.dailyディレクトリ、1時間に1回実行する/etc/cron.hourlyディレクトリ等色々設定できる場所がある。 今回は、/var/spool/cronディレクトリ以下にファイル名=ユーザ名として記述すると、そのユーザの権限で実行してくれるパターンを使う。

設定ファイル:/var/spool/cron/root

00 04 * * * /root/remotebackup.sh >> /var/log/backup.log

cron設定ファイルの書式は
分 時 日 月 曜日 コマンド
先の設定ファイルだと、毎日4時ちょうどに/root/remotebackup.shをキックすると言うことになる(>>は該当コマンドの標準出力を右のファイルに追記すると言う表現で、>だと上書きになる。 コマンドラインから cat > crontabなんて打ち込むと、入力モードになるんで適当に打ち込んでctrl+dで閉じると、入力した内容がcrontabファイルに書き込まれるんで、何かの拍子にエディタが消失してしまったり、ごくごく短い設定を書きたいときなどに使ったりする)
毎週月曜にだけ走らせたければ00 04 * * 1 ~の様に記述する(曜日は日曜が0で土曜日が6)
カンマ区切りで複数の値も設定できるので、00 09,17 * * ~と書けば9時5時に走るし、/を使って間隔指定もできるので*/15 * * * ~とすると15分ごとに走らせることが出来る。 更に、-を使って範囲指定も出来るので、就業時間中10分ごとにしたいとか言った場合、*/10 9-16 * 1-5 ~なんてしておけば、月曜日から金曜日の9時から5時の間、10分ごとに実行なんていう複雑な動作も出来る。
これを使えば、サーバの多くの機能を自動化したり(前回作ったバックアップや、再起動、ログ管理等々)出来るし、ディレクトリやメールを監視するようなサーバプログラムを簡単に作ることが出来る。

(85)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

GMailを使ってサーバのバックアップを取る

サーバのバックアップ置き場としてGMailを使うと、サーバやローカルPCがクラッシュしたときに便利なので、これをシェルスクリプトにする。

#バックアップシェル
#コンテンツ等のあるhome、設定ファイルのetc、及びMySQLのデータをバックアップする
MAILTO=アドレス@gmail.com
TODAY=date '+%Y%m%d'
/bin/tar czf /tmp/$TODAY.home.tgz /home
/bin/tar czf /tmp/$TODAY.etc.tgz /etc
/usr/bin/mysqldump -h localhost -uroot -pパスワード –skip-lock-table –all-databases|/usr/bin/gzip>/tmp/$TODAY.mysqldump.gz
cat /tmp/$TODAY.etc.tgz|/usr/bin/uuencode $TODAY.etc.tgz.uue|/bin/mail -s $TODAY-backup-etc $MAILTO
/bin/rm -f /tmp/$TODAY.etc.tgz
/usr/bin/split -b15m /tmp/$TODAY.mysqldump.gz /tmp/split/
/bin/rm -f /tmp/$TODAY.mysqldump.gz
/bin/ls -1 /tmp/split/|while read filename; do
cat /tmp/split/$filename|/usr/bin/uuencode mysqldump-$filename.uue|/bin/mail -s $TODAY-backup-mysqldump-$filename $MAILTO
/bin/sleep 30
/bin/rm -f /tmp/split/$filename
done
/usr/bin/split -b15m /tmp/$TODAY.home.tgz /tmp/split/
/bin/rm -f /tmp/$TODAY.home.tgz
/bin/ls -1 /tmp/split/|while read filename; do
cat /tmp/split/$filename|/usr/bin/uuencode home-$filename.uue|/bin/mail -s $TODAY-backup-home-$filename $MAILTO
/bin/sleep 30
/bin/rm -f /tmp/split/$filename
done

MAILTO変数の宛先に/etcと/homeのtar+gzファイル、MySQLダンプのgzファイルを送りつける。
etcは1メールで送れるが、homeとMySQLはサイズが大きくGMailに弾かれるので、15MBに切り分けて送信している。 また、一気に送ろうとするとサーバのリソース消費が大きいので、sendmailがGMailに転送する待機時間として30秒のスリープを挟んでいる。

(7)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

メール関連設定

・リレー等の基本ルールを設定する
設定ファイル:/etc/mail/access

#要素:値 動作
#例 210.170.xxx.yyyからの接続はリレー許可する
Connect:210.170.xxx.yyy RELAY
#例 Fromがhoge.comのメールを受信する
From:hoge.com OK
#例 Toがsupport@hoge.comのメールを破棄する
To:support@hoge.com DISCARD

要素は例に書いたConnect(接続元)、From(Fromヘッダ)、To(Toヘッダ)の3種類が使える。
値も例に書いたIPアドレス、ドメイン、アドレスが使える。
動作はRELAY(リレーと受信を許可)、REJECT(接続拒否)、OK(受信のみ許可)やDISCARD(エラーを表示せず廃棄)等の他、550エラーも出来る。 REJECTと550は似ているが、送信元に対してエラーメールを送出するかどうかという違いがある。

標準は設定されていない物はREJECT動作をするので、REJECTレコードを書くことは滅多にない。 例えば固定IP接続を利用しているときに、Connect:固定IP RELAYとして、このサーバを送信サーバとして使用するとか(この許可をしても、プロバイダのOP25Bの影響で送れないこともあるが、固定IPプランの場合はブロックされていないことが多い)

accessファイル設定後にはdbを再構築する

makemap -v hash access.db < access

・色々なドメイン宛メールを受信する
MXレコードが設定されているのは事前条件

設定ファイル:/etc/mail/local-host-names
受信ドメインを列挙する

hoge.com
piyo.net

これでhoge.comとpiyo.netを受信する。

・色々な配信条件を設定する
設定ファイル:/etc/mail/virtusertable

#宛先アドレス 配信先
#例 hoge.comドメイン宛てメールをローカルユーザcatchに配信(キャッチオール)するなら、
@hoge.com catch
#例 ユーザ@piyo.net宛てメールを@hoge.comの同名ユーザに割り振る時は
@piyo.net %1@hoge.com

他にも、root宛てメールをadminで受信するのに、root@localhost.localdomain admin みたいなパターン等、いろいろとある(rootのPOPはバイナリレベルで禁止されているので、この設定をするか/root/.forwardファイルに転送先アドレスを記述してメール転送してPOP受信する)

(8)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

ServersMan開発・設定メモ Start

ずいぶん長いことXreaの共有サーバを利用してきたのだけど、最近、仮想プライベートサーバ(VPS)って奴が流行っているようなので、それに乗っかってみた。
ブログタイトルの通り、利用したのはDTIのServersMan@VPSサービス。

VPSはレンタルの専用サーバと共有サーバの中間で、サーバ仮想化を使って、1台の物理サーバ上に複数の仮想マシンを乗っけて、その仮想マシンを専用サーバのように自由にいじれる。  低価格で自由度の高い便利なサービスだ。
自由度が高い分だけ、色々と設定が必要なのでそのメモなどをだらだらと書く。

・利用している「DTI ServersMan@VPS スタンダード」サービスについて
基本的にグローバルIPが振られたCentOSの専用サーバ気分で使える。
メモリは1.5GB(最低512MB保証で残り1GBはあいていれば使える、ベストエフォート回線みたいなもの)、ディスク容量は30GB/10M inodes。
SakuraのVPSは仮想コンソールがあるけど、こいつには無いので、SSHやFW等の設定を誤ると、入れなくなって再インストールに陥るのが難点。

・とりあえず、WPの導入メモ。
SSHでログインしてがりがり作業する(定番クライアントのputtyを使用) SSHのポートがデフォルトからずれているのに注意。
Xreaからの流れで、Value-domainで独自ドメインを取得して、VPSのIPに振っておく。
基本的に必要なPHPやMySQLは(開発パッケージを選べば)デフォルトで入っているのでそれを利用。
WPの管理アカウントをどうするか迷うが、デフォルトの管理アカウントのadminで済ませようと思う。 DBについては、rootでやっても良いんだけど、セキュリティを考慮してWP用ユーザを作る。

#wget http://ja.wordpreess.org/wordblockquotess-3.0.4-ja.tar.gz
#tar xvf wordpreess-3.0.4-ja.tar.gz
#chown daemon:daemon wordpreess -R
#su
#mysql -pパスワード
>CREATE USER ‘wp’@’localhost’ IDENTIFIED BY ‘パスワード‘;
>CREATE database wp;
>GRANT ALL PRIVILEGES ON wp.* TO ‘wp’@’localhost’ WITH GRANT OPTION;
>exit;

wgetでWPのパッケージをダウンロードして解凍、WPディレクトリ以下の所有者をApacheを走らせるユーザ・グループのdaemon:daemonに変更、更にMySQLにWP用ユーザとDBを作成して該当DBの全権を許可。

設定ファイル:/etc/httpd/conf/httpd.conf
最後に追記

Include /etc/httpd/conf/vhosts/wp

設定ファイル:/etc/httpd/conf/vhosts/wp

<VirtualHost サーバのIP:80>
ServerName ホストのドメイン名
DocumentRoot WPのおいてあるディレクトリ
</VirtualHost>

Apache再起動

#/etc/init.d/httpd restart

これで設置したWPに独自ドメインでアクセスできるようになったので、ブラウザで入って、先ほど作成したDB情報に併せて作成。

こんな設定をしたのがこのメモ作成時の状況だ

(8)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ