15分で把握するApache設定のいろは
最近では、webサーバーに導入するソフトウェアとして、nginxを導入する企業も増えてきたと思いますが、今回はあえてApacheについて、これから学習したい人向けに記事にしました。
元々前職まででは、プログラムよりの業務がメインで、Apacheの各設定などは、ふんわりと知っている程度だったので、復習も加味しているかも。
スポンサーリンク
目次
Apacheとは?
Apache HTTP Server(アパッチ エイチティーティーピー サーバ)は、日本・海外で多く使われているWebサーバのソフトウェアです。
大規模サイトから個人レベルのサーバまで幅広く利用されており、僕もソーシャルゲームやweb開発時には、利用していました。
参考公式サイト
利用ライセンス
APACHE LICENSE, VERSION 2.0
※必須:著作権の表示、変更箇所の明示
使用や頒布、修正、派生版の頒布、ライセンスの継承に関して制限がない。
ライセンスの中では緩いもの、求められるのはApacheLicenseを使用していることの宣言。
OS
Centos
ドキュメントの充実
世界中での利用もあり、特に日本でも利用が多いため、設定・インストールについても充実している。
公式サイトでも、以下のようにカテゴリ単位でドキュメントがある。
インストールしてみる
以下コマンドを実行してインストールしましょう。
// yumコマンドでインストール $ yum install httpd
初期設定
以下のコマンドを実行して、初期起動をONにしておく。
// OS起動時に自動起動設定をON $ chkconfig httpd on
httpd.confファイルについて
メインの設定ファイルは、「httpd.conf」(主設定を行う)というファイルです。
ディレクティブ を設定ファイルに記述していきます。
他の設定ファイルも「Include」で読み込むことが可能です。
TypesConfigというディレクティブで、MIMEというドキュメントタイプを含んでいるファイルを読み込みます。
デフォルトは「mime.types」というファイルになっています。
特に指定したりしなければ「vi /etc/httpd/conf/httpd.conf」で編集できると思います。
設定構文について
Apache の設定ファイルは 1 行に 1 つのディレクティブの構成。
次行にまたがる場合、バックスラッシュを用いる。
#で始まる行はコメントとなる。
ディレクティブの数は、多いため、今回は割愛しますが、
気になった方は、Apache公式サイトでディレクティブ一覧があるので、そちらを参照ください。
.htaccessファイルについて
分散設定ファイルというらしく、ディレクトリ毎で、ディレクティブを適応することができる設定ファイル。
配置したディレクトリ+サブディレクトリまで条件を適応できる。
ただし、一般的に、サーバの主設定ファイル「httpd.conf」にアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けたほうがいいらしい。
理由としては、.htaccessファイルはディレクトリ毎の設定を行ないたいけれど、サーバのrootアクセス権限を持っていないという場合にのみ使うべきものとのこと。
設定方法は、httpd.confと同様の為、今回は概要のみで詳細は割愛します。
httpd.conf最低限設定
最初から深掘りしてしまうと、挫折しかねないため、今回は、webサーバー構築するために最低必要な設定のみを抜粋しました。
vi /etc/httpd/conf/httpd.conf --ここからファイル編集-- ServerTokens Prod ServerSignature Off
ServerTokensは、デフォルトでFullになっているため、最低限必要な情報だけを送りたいため、Prodとする。
ServerSignatureは、エラーメッセージなどをクライアントに返す際のフッターラインを表示させるかどうかを
指定するディレクティブです。
今回除外しましたが、DocumentRootは、"/var/www/html"になっているため、htmlファイルなどをルートとなるディレクトリを変えたいと思った場合、DocumentRootのパスを変更し、そこにhtmlなどのファイルを配置してください。
一般に公開したくて、ドメインをお持ちの方は、ServerNameにお持ちのドメインを設定します。
あとは、ドキュメントルートに.htmlファイルを配置して、Apacheを起動すれば完了です。
Apacheの動作コマンド
最低限のコマンドだけ抜粋。
// Apacheを起動 $ /etc/init.d/httpd start // Apacheを停止 $ /etc/init.d/httpd stop // Apacheを再起動 $ /etc/init.d/httpd restart
startして、ServerNameのドメイン名にアクセスして、確認したら基礎完了!!
Apache以外の設定で、アクセスできなかった場合、疑う箇所を上げておきました。
iptablesの編集
サーバーへのアクセスを管理するサーバーを編集して、HTTPポート等の通信するために解放する。
$ vi /etc/sysconfig/iptables ----略---- -A INPUT -m state —state NEW -m tcp -p tcp —dport 22 -j ACCEPT -A INPUT -m state —state NEW -m tcp -p tcp —dport 80 -j ACCEPT ↑ http用に80ポートを解放。 // ファイアウォール設定を再起動して反映。 $ /etc/init.d/iptables restart
まとめ
今回再度復習してみて、意外と知らないところがありながら開発していたことに気がつきました。
前職では、インフラチームに依頼して作成してもらっていて、現職ではインフラよりの仕事をする機会が増えてきました。
この機会にサーバー構築・ネットワーク周り・ミドルウェアの導入についても今後は、もっと身につけていきたいと思いました。
個人でweb開発・アプリ開発をしていくと必ずこのあたりのスキルも必要となるためと、インフラ組織との会話にもスムーズに入っていけると思いました。