俺の開発大作戦

Linux, Mac, Windows10 で 迷走する1開発を進めていく備忘録5

Ubuntu16.04LTS に apache2 をインストール

慣れ親しんだLAMP環境(*)でCMSとか色々作りたいので、早速apacheから入れていく。Xamppとかインストールすれば一発で開発環境が全て整って楽なんだけど、各サーバーの最新の導入仕様をきちんと手を動かし確認しながら進めたいので、急がば回れで一つ一つ導入していく。

(*)Linux, Apache, MySQL, PHP を組み合わせたWebアプリケーションの開発・実行環境のこと。それぞれの頭文字をとって、LAMP環境。

1. apache2のインストール

apt-get からインストール

% sudo apt-get update
% sudo apt-get install apache2

2. セキュリティ設定

security.conf を編集

% cd /etc/apache2/conf-available
% sudo vim security.conf

デフォルトでは、ServerTokensは「OS」になっている。

  ServerTokens OS

この状態だと、http://サーバーのアドレス/にアクセスすると、レスポンスヘッダーのServerのところに、OS名やApacheのバージョンが表示されてしまう。

セキュリティ上好ましくないので、ServerTokensを「Prod」に変更する。

  ServerTokens Prod

*ServerTokensを「Prod」に変更すると、サーバのプロダクト名(すなわち、「Apache」)だけの表示となる。ちなみに、「Full」にすると、デフォルト以上に詳細な情報が表示されるようになる。

なお、この設定はサーバ全体に適用され、バーチャルホスト上で有効にしたり 無効にしたりはできない。

次にSignatureの設定を確認。

  ServerSignature On

Signatureもデフォルトの「On」のままだとサーバが生成するドキュメント (エラーメッセージ、mod_proxy における FTP のディレクトリリスト、 mod_info の出力、等々) のフッターに、ポート番号など様々な情報が表示されてしまうので変更が必要。

  ServerSignature Off

「Off」に変えるとフッターそのものを非表示にできる。

3. バーチャルホストの設定

デフォルト以外の設定を行う場合は次の手順で行う。

(1)/etc/apache2/site-available/ のディレクトリ内にあるデフォルトの設定ファイル"000-default.conf"を元に、設定ファイル"[任意のファイル名].conf"を複製して追加し、ServerName や DocumentRoot などの項目を必要に応じて編集し保存する。

% cd /etc/apache2/sites-available/
% sudo cp -i 000-default.conf [任意のファイル名].conf
% sudo vim [任意のファイル名].conf

なお、使用しているドメイン間でそれぞれ設定を変えたい場合は、ドメイン毎にconfファイルを作成する。(ファイル内の ServerName の欄でドメイン名を指定し、その他の設定を書いていく。)

  ServerName ドメイン名
  DocumentRoot ドキュメントルートまでのパス

以下、その他の追記例。

  # 制御するディレクトリ
  <Directory ドキュメントルートまでのパス>
    # オプション
    Options FollowSymLinks
    # .htaccessの許可
    AllowOverride all
    # アクセス許可
    Require all granted
  </Directory>

  # エラーログ
  ErrorLog ${APACHE_LOG_DIR}/error.ドメイン名.log
  # エラーログを記録するレベル
  LogLevel warn
  # アクセスログ
  CustomLog ${APACHE_LOG_DIR}/access.ドメイン名.log combined

(2)上で作成したファイルのシンボリックリンクを /etc/apache2/sites-enabled のディレクトリ内に保存してapacheを再起動すれば設定が有効になる。(サーバ起動時に、httpd.conf が sites-enabled のディレクトリ内にシンボリックリンクがある全てのconfファイルを読み込む仕組み。)

シンボリックリンク作成の際は、「a2ensite」というコマンドを利用する。(作成した場所から sites-enabled へ簡単にシンボリックリンクが作成できる。)

% sudo a2ensite [任意のファイル名].conf

新しくバーチャルホストを設定した場合、デフォルトの設定ファイルへのシンボリックリンクは、特に必要なければ原則削除する。削除の場合は、「a2dissite」というコマンドを使用。

% sudo a2dissite 000-default.conf

最後にサーバを再起動して終了。

% sudo service apache2 reload

なお、サーバを段階的に停止→スタートする場合は以下のとおり。

  sudo service apache2 stop
  sudo service apache2 start

・・・

<後日追記>
アクセスのあったURLを、正規表現で書き換えてから処理する機能 'mod_rewrite' が初期状態では無効になっているために、少々苦戦したので追記。なんでも Ubuntuのリポジトリから取得出来るApache2はオリジナルのApache2とはディレクトリの構成や設定の方法が違うらしい・・・。当方は、この仕様のために仮想パスで指定した URL がアクセス先でことごとく '404 not found' になって表示不可になってしまい、数時間嵌った・・・。

まずはmod_rewriteが利用可能となっているかを確認

% cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

上のとおり、利用可能なことを確認したら、以下のコマンドで有効化しよう。

% sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart

上記メッセージのとおり、apache サーバを再起動すると設定が有効になる。

なお、Ubuntu で Apache2 のモジュールを有効にするには a2enmod を使用する。逆に無効化する場合は、同じ書式で a2dismod を使用する。

% sudo a2enmod [module]
% sudo a2dismod [module]

有効・無効化できるモジュールは /etc/apache2/mods-available/ にあるため、各々のファイル名を拡張子なしで指定する。

俺: 医療系事業会社のITサービス開発担当者

▼プロフィール畳む

▶プロフィール見る

ネットが産声をあげた前世紀末に元国営の通信会社に新卒入社し、以降およそ10年間勤務して、インターネット系の新規事業立ち上げに複数携わる。

その後、退職して、ITベンチャーのスタートアップ参画を皮切りに、複数のIT企業でプロダクトマネージャーを務めた後、縁あって現在の医療系事業会社へjoin。

元来、エンジニアばかりの環境で過ごしてきたが、いまいるここは一般の非IT系事業会社。

自分以外に実際に手を動かせるスタッフは誰もいない環境やさかい、IT系プロダクトの企画から内製によるシステム開発、ビッグデータ分析や人工知能のビジネス転化への試行錯誤も仕方なく一人でマルチに行い奮闘中。
(そろそろ仲間が欲しい・・・)

E-mail: contact@kobachan.biz

カテゴリー
月別アーカイブ
  • 2018 (4)
  • 2017 (6)