YouTubeやってます!
Categoriesまとめ

Ubuntu server on VMware Fusion – MySQL、PHP、そしてNginxをインストールする

Date 2012/01/28 19:30  Modified date 2016/05/10 Author Yutaka  Tags Nginx PHP ubuntu 情報処理

 iptablesの設定が完了したら、いよいよサーバの設定。今回はApacheではなく、巷でウワサのアイツ、「Nginx」をインストールしてみたいと思います。というか、Nginxの使い方を勉強するためにこのサーバを立てたと言っても過言ではない。

 ウェブサーバの代名詞とも言える「Apache」。そのApacheよりも高速で安定してて省メモリと今、巷でウワサのアイツが「Nginx」です。「Nginx」と書いて「エンジンエックス」と読みます。う、うん。
 ただ、Apacheと異なり、Nginxでは、ただインストールしただけではPHPを使用することが出来ません。PHPを使用したければ、FastCGIを導入してPHPを処理出来るようにする必要があります。

 NginxでPHPを使用出来るようにするには、spanw-fcgiやphp-fpmというものを使うのが一般的なようです。今回は、設定がより簡単そうなphp-fpmを使うことにしました。PHP5.3.3からphp-fpmが標準で使えるようになったらしく、インストールして使い出すまでの手間がほとんどかかりません。

インストール

MySQLのインストール

 まずはMySQLをインストールします。インストールの途中でrootのパスワードを求められるので考えておきましょう。

sudo apt-get update
sudo apt-get install mysql-server

Nginxのインストール

 NginxのインストールにはUbuntu PPAを使用しました。PPAを使用するにはpython-software-propertiesが必要なので、最初にこれをインストールします。

sudo apt-get install python-software-properties

続いて、PPAでNginxをインストール。

sudo -s
nginx=stable
add-apt-repository ppa:nginx/$nginx
apt-get update 
apt-get install nginx

 Nginxのインストールはなんかめんどくさい(もしくは、apt-getでインストール出来るけどVer.がすげー古い)イメージがあったのですが、すげー簡単ですね。ここ最近、急速に環境が整ってきてる感じ?

 インストール後、とりあえず起動してみます。PHPインストールしてからでもいいけど、もう待ちきれないだろ?

/etc/init.d/nginx start

 起動したら、ブラウザでIPアドレスを叩いてみます。

Welcome to Nginx

 Nginxへようこそ!

PHPのインストール

 つづいてPHPのインストール。ubuntuでは、php-fpmをインストールするのにあーだこーだしなきゃいけない、みたいなのを見た覚えがあるのですが、ubuntu11.10では普通にapt-getでインストール出来ました。

sudo apt-get install php5 php5-fpm php-mbstring php-mysql php-mcrypt

 インストールしたらphp-fpmを立ち上げておきます。

sudo /etc/init.d/php5-fpm start

 ApacheではApacheの一部としてPHPが動作していたのですが、Nginxでは、Nginxとは別にPHPを立ち上げておいて、phpを処理するときはNginxからphp-fpmへ処理を渡す、という感じになっています。なので、ここではNginxとは別にphp5-fpmを立ち上げています。

 php-fpmの設定は、/etc/php-fpm.d/www.conf にあります。いじるのは、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers あたりかと。この項目、どっかで見たような気が……と思ったら、Apacheのmaxclientあたりの設定でした。似ている。やってることが似たようなもんだからかな?

Nginxの設定

 細かい設定は置いといて、ここではとりあえず、phpinfoを確認出来るようにします。だって、はやくNginxでPHPが動いてるのを見てみたいじゃない。

 Nginxの設定ファイルは /etc/nginx/ の中にあります。
 1ファイルにゴリゴリ設定を書き付けるCentOSのやり方(いや、複数ファイルに分ける事も出来ますけれども)に浸りきっている自分には最初意味が分からなかったのですが、Ubuntuでは、Nginx全体に関係する設定は nginx.conf に記述し、ウェブサイト(というかバーチャルホスト)毎の設定は sites-enabled の中に放り込まれたファイルを読み込む、と言う使い方をするようです。(そういえばUbuntuのApacheもこうだった気がする。)
 しかも、sites-enabled の中にはシンボリックリンク(エイリアス)が入っています。では、そのファイルの本体はというと、sites-available の中にあります。

 たとえば、example.com というサイトの設定を example というファイルに書いて sites-available の中に保存しておきます。この example の設定を有効にしたい場合は、example のシンボリックリンクを sites-enabled の中に作り、Nginxを再起動(というかreload)します。もし、あとでexampleの設定を無効にしたくなったら、sites-enabled の中入れた example のシンボリックリンクを削除して再起動するだけです。

 ということもありますよ、ということで、今回は確認するだけなのでさらっと /etc/nginx/sites-available/default を編集しちゃいます。

server {
  # 通信を待ち受けるポート番号
  # コメントアウトされちゃってますが、
  # デフォルトで80番ポートを見るようになっているようです。
  #listen  80; ## listen for ipv4; this line is default and implied
  #listen  [::]:80 default ipv6only=on; ## listen for ipv6

  # rootディレクトリを
  # /usr/share/nginx/www から /var/www に変更
  # 加えて、index に index.php を追加しておく
  root /var/www;
  index index.html index.htm index.php;

  # Make site accessible from http://localhost/
  # サーバの名前。今回は localhost のまま。
  server_name localhost;

  location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    # リクエストに該当するファイルが存在しない場合、
    # index.htmlを参照しろ、という設定。
    try_files $uri $uri/ /index.html;
  }

  # .php の拡張子が付いているファイルをFastCGIで処理する
  location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

 rootディレクトリとして設定した /var/www/ (なければ作成します。てか、作っておかないとNginxをreloadするときに「ディレクトリねーんですけど」って言われます)の中に以下のように記述したファイル index.php を作成します。

<?php phpinfo() ?>

 Nginxの設定を更新するため、reloadします。

/etc/init.d/nginx reload

 ブラウザでアクセスしてみて、phpinfoが表示されればおk!

という感じ

 Nginxをとりあえず動かしてみるのは思ったより簡単でした。ただ、Nginxだと.htaccessが使えないので、たとえば、Wordpressだとか、OpenPNEだとかのアプリケーションを使いたい場合にちょっと大変かも。
 Wordpressを動かす場合に関しては、以下のリンクが参考になると思います。Nginxの設定についてもより詳しいことが分かると思います。

 Nginxの設定ファイルに書いてあることを一つ一つ調べて「だいたいこうなんだろうなぁ」と言うことは分かってきたのですが、リファレンス的なものが欲しくなりますね。本屋で「Nginx入門」もちょっと見たのですが、価格を見て若干怯みました。でもこれはやっぱり買っておくべきか。

参考

ハイパフォーマンスHTTPサーバ Nginx入門

  • 著者/訳者:Clement Nedelcu
  • 出版社:アスキー・メディアワークス ( 2011-04-21 )
  • 大型本:280 ページ
Back to Top