macOS SierraでVagrantを使ってローカルの開発実験環境を作る (Nginx + PHP-FPM + MariaDB)

NO IMAGE

はじめに

少しずつLaravelのコードを書くに連れてリモートのサーバーへ直接ソースコードを編集するのは非常に手間がかかり時間がかかる。

そのためMacVagrantVirtualBoxをインストールしローカルの開発実験環境を構築してみる。

VagrantFileの作成

Vagrantについてはあまりよく知らないので時間があるとに勉強したいと思うがVagrantFileに記述されたとうりにVagrantVirtualBoxの操作を行ってくれるものだと僕は思っている。

Vagrant.configure("2") do |config|
  config.vm.box = "debian/stretch64"
  config.vm.box_check_update = false

  # config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "private_network", ip: "192.168.10.10"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.memory = "4096"
  end

  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL

end

そして、ターミナルにてvagrant upをすると仮想マシンが起動し始める。初回は仮想マシンを作成するので多少時間がかかるかもしれいない。

仮想マシンに入りパッケージを最新にアップデート

仮想マシンに接続しパッケージを最新のものへアップデートする。

vagrant ssh

これで仮想マシンに接続することができる。

接続後、パッケージを最新のものへアップデートする。

vagrant@stretch:~$ sudo apt-get update
vagrant@stretch:~$ sudo apt-get upgrade

Nginxのインストール

vagrant@stretch:~$ sudo apt-get install nginx

MariaDBのインストール

vagrant@stretch:~$ sudo apt-get install mariadb-server

最新のPHPをインストール

いろんなバージョンのPHPを使えた方が何かと利口が効くのでコンパイルしてインストールする。

(現時点での最新バージョンは V7.1.7)

ソースコードの入手

vagrant@stretch:~$ wget http://jp2.php.net/get/php-7.1.7.tar.gz/from/this/mirror
vagrant@stretch:~$ mv mirror php-7.1.7.tar

解凍

vagrant@stretch:~$ tar xvf php-7.1.7.tar

インストール先の作成

vagrant@stretch:/home$ sudo mkdir /home/system/
vagrant@stretch:/home/system$ sudo mkdir /home/system/env

コンパイルに必要なパッケージのインストール

vagrant@stretch:~/php-7.1.7$ sudo apt-get install build-essential gcc make
vagrant@stretch:~/php-7.1.7$ sudo apt-get install libxml2
vagrant@stretch:~/php-7.1.7$ sudo apt-get install curl libcurl4-gnutls-dev
vagrant@stretch:~/php-7.1.7$ sudo apt-get install pkg-config libssl-dev
vagrant@stretch:~/php-7.1.7$ sudo apt-get install libpng-dev libjpeg-dev
vagrant@stretch:~/php-7.1.7$ sudo apt-get install libmcrypt-dev
vagrant@stretch:~/php-7.1.7$ sudo apt-get install libreadline-dev

configure

vagrant@stretch:~/php-7.1.7$ ./configure --prefix=/home/system/env/php-7.1.7 --with-pear=/home/system/env/php-7.1.7/lib/pear --includedir=/usr/include/x86_64-linux-gnu --with-pdo-mysql --with-zlib --with-mcrypt --with-openssl --enable-fpm --with-gd --with-xmlrpc --enable-zip --with-readline

コンパイル

vagrant@stretch:~/php-7.1.7$ make -j2

テスト

vagrant@stretch:~/php-7.1.7$ make test

インストール

vagrant@stretch:~/php-7.1.7$ sudo make install

起動ファイルの用意

vagrant@stretch:~/php-7.1.7$ sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm-7.1.7

設定ファイルの作成

vagrant@stretch:~/php-7.1.7$ cd /home/system/env/php-7.1.7/etc/
vagrant@stretch:/home/system/env/php-7.1.7/etc$ sudo vim php-fpm.conf
pid = /var/run/php-fpm.pid
error_log = /home/system/logs/php-fpm-7.1.7.log
vagrant@stretch:/home/system/env/php-7.1.7/etc/php-fpm.d$ sudo cp www.conf.default www.conf
vagrant@stretch:/home/system/env/php-7.1.7/etc$ sudo vim www.conf
user = system
group = system

ユーザーの作成

vagrant@stretch:~$ sudo groupadd -r system
vagrant@stretch:~$ useradd -g system -s /sbin/nologin -r system

ログ格納ディレクトリの作成

vagrant@stretch:/home$ mkdir system/logs

起動

vagrant@stretch:/home/system/env/php-7.1.7/etc/php-fpm.d$ sudo /etc/init.d/php-fpm-7.1.7 start

Nginxの設定

vagrant@stretch:/home/system$ sudo vim /etc/nginx/sites-enabled/default

以下のように編集

vagrant@stretch:/home/system$ sudo vim /etc/nginx/sites-enabled/default
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /home/system;

    index index.html index.htm index.nginx-debian.html;
    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        root        /home/system;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME /home/system$fastcgi_script_name;
        include     fastcgi_params;
    }
}

細かいところは用途によって変える

nginxの再起動

vagrant@stretch:/home/system$ sudo service nginx restart

Otherカテゴリの最新記事