「あなくつ」のおもちゃばこ

Laboratory

Cent OS 5 セットアップスクリプト

概要

普段使っているLinuxのセットアップスクリプトを公開します。

想定している環境

  • Cent OS 5.x
  • ウィルスチェックアプリケーション: ClamAV
  • データベース: MySQL 5.0.x
  • データベース: Postgres
  • ウェブサーバー: Apache 2.2.3
  • スクリプトエンジン: PHP 5.1.6
  • FTPサーバー: vsftp
  • メールサーバー: qmail+vpopmail
  • その他のアプリケーションはデフォルトのまま使用

ダウンロード

Cent OS 5 セットアップスクリプトをダウンロード (Size:16KB)

利用条件

  • どなたも無料で利用できますが、一切サポート・保証なしです。サーバーがおかしくなっても知りません。

はじめに

  • サーバーのセットアップは、CentOSで自宅サーバー構築を参考にしています。このサイトの内容から、自分のサーバーでいつもセットアップしているものを自動化したものです。
  • まず、最初にスクリプトの内容を確認して、自分の環境に合わせてから実行してください。
  • それと、なにかセキュリティにヤバいところなどがありましたら、こっそり教えてください(笑)

解説

22-29行
#   architecture ( x86_64 / i386 )
SERVER_ARCH='x86_64'
#   hostname
SERVER_HOSTNAME='www.example.com'
#   ip
SERVER_IP='999.999.999.999'
#   mail
SERVER_EMAIL_ROOT='[email protected]'

「SERVER_ARCH」はRPMファイルのファイル名の一部に使用しているだけです。「SERVER_HOSTNAME」はhostnameとApacheのウェブページのドメインに使用します。「SERVER_IP」はApacheの設定ファイルに使用しています。「SERVER_EMAIL_ROOT」はメールエイリアスとApacheの設定ファイルに使用しています。

31-32行
# useradd
FILE_USERADD='useradd.txt'

「FILE_USERADD」は追加するユーザーの一覧ファイルを指定します。「useradd.txt」には1行に1ユーザーを記述し、[ユーザー名][SP][ホームディレクトリ][SP][パスワード]を指定します。例:

username /home/dir password
35-36行
#   rpmforge (check latest : http://packages.sw.be/rpmforge-release/ )
FILE_RPM_FORGE="rpmforge-release-0.5.2-2.el5.rf.${SERVER_ARCH}.rpm"

「FILE_RPM_FORGE」は追加のリポジトリです。ClamAVをyumでインストールするために使用しています。「check latest」のURLから最新版をダウンロードしておき、ファイル名を指定します。

38-39行
# iptables
FILE_IPTABLES_CONF='iptables.sh'

「FILE_IPTABLES_CONF」はiptablesを設定するときのスクリプトファイルを指定します。rootのホームディレクトリにコピーして実行するだけです。「iptables.sh」の中身は自分のサーバーに合わせて変更してください。適切に設定しないと、最悪の場合、SSHでログインできなくなります。

41-43行
# Clam AntiVirus
FILE_CLAMD_CONF='clamd.conf'
FILE_FRESHCLAM_CONF='freshclam.conf'

「FILE_CLAMD_CONF」はClamAVの設定ファイルで、/etc/にコピーします。「FILE_FRESHCLAM_CONF」はClamAVのデータベースを更新するfreshclamの設定ファイルで、/etc/にコピーします

45-46行
# ntpd
FILE_NTPD_CONF='ntp.conf'

「FILE_NTPD_CONF」はntpdの設定ファイルで、/etc/にコピーします。

48-50行
FILE_MYSQL_CONF='my.cnf'
MYSQL_PASSWORD_ROOT='hogehoge'

「FILE_MYSQL_CONF」はMySQLの設定ファイルで、/etc/にコピーします。「MYSQL_PASSWORD_ROOT」はMySQLのrootのパスワードで、データベースの初期化SQLに使用します。

52-57行
# postgresql
POSTGRESQL_NAME='postgresql-9.0'
#   postgresql* (check latest : http://www.pgrpms.org/packages.php )
FILE_POSTGRESQL="postgresql90-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm"
FILE_POSTGRESQL_LIBS="postgresql90-libs-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm"
FILE_POSTGRESQL_SERVER="postgresql90-server-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm"

「POSTGRESQL_NAME」はインストール後のPostgreSQLの実行ファイル名です。自動起動の設定で使用します。「FILE_POSTGRESQL」「FILE_POSTGRESQL_LIBS」「FILE_POSTGRESQL_SERVER」はPostgreSQLのインストーラーRPMのファイル名です。(yumで入るPostgreSQLのバージョンが古いので、RPMをダウンロード・インストールしています)

59-60行
# httpd
FILE_HTTPD_CONF='httpd.conf'

「FILE_HTTPD_CONF」はApacheの設定ファイルで、/etc/にコピーします。おそらく多くの場合はウェブサーバーにセットアップされると思いますので、「httpd.conf」の中身はオリジナルにカスタマイズすればいいでしょう。

62-63行
# php
FILE_PHP_CONF='php.ini'

「FILE_PHP_CONF」はPHPの設定ファイルで、/etc/にコピーします。PHPのお助け機能(?)みたいなもの(magic_quotes_gpcとか)は、余計なおせっかいだと思っているので無効にしてあります。必要に応じてカスタマイズしてください。

65-66行
# vsftpd
FILE_VSFTPD_CONF='vsftpd.conf'

「FILE_VSFTPD_CONF」はvsftpdの設定ファイルで、/etc/にコピーします。「user_list」ファイルをログインを許可するリストとして使用するよう設定しているので、必要に応じてカスタマイズしてください。

68-86行
# qmail
#   qmail (check latest : http://cr.yp.to/qmail.html )
FILE_QMAIL='qmail-1.03.tar.gz'
#   qmail-date-localtime (check latest : http://www.google.com/search?q=qmail-date-localtime )
FILE_QMAIL_DATE_LOCALTIME='qmail-date-localtime.patch'
#   qmail-smtpd-auth (check latest : http://tomclegg.net/qmail/#qmail-smtpd-auth )
FILE_QMAIL_SMTPD_AUTH='qmail-smtpd-auth-0.31.tar.gz'
#   qmail-smtpd-relay-reject (check latest : http://qmail.mirrors.summersault.com/ )
FILE_QMAIL_SMTPD_RELAY_REJECT='qmail-smtpd-relay-reject'
#   checkpassword (check latest : http://cr.yp.to/checkpwd/install.html )
FILE_CHECKPASSWORD='checkpassword-0.90.tar.gz'
#   ucspi-tcp (check latest : http://cr.yp.to/ucspi-tcp/install.html )
FILE_UCSPITCP='ucspi-tcp-0.88.tar.gz'
#   fastforward (check latest : http://cr.yp.to/fastforward.html )
FILE_FASTFORWARD='fastforward-0.51.tar.gz'
#   vpopmail (check latest : http://sourceforge.net/project/showfiles.php?group_id=85937&package_id=89104)
FILE_VPOPMAIL='vpopmail-5.4.32.tar.gz'
#   qmail-control-script
FILE_QMAIL_CONT='qmail'

qmailはソースコードからコンパイルしているので、必要なファイルをそれぞれダウンロード・指定しています。パッチや追加プログラムは必要に応じてカスタマイズしてください。

88-574行

セットアップの要、処理プログラムです。中身見てなにしているかチェックしたほうがいいと思います。

576-602行
echo '#************************************************'
echo '# [start] other'
echo ''

# mysql
sed -e "s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/" mysql.sql > mysql.sql.gen
mysql -u root < mysql.sql.gen

# vsftp
echo '' > /etc/vsftpd/user_list

# cron
# daily backup
sed -e "s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/" backup.sh > /etc/cron.daily/backup.sh
chmod 700 /etc/cron.daily/backup.sh
# daily scan
cp clamscan /etc/cron.daily/
chmod 700 /etc/cron.daily/clamscan
# monthly logrotate
cp log_apache.sh /etc/cron.monthly/
chmod 700 /etc/cron.monthly/log_apache.sh
# monthly dump every site
sed -e "s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/" dump_mysql.sh > /etc/cron.daily/dump_mysql.sh
chmod 700 /etc/cron.monthly/dump_mysql.sh

# cleanup yum
yum-complete-transaction -y

セットアップスクリプトの最後の処理部分です。

「# mysql」はサンプルデータベースの削除やパスワードの設定などを行います。

「# vsftp」はvsftp用にからのユーザーリストファイルを作成しているだけです。

「# daily backup」は日毎のデータベースバックアップのスクリプト「backup.sh」をコピーしています。PostgreSQLのバックアップ処理が入ってません。

「# daily scan」は毎日ウィルスチェックを行うスクリプトをコピーしています。

「# monthly logrotate」はApacheのログファイルローテーションスクリプトです。一緒に添付されているhttpd.confの場合、バーチャルホスト毎にログファイルが作成されるので、それらを月毎にファイル分割します。

「# monthly dump every site」はMySQLのデータベースをサイトごとにダンプするスクリプトをコピーしています。

「# cleanup yum」はセットアップ中に何らかの原因でyumが強制停止した場合、中途半端なトランザクション情報が残るので、それをクリーンアップしているだけです。

実行時

_setup.shに実行権限を与えて実行するのですが、標準出力とエラー出力をファイルにリダイレクトしておきましょう。

./_setup.sh >_log 2>&1

実行完了後にログを確認して正常に完了したかチェックします。なにか問題があれば、該当部分だけ手動で再セットアップします。

終わったら

ひと通りセットアップが終わって、動作確認ができたら、特定ユーザーをWheelグループに追加して、rootになれるユーザーを制限しておきましょう。

更新履歴

  • [2011/05/21] 公開

参考

タグ : Apache,Linux,MySQL,PHP,Postgres,qmail,vpopmail,vsftp

2011/05/21 23:10:30 | Trackbacks (0) | Comments (0)

Trackback

URL : https://www.ana-kutsu.com/mt/mt-tb.cgi/583

Comment

(Private)
Authentication
refresh captcha

画像の中に見える文字を入力してください。

« radiko.jp視聴区域外用リピーター | Top | メールアドレス (RFCに基づく仕様を理解する) »

Copyright © 2004-2023 Ana-Kutsu All Rights Reserved.