SIerからWeb系に転職したやつの日記

タイトルの通り大手SIerからWeb系に転職した、世間一般的には変な奴のブログです。技術的な成長記録を書いていこうと思います。筆者とともに成長するブログです。今は初心者のような内容しか書いてませんが、そのうち上級者のようなブログになってるはずです。

LinuxでApacheを動かしてみた

今日はApacheについて少しふれておきたいと思います。

環境としてはこれまで通り以下の通りです。
・ubuntu16.04 (デスクトップ版)
LAMPインストール済み(インストール方法については下記の記事を参照してください)
regpon.hatenablog.com

Apacheの起動

まずは起動してみます。
起動するコマンドは2パターンあり、一つは

$ sudo service apache2 start

もう一つが、

$ sudo /etc/init.d/apache2 start

です。
前者と後者では若干挙動が違うらしいです。

前者では一部の環境変数を、後者では実行時の環境変数をすべて引き継ぐみたいです。

ちょっと今の自分にはまだ理解できない範囲でした。。。
とにもかくにも実行してみました。
f:id:regponpon:20180130093423p:plain

後者のコマンドで実行すると、起動できたかどうかが表示されるので個人的には好きですね。

ちなみに/etc/init.dには様々なサービスのシェルスクリプトが置いてあります。

Apacheの再起動

再起動も同様のコマンドで末尾を「restart」にすればできます

$ sudo service apache2 restart
$ sudo /etc/init.d/apache2 restart

f:id:regponpon:20180130094230p:plain

もちろん停止からの起動でも行けるので、

$ sudo service apache2 stop
$ sudo service apache2 start
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/apache2 start

でも実環境を意識した再起動を考えると、garacefulで停止させてからの起動がよさそうです。

garacefulとはapache2を停止させるオプションとしてはstopと同じですが、停止の仕方が若干異なります。
stopは強制終了で接続しているクライアントなども気にせず停止します。
gracefulは接続しているクライアントは生かし、新しい接続を拒否し、残存するクライアントの接続がすべてなくなった時点で停止します。
つまり緩やかで誰にも迷惑をかけずに止められるわけですね。

.Net Frameworkの世界でも、ARRやNLBで接続をDrainにすることで同じようなことができます。これは前職で学びました。

Apacheの状態を確認する

Apacheが現在起動中なのか、停止中なのか、またいつ起動されたのかなどを以下のコマンドで確認できます。

$ sudo service apache2 status
$ sudo /etc/init.d/apache2 status

f:id:regponpon:20180130095216p:plain

この場合、9:39:57に止められてその後すぐに起動し、なんかメッセージが出た後、9:39:58に起動完了しています。

あれ?AH00558ってエラーコードでなんか出てますねー。

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this ...

このエラーっぽいメッセージは、/etc/apache2/site-available/000-default.confのServerNameを設定してあげるといいみたいです。


f:id:regponpon:20180130100915p:plain

よく見たら既にありましたが、コメントアウトされているのでとりあえず解除します。

あと、このままだとホスト名と異なるため/etc/hostsを書き換えます。

$ sudo vi /etc/hosts

f:id:regponpon:20180130124206p:plain

127.0.1.1のところに000-default.confで設定したServerNameを記載しちゃいます。

反映できたかどうかは下記のコマンドで確認します。

$ group --fqdn

その後、サイトを無効化し、Apacheをリロードしたのち、再度サイトを有効化します。

$ sudo a2dissite 000-default
$ sudo service apache2 reload
$ sudo a2ensite 000-default

これでエラーは出なくなりました。

ちなみにポートの設定はデフォルトで80になっているので、http://localhost/でデフォルトのサイトが開けるはず!

f:id:regponpon:20180130111357p:plain

見れますね!

もう少し踏み込んだ設定や実際にコンテンツをいじってみたりなどははまた後日にします。

PHPも早く触りたい!