普段使っているLinuxのセットアップスクリプトを公開します。
Cent OS 5 セットアップスクリプトをダウンロード (Size:16KB)
# 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の設定ファイルに使用しています。
# useradd FILE_USERADD='useradd.txt'
「FILE_USERADD」は追加するユーザーの一覧ファイルを指定します。「useradd.txt」には1行に1ユーザーを記述し、[ユーザー名][SP][ホームディレクトリ][SP][パスワード]を指定します。例:
username /home/dir password
# 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から最新版をダウンロードしておき、ファイル名を指定します。
# iptables FILE_IPTABLES_CONF='iptables.sh'
「FILE_IPTABLES_CONF」はiptablesを設定するときのスクリプトファイルを指定します。rootのホームディレクトリにコピーして実行するだけです。「iptables.sh」の中身は自分のサーバーに合わせて変更してください。適切に設定しないと、最悪の場合、SSHでログインできなくなります。
# Clam AntiVirus FILE_CLAMD_CONF='clamd.conf' FILE_FRESHCLAM_CONF='freshclam.conf'
「FILE_CLAMD_CONF」はClamAVの設定ファイルで、/etc/にコピーします。「FILE_FRESHCLAM_CONF」はClamAVのデータベースを更新するfreshclamの設定ファイルで、/etc/にコピーします
# ntpd FILE_NTPD_CONF='ntp.conf'
「FILE_NTPD_CONF」はntpdの設定ファイルで、/etc/にコピーします。
FILE_MYSQL_CONF='my.cnf' MYSQL_PASSWORD_ROOT='hogehoge'
「FILE_MYSQL_CONF」はMySQLの設定ファイルで、/etc/にコピーします。「MYSQL_PASSWORD_ROOT」はMySQLのrootのパスワードで、データベースの初期化SQLに使用します。
# 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をダウンロード・インストールしています)
# httpd FILE_HTTPD_CONF='httpd.conf'
「FILE_HTTPD_CONF」はApacheの設定ファイルで、/etc/にコピーします。おそらく多くの場合はウェブサーバーにセットアップされると思いますので、「httpd.conf」の中身はオリジナルにカスタマイズすればいいでしょう。
# php FILE_PHP_CONF='php.ini'
「FILE_PHP_CONF」はPHPの設定ファイルで、/etc/にコピーします。PHPのお助け機能(?)みたいなもの(magic_quotes_gpcとか)は、余計なおせっかいだと思っているので無効にしてあります。必要に応じてカスタマイズしてください。
# vsftpd FILE_VSFTPD_CONF='vsftpd.conf'
「FILE_VSFTPD_CONF」はvsftpdの設定ファイルで、/etc/にコピーします。「user_list」ファイルをログインを許可するリストとして使用するよう設定しているので、必要に応じてカスタマイズしてください。
# 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はソースコードからコンパイルしているので、必要なファイルをそれぞれダウンロード・指定しています。パッチや追加プログラムは必要に応じてカスタマイズしてください。
セットアップの要、処理プログラムです。中身見てなにしているかチェックしたほうがいいと思います。
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になれるユーザーを制限しておきましょう。
タグ : Apache,Linux,MySQL,PHP,Postgres,qmail,vpopmail,vsftp
2011/05/21 23:10:30 | Trackbacks (0) | Comments (0)
URL : https://www.ana-kutsu.com/mt/mt-tb.cgi/583