VagrantでUbuntu+nginx+MySQL+PHP-FPMの最新環境を構築する

  • 38
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

タイトルを見たら分かるかもしれませんが、百番煎じくらいの記事です。

動画配信用のサーバーを構築する業務があったのですが、Apacheよりnginxのほうが構築しやすい感じがあったので、ローカルPCに仮想環境を構築してみました。

一応、簡単に最新環境を構築するということにこだわっています。

仮想Linux環境の構築

ローカルPCに仮想Linux環境を構築します。

VirtualBoxのインストール

https://www.virtualbox.org/wiki/Downloads
こちらから仮想化ソフトVirtualBoxをダウンロードしてインストールします。オプションはデフォルトのままにしました。

Vagrantのインストール

VirtualBoxだけでも仮想環境を構築することはできるのですが、コマンドラインからVirtualBoxを操作することのできるVagrantを導入するととても効率化できます。

http://www.vagrantup.com/downloads.html
こちらから各プラットフォーム用のインストーラーをダウンロードしてインストールします。

ConEmuのインストール

デフォルトのコマンドプロンプトでvagrantを操作するのはちょっと厳しいので代替になるツールを導入します。Console2が有名ですが、自分はConEmuが気に入ってます。

http://www.fosshub.com/ConEmu.html
こちらからインストールします。

Ubuntuのインストール

ConEmuを起動し、適当なワークフォルダを作ってそこに移動します。自分はC:\ubuntuというフォルダを作成しました。

>mkdir \ubuntu
>cd \ubuntu

次に、Vagrant Cloud (https://vagrantcloud.com/) からUbuntuの入ったBoxをインストールします。現時点での最新版は14.04 LTS(trusty64)です。

vagrant init ubuntu/trusty64

これでワークフォルダ内にVagrantfileが生成されます。このファイルにいろいろと仮想環境の設定を書いて行くのですが、とりあえずそのまま起動してみます。

vagrant up

1回目の起動はBoxをダウンロードしてくるので時間がかかります。
VMが起動したら、SSHでログインします。

vagrant ssh

もしTeratermなどでログインする場合は、以下の設定にします。

ホスト: localhost
ポート: 2222
ID: vagrant
パスワード: vagrant

ユーザーvagrantでログインしていますが、面倒なのでこれから先はルートで作業します。

sudo su -

パッケージを最新にする

apt update
apt upgrade

updateでパッケージリストを最新にし、upgradeで最新のパッケージをインストールします。

パッケージ操作のコマンドはapt-getやaptitudeやaptなどが乱立しててよく分からないので、一番綴りが短いaptを使っています。

nginxのインストール

次にnginxをインストールしますが、公式のパッケージではかなり古いバージョンが入ってしまいますので、PPAという非公式パッケージを追加して最新バージョンをインストールします。

add-apt-repository ppa:nginx/development

これで現時点での最新バージョン(1.7.7)がパッケージに追加されます。最新版が怖いチキン野郎は以下の安定板を使うがいいさです。

add-apt-repository ppa:nginx/stable

パッケージを更新します。

apt update

インストールされるバージョンを確認してみます。

apt show nginx

nginxをインストールします。

apt install nginx-extras

nginx-extrasはいろんな拡張機能がこみこみです。nginx < nginx-full < nginx-extras の順に拡張機能が多くなるようです。nginxは十分軽いのでnginx-extrasでも良いのではないかと思います。

ブラウザで確認する。

インストールされたら既にnginxが起動した状態なのでデフォルトのサイトが見れます。

Vagrantfileを編集して、ホストPCから仮想環境にアクセスできるようにします。

以下のコメントを外すと http://localhost:8080 でアクセスできるようになります。

config.vm.network "forwarded_port", guest: 80, host: 8080

以下のコメントを外すと http://192.168.33.10 でアクセスできるようになります。

config.vm.network "private_network", ip: "192.168.33.10"

自分的には下がオススメです。
書き換えたら、リロードすることを忘れずに。

vagrant reload

ブラウザに「Welcome to nginx on Debian!」という画面が表示されればOKです。

MySQLのインストール

MySQLは5.7が最新の開発版ですが、チキン野郎なので5.6を導入します。PPAだとうまく入らなかったので、公式サイト (http://dev.mysql.com/downloads/repo/apt/) からdebパッケージを取得してインストールしました。

wget http://dev.mysql.com/get/mysql-apt-config_0.3.2-1ubuntu14.04_all.deb
dpkg -i mysql-apt-config_0.3.2-1ubuntu14.04_all.deb
rm mysql-apt-config_0.3.2-1ubuntu14.04_all.deb
apt update
apt install mysql-server

dpkgコマンドの途中で目に悪い色の選択画面が出ますが、そのまま「Apply」を選びます。

パッケージインストール中にも目に悪い色でパスワードが聞かれますが、面倒なので空にします。testデータベースは作っても作らなくてもOKです。

インストールが終わったら、mysqlコマンドでちゃんと入っているか確認してみます。Ctrl+Dで抜けます。

PHP-FPMのインストール

FPM (FastCGI Process Manager) とはPHPのFastCGI実装のひとつで、主に高負荷のサイトで有用な追加機能を用意しています。公式サイトのコピペです。

nginxではApacheのmod_phpのようなモジュールは無いので、FastCGIで動かします。

add-apt-repository ppa:ondrej/php5-5.6
apt update
apt install php5-cli php5-fpm php5-mysql php5-sqlite php5-curl php5-gd php5-mcrypt 

PHPの拡張は適当に必要そうなものを入れました。

nginx.confの設定

もともとPHP-FPM用の設定があるのでそれを使います。

/etc/nginx/sites-available/default を開き、以下のようにコメントを外します。

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

nginxを再起動します。

service nginx reload

確認

/var/www/html/ に test.php というファイルを以下の内容で作成します。

<?php phpinfo();

ブラウザで http://192.168.33.10/test.php を開いてみて、見慣れたphpinfoの画面が出ればOKです。

お疲れ様でした。