SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場

Apacheホスティング環境(Webサーバー+PHP実行環境)をコマンド一発で構築する一撃シェルスクリプト

ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場 第1回


バーチャルホストの削除

 バーチャルホストの削除は、以下の順序で処理を行います。

 ①バーチャルホストの設定の無効化②ユーザーの削除③ログディレクトリの削除

①バーチャルホストの設定の無効化

 バーチャルホスト作成時には、バーチャルホストのconfigを処理の最後に生成しました。バーチャルホスト削除時には反対に、最初にconfigファイルを無効化します。また、バーチャルホスト作成時には、バーチャルホストを即時公開するとは限らないため、手動でApacheを再読み込みするようにしていますが、バーチャルホスト削除時は、削除対象のバーチャルホストを見せないという要件が決まっているので、設定ファイルをバックアップディレクトリ(/etc/httpd/conf.d/BACKUP)に退避後、運用ツールがすぐにApacheを再読み込みするようにしています。

バーチャルホストの設定の無効化
## VirtualHost Config Disable
[ ! -d /etc/httpd/conf.d/BACKUP ] && mkdir -p /etc/httpd/conf.d/BACKUP
for D in $(cat ${VHLIST} | grep -i ^delete | awk '{print $2}' | sort | uniq)
do
  if [ -f /etc/httpd/conf.d/${D}.conf ];
    then
    mv /etc/httpd/conf.d/${D}.conf /etc/httpd/conf.d/BACKUP
    service httpd reload
  fi
done

②ユーザーの削除

 ユーザーの削除は、ユーザーのホームディレクトリをtar.gz形式で圧縮し、それを/home/vhosts/BACKUPディレクトリにバックアップした上で行います。

ユーザーの削除
## User Delete
[ ! -d /home/vhosts/BACKUP ] && mkdir -p /home/vhosts/BACKUP
for E in $(cat ${VHLIST} | grep ^delete | awk '{print $2}')
do
  if [ -d /home/vhosts/${E} ];
    then
    (cd /home/vhosts/${E} ; tar czf /home/vhosts/BACKUP/${DATE}_${E}.tar.gz .)
    userdel -r $(cat ${VHLIST} | grep ${E} | grep -i ^delete | awk '{print $3}' | sort | uniq)
    else
    userdel -r $(cat ${VHLIST} | grep ${E} | grep -i ^delete | awk '{print $3}' | sort | uniq)
  fi
done

③ログディレクトリの削除

 ログディレクトリも、/home/logs/BACKUPディレクトリにtar.gz形式で圧縮し、バックアップした上で削除します。

ログディレクトリの削除
## Log Directory Delete
[ ! -d /home/logs/BACKUP ] && mkdir -p /home/logs/BACKUP
for F in $(cat ${VHLIST} | grep -i ^delete | awk '{print $2}')
do
  if [ -d /home/logs/${F} ];
  then
    (cd /home/logs/${F} ; tar czf /home/logs/BACKUP/LOGS_${F}_${DATE}.tar.gz *)
    rm -fr /home/logs/${F}
  fi
done

4. 後処理とOSの再起動

 生成した運用ツール(VHMAINTE)には実行権が必要なので付与します。そして最後に、一撃シェルスクリプトは自分自身を削除し、OSをを再起動します。

運用ツールへの実行権付与→一撃スクリプト自身の削除→OSの再起動
chmod 700 ${HOME}/bin/VHMAINTE
rm -f $0
reboot

 以上で今回の一撃シェルスクリプトを見終えました。バーチャルホストを作成してApacheを再読み込みし、hostsまたはDNSで名前解決を行った後に、ブラウザでサイトを開いてみてください。

画面2:PHPのデフォルトページ
画面2:テストページ。「リンク」という箇所をクリックすると画面3に遷移する

 

画面3:phpinfoの出力
画面3:phpinfoの出力(test.php)

 

おわりに

 今回は、Apacheのホスティング環境を構築する一撃シェルスクリプトを紹介しましたが、いかがでしたでしょうか? このようにサーバー構築を一撃シェルスクリプトで自動化することで品質の均一化、作業工数の削除を行うことができます。

 次回は、Nginx+PerlのCGI環境にMovable Typeをインストールする一撃シェルスクリプトを紹介します。お楽しみに。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場連載記事一覧

もっと読む

この記事の著者

濱田 康貴(ハマダ ヤスタカ)

サーバーエンジニアとして主にLinuxのWEBサーバーを設計、構築、運用を行っています。運用ツールの相棒としてシェルスクリプトやワンライナーは心強いパートナーと信じて疑わず、ブログでTIPSを公開しています。2009年5月のUSP友の会活動開始より参画し、現副会長。最近では、USP友の会で「一撃サーバー構築シェルスクリプト勉強会」を開催しているほか、日本で唯一のシェルスクリプト総合誌『シェルスクリプトマガジン』(毎月25日発売)で、隔月(偶数月号)連載「教えて先輩 サーバー運用お助けTips」を執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8434 2015/04/02 19:58

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー