一瞬でApacheの導入とチューニングが出来るシェルスクリプトを作ってみた!

イヌガジェ
イヌガジェ

どうも、現役インフラエンジニアのイヌガジェです。

今回は一瞬でApacheのインストールとチューニングが出来上がる、
「僕が考えた最強のApache用シェルスクリプト」を公開していきます。

毎回LAMP環境を構築をするときに定型化した作業をするのが面倒だな~と思っていたので、同士の方は是非参考にしてみてください!

ではいきましょう。

Apacheとは

Apacheは、世界的に使用される著名なWebサーバソフトの1つです。高い性能と優れた動作性から、企業や個人を問わず人気があり、使用されています。

今現在も細かなアップデートを繰り返しながら、20年以上も使われ続けており、Webサーバソフトを選ぶ上では「必ず選択肢に入るWebサーバソフト」と言っても過言ではないでしょう。

ちなみに、エンジニアの間ではApacheという呼び名で定着していますが、このApacheという名前は省略形の名称です。正式には、「Apache HTTP Server」という長めの名前が付けられています。

イヌガジェ
イヌガジェ

Apache、皆もよく使うよね

環境

実行環境はCentOS7を想定しています。

また今度 AmazonLinux2 や AlmaLinux 等でも実行できるスクリプトを書けたらブログにしたいと思います。

一撃でApacheの導入とチューニングが完了するシェルスクリプト

これが、”ぼくが考えた最強のApache導入シェルスクリプト”です。
Apache_setup.sh
#!/bin/bash


sitename=○○○○
mail=○○○○
USER=○○○○


#Apacheインストール
sudo yum install httpd -y
sudo systemctl enable --now httpd


#/etc/httpd/conf/httpd.confのバックアップと編集
sudo cp -ip /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
sudo sed -i -e "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf
sudo sed -i -e "s/DirectoryIndex index.html/DirectoryIndex index.php index.html/g" /etc/httpd/conf/httpd.conf
sudo sed -i -e "s/Options Indexes FollowSymLinks/Options -Indexes +FollowSymLinks/g" /etc/httpd/conf/httpd.conf
sudo sed -i '/Listen 80/a\Listen 443' /etc/httpd/conf/httpd.conf
sudo sed -i 's/^ServerAdmin root@localhost/#ServerAdmin root@localhost/' /etc/httpd/conf/httpd.conf
sudo sed -i -e "s/ServerTokens ProductOnly/ServerTokens OFf/g" /etc/httpd/conf/httpd.conf


#指定ユーザをApacheグループに追加
usermod -aG apache ${USER}


#ドキュメントルート作成
sudo mkdir -p /var/www/vhosts/${sitename}/public_html
sudo touch /var/www/vhosts/${sitename}/public_html/index.html
sudo echo MY-testpage>/var/www/vhosts/${sitename}/public_html/index.html


#vhostのconf作成
sudo touch /etc/httpd/conf.d/vhost.${sitename}.conf
sudo cat > /etc/httpd/conf.d/vhost.${sitename}.conf <<EOF
<VirtualHost *:80>
   ServerAdmin  ${mail}
   ServerName  ${sitename}
   DocumentRoot "/var/www/vhosts/${sitename}/public_html"
   DirectoryIndex index.html index.html.var index.php
   <Directory /var/www/vhosts/${sitename}/public_html>
           Options FollowSymLinks
           AllowOverride All
   </Directory>
   CustomLog "/var/log/httpd/${sitename}-access_log" combined
   ErrorLog "/var/log/httpd/${sitename}-error_log"
</VirtualHost>
EOF


#エラーログとアクセスログ作成
sudo touch /var/log/httpd/${sitename}-error_log /var/log/httpd/${sitename}-access_log
sudo chown -R ${USER}:${USER} /var/log/httpd/${sitename}-error_log /var/log/httpd/${sitename}-access_log
sudo chmod 664 /var/log/httpd/${sitename}-error_log /var/log/httpd/${sitename}-access_log


#setGIDする
sudo chmod -R 2775 /var/www/vhosts/${sitename}
sudo chown -R ${USER}:apache /var/www/vhosts/${sitename}


#MPMバックアップ取得(ここは環境に合わせて手動でコメントアウトを外して設定してください)
#sudo cp -ip /etc/httpd/conf.modules.d/00-mpm.conf /etc/httpd/conf.modules.d/00-mpm.conf_org
#プレフォーク型の場合(デフォルト設定なのでいらない場合は触らないでください)
#sed -i -e "s/LoadModule mpm_prefork_module modules/mod_mpm_prefork.so/#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so/g" /etc/httpd/conf.modules.d/00-mpm.con
#ワーカープロセス型の場合
#sed -i -e "s/#LoadModule mpm_worker_module modules/mod_mpm_worker.so/LoadModule mpm_worker_module modules/mod_mpm_worker.so/g" /etc/httpd/conf.modules.d/00-mpm.conf
#イベント型の場合
#sed -i -e "s/#LoadModule mpm_event_module modules/mod_mpm_event.so/#LoadModule mpm_event_module modules/mod_mpm_event.so/g" /etc/httpd/conf.modules.d/00-mpm.conf


#welcomeページの非表示化
sudo cat /dev/null > /etc/httpd/conf.d/welcome.conf
sudo cat /etc/httpd/conf.d/welcome.conf


#再起動
sudo systemctl restart httpd.service

かなり分かりやすく記述していますので解説は不要にします。
質問や改善点等がありましたら私のTwitterの方へご連絡いただけますと幸いです!

「そんなんAnsilbleでやればええやん!」という声は受け付けません。ただし反論は認めます()

基本的な使い方

大まかな流れは以下の通りです。

  1. sitename,mail,userに入れたい変数を入力し、必要な設定項目を変更する
  2. /var/tmp/ 配下で対象ファイルを作成 or SCPで転送
  3. 権限を付与
  4. シェルスクリプトを実行

基本的には上記の通りですが、権限付与の場合は以下コマンドを実行してください

chmod 775 Apache_setup.sh

シェルスクリプト実行時は bash で実行すれば問題ないかと思います!

bash Apache_setup.sh

まとめ

私が作成したこのスクリプトで誰かが楽して幸せになれれば幸いです。
また、PHP や MySQL のセットアップ用のスクリプトもありますので気が向いたら記事にしたいと思います。

ではでは~♪

コメント

タイトルとURLをコピーしました