Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

動画配信用のサーバーを構築する業務があったのですが、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です。

お疲れ様でした。

naga3
最近はIT講師が多い似非プログラマです。 自サイトでいろんな言語の入門をやっています。
http://ponk.jp
scouty
「あらゆる事象を必然化し、 世の中のミスマッチをなくす」ことをミッションとし、AIヘッドハンティングサービスを開発・運営するスタートアップ
https://lapras.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした