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

Laravel環境構築 [Itamemo]

More than 3 years have passed since last update.

はじめに

この記事の目的

  • Laravelの環境構築
  • 構成管理ツールItamaeが使えるようになる

Itamemo

Itamemoとは主にサーバで環境構築をした際に、軽量なサーバ構成管理ツールItamaeで何となくコード化した際にできる副産物のことです。

前提

  • ロールバック(vagrant sandbox rollback)ができるので、Vagrant+Virtual Boxで、mvbcoding/awslinuxを使っています。
  • EC2 (Amazon Linux)でも同じようにできると思います。
  • 本当は以下で紹介する手順でメモを取っていません。(作った後に、Qiitaに投稿を考えたので)

準備

メモを取る準備をします。

$ mkdir laravel-itamae-memo
$ cd laravel-itamae-memo/
$ bundle init
$ bundle vim Gemfile

環境構築

Gemfileを編集。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "itamae"

Itamaeをインストール。

$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
略

とりあえずNginxで動かそうと思ったので、以下を書く。

$ itamae g cookbook nginx
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

itamaeのCUIはThorでできているようなので、itamae helpとかでコマンドの説明が出てきます。
itamae gのgはgenerateのgです。

nginxをインストール、起動の記述した結果は以下となります。

$ cat cookbooks/nginx/default.rb
package 'nginx' do
  user 'root'
  action :install
end

service 'nginx' do
  user 'root'
  action [:enable, :start]
end

phpやphp-fpmも入れます。

$ itamae g cookbook php
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep
$ itamae g cookbook php-fpm
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

中身は以下

$ cat cookbooks/php/default.rb
package 'php71' do
  user 'root'
end

package 'php71-mbstring' do
  user 'root'
end
$ cat cookbooks/php-fpm/default.rb
package 'php71-fpm' do
  user 'root'
end

service 'php-fpm' do
  user 'root'
  action [:enable, :start]
end

LaravelはComposerで入れるらしいです。

$ itamae g cookbook composer
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

Composerの導入の仕方も初めて知りました。

$ cat cookbooks/composer/default.rb
execute "setup composer" do
  user "root"
  command "php -r \"copy('https://getcomposer.org/installer', 'composer-setup.php');\" && php composer-setup.php --install-dir=/usr/local/bin --filename=composer && export PATH=$HOME/.composer/vendor/bin:$PATH"
  not_if "/usr/local/bin/composer -V"
end

これらを読み込むレシピを書いて実行。

$ mkdir roles
$ vim roles/laravel.rb # 編集
$ cat roles/laravel.rb
include_recipe "../cookbooks/php/default.rb"
include_recipe "../cookbooks/composer/default.rb"
include_recipe "../cookbooks/nginx/default.rb"
$ itamae local roles/laravel.rb # 実行

laravelのインストール。(システムワイドにインストールしたいな..。)

$ itamae g cookbook laravel
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep
$ cat cookbooks/laravel/default.rb
execute "install laravel" do
  command "composer global require 'laravel/installer'"
  not_if "laravel -V"
end
$ laravel -V
Laravel Installer 1.4.1

動作確認

適当なアプリを作り、

$ cd
$ laravel new myapp
$ chmod -R 777 myapp/storage

nginxとphp-fpmを設定しつつ、
itamaeの方に持ってきます。

$ cd laravel-itamae-memo
itamae g cookbook nginx/myapp
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep
$ mkdir -p cookbooks/nginx/myapp/files/nginx/
$ cp /etc/nginx/nginx.conf cookbooks/nginx/myapp/files/nginx/
$ cat cookbooks/nginx/myapp/default.rb
remote_file "/etc/nginx/nginx.conf"
$ itamae g cookbook php-fpm/myapp
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep
$ mkdir -p cookbooks/php-fpm/myapp/files/etc/php-fpm.d
$ cp /etc/php-fpm.d/www.conf cookbooks/php-fpm/myapp/files/etc/php-fpm.d/
$ cat cookbooks/php-fpm/myapp/default.rb
remote_file "/etc/php-fpm.d/www.conf"

myappのレシピは分けます。

$ cat roles/myapp.rb
include_recipe "../cookbooks/nginx/myapp/default.rb"
include_recipe "../cookbooks/php-fpm/myapp/default.rb"
$ itamae local roles/myapp.rb # 実行
$ sudo service nginx restart
$ sudo service php-fpm restart

これで、アクセスすればLaravelのトップページが見れるはず。
今回のItamaeのコード。
https://github.com/gaku123/itamemo-laravel

gyasui
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